README.md•4.97 kB
<p align="center">
<img src="https://imgur.com/DgWxkmv.png" width="200" height="200">
</p>
# MCP-Hub-MCP Server
A hub server that connects to and manages other MCP (Model Context Protocol) servers.
## Overview
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.
## Key Features
- Automatic connection to other MCP servers via configuration file
- List available tools on connected servers
- Call tools on connected servers and return results
## Configuration
Add this to your `mcp.json`:
#### Using npx
```json
{
"mcpServers": {
"mcp-hub": {
"command": "npx",
"args": [
"-y",
"mcp-hub-mcp",
"--config-path",
"/path/to/your/mcp-hub-config.json"
]
}
}
}
```
#### Using Node (e.g., for local development or direct execution)
If `npx` isn't picking up your local changes or you prefer to run the built server directly, you can configure it like this:
```json
{
"mcpServers": {
"mcp-hub": {
"command": "node",
"args": [
"/path/to/your/mcp-hub-mcp/dist/index.js",
"--config-path",
"/path/to/your/mcp-hub-config.json"
]
}
}
}
```
**Note:** Ensure you have built the project (e.g., `npm run build` or `pnpm build`) so that `dist/index.js` exists.
### System Prompt (or Cursor Rules)
```
Before processing a user's request, you must use the "list_all_tools" command to identify which tools are available.
```
This ensures that the AI assistant will always check available tools before attempting to use them.
## Installation and Running
### Requirements
- Node.js 18.0.0 or higher
- npm, yarn, or pnpm
### Installation
```bash
# Clone repository
git clone <repository-url>
cd mcp-hub-mcp
# Install dependencies
npm install
# or
yarn install
# or
pnpm install
```
### Build
```bash
npm run build
# or
yarn build
# or
pnpm build
```
### Run
```bash
npm start
# or
yarn start
# or
pnpm start
```
### Development Mode
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
```
## Configuration File
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:
1. Environment variable: Set the `MCP_CONFIG_PATH` environment variable to the configuration file path
2. Command line argument: Use the `--config-path` option to specify the configuration file path
3. Default path: Use `mcp-config.json` file in the current directory
Configuration file format:
```json
{
"mcpServers": {
"serverName1": {
"command": "command",
"args": ["arg1", "arg2", ...],
"env": { "ENV_VAR1": "value1", ... }
},
"serverName2": {
"command": "anotherCommand",
"args": ["arg1", "arg2", ...]
}
}
}
```
Example:
```json
{
"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"]
}
}
}
```
## Usage
The MCP-Hub-MCP server provides the following tools:
### 1. `list-all-tools`
Returns a list of tools from all connected servers.
```json
{
"name": "list-all-tools",
"arguments": {}
}
```
### 2. `call-tool`
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
```json
{
"name": "call-tool",
"arguments": {
"serverName": "filesystem",
"toolName": "readFile",
"toolArgs": {
"path": "/Users/username/Desktop/example.txt"
}
}
}
```
## Commit Message Convention
This project follows [Conventional Commits](https://www.conventionalcommits.org/) 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.
## Tech Stack
- Node.js
- TypeScript
- @modelcontextprotocol/sdk (version: ^1.9.0)
- zod (version: ^3.22.4)
## License
MIT