A hub server that connects to and manages other MCP (Model Context Protocol) servers.
This project builds an MCP hub server that can connect to other MCP servers, list their tools, and execute them. It is especially useful for bypassing Cursor’s 40-tool MCP limit. Even outside of Cursor, it helps reduce AI mistakes by hiding infrequently used tools.
- Automatic connection to other MCP servers via configuration file
- List available tools on connected servers
- Call tools on connected servers and return results
Add this to your mcp.json
:
{
"mcpServers": {
"other-tools": {
"command": "npx",
"args": [
"-y",
"mcp-hub-mcp",
"--config-path",
"/Users/username/mcp.json"
]
}
}
}
- Node.js 18.0.0 or higher
- npm, yarn, or pnpm
# Clone repository
git clone <repository-url>
cd mcp-hub-mcp
# Install dependencies
npm install
# or
yarn install
# or
pnpm install
npm run build
# or
yarn build
# or
pnpm build
npm start
# or
yarn start
# or
pnpm start
npm run dev
# or
yarn dev
# or
pnpm dev
The MCP-Hub-MCP server uses a Claude Desktop format configuration file to automatically connect to other MCP servers. You can specify the configuration file in the following ways:
- Environment variable: Set the
MCP_CONFIG_PATH
environment variable to the configuration file path - Command line argument: Use the
--config-path
option to specify the configuration file path - Default path: Use
mcp-config.json
file in the current directory
Configuration file format:
{
"mcpServers": {
"serverName1": {
"command": "command",
"args": ["arg1", "arg2", ...],
"env": { "ENV_VAR1": "value1", ... }
},
"serverName2": {
"command": "anotherCommand",
"args": ["arg1", "arg2", ...]
}
}
}
Example:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/Users/username/Downloads"
]
},
"other-server": {
"command": "node",
"args": ["path/to/other-mcp-server.js"]
}
}
}
The MCP-Hub-MCP server provides the following tools:
Returns a list of tools from all connected servers.
{
"name": "list-all-tools",
"arguments": {}
}
Calls a tool on a specific server.
-
serverName
: Name of the MCP server to call the tool from -
toolName
: Name of the tool to call -
toolArgs
: Arguments to pass to the tool
{
"name": "call-tool",
"arguments": {
"serverName": "filesystem",
"toolName": "readFile",
"toolArgs": {
"path": "/Users/username/Desktop/example.txt"
}
}
}
This project follows Conventional Commits for automatic versioning and CHANGELOG generation.
Format: <type>(<scope>): <description>
Examples:
feat: add new hub connection feature
fix: resolve issue with server timeout
docs: update API documentation
chore: update dependencies
Types:
-
feat
: New feature (MINOR version bump) -
fix
: Bug fix (PATCH version bump) -
docs
: Documentation only changes -
style
: Changes that do not affect the meaning of the code -
refactor
: Code change that neither fixes a bug nor adds a feature -
perf
: Code change that improves performance -
test
: Adding missing tests or correcting existing tests -
chore
: Changes to the build process or auxiliary tools
Breaking Changes:
Add BREAKING CHANGE:
in the commit footer to trigger a MAJOR version bump.
- Node.js
- TypeScript
- @modelcontextprotocol/sdk (version: ^1.9.0)
- zod (version: ^3.22.4)
MIT