MCP Hub MCP Server
References Imgur for image hosting in the documentation
Connects to and manages multiple Node.js-based MCP servers, allowing access to tools across different servers from a single hub
Enables connecting to other MCP servers through npm packages using npx commands
Supports installation and execution using pnpm package manager
Built with TypeScript to provide type-safe interaction with other MCP servers and their tools
Supports installation and execution using Yarn package manager
Integrates Zod for schema validation of configuration files and tool arguments
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Hub MCP Serverlist all available tools from my connected servers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 connects to and manages multiple MCP (Model Context Protocol) servers through a single interface. It helps prevent excessive context usage and pollution from infrequently used MCPs (e.g., Atlassian MCP, Playwright MCP) by allowing you to connect them only when needed. This reduces AI mistakes and improves performance by keeping the active tool set focused and manageable.
Related MCP server: MCP-Hub-MCP Server
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
{
"mcpServers": {
"other-tools": {
"command": "npx",
"args": [
"-y",
"mcp-hub-mcp",
"--config-path",
"/Users/username/mcp.json"
]
}
}
}Installation and Running
Requirements
Node.js 18.0.0 or higher
npm, yarn, or pnpm
Installation
# Clone repository
git clone <repository-url>
cd mcp-hub-mcp
# Install dependencies
npm install
# or
yarn install
# or
pnpm installBuild
npm run build
# or
yarn build
# or
pnpm buildRun
npm start
# or
yarn start
# or
pnpm startDevelopment Mode
npm run dev
# or
yarn dev
# or
pnpm devConfiguration 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:
Environment variable: Set the
MCP_CONFIG_PATHenvironment variable to the configuration file pathCommand line argument: Use the
--config-pathoption to specify the configuration file pathDefault path: Use
mcp-config.jsonfile 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"]
}
}
}Usage
The MCP-Hub-MCP server provides the following tools:
1. list-all-tools
Returns a list of tools from all connected servers.
{
"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 fromtoolName: Name of the tool to calltoolArgs: Arguments to pass to the tool
{
"name": "call-tool",
"arguments": {
"serverName": "filesystem",
"toolName": "readFile",
"toolArgs": {
"path": "/Users/username/Desktop/example.txt"
}
}
}3. find-tools
Find tools matching a regex pattern across all connected servers (grep-like functionality).
pattern: Regex pattern to search for in tool names and descriptionssearchIn: Where to search: "name", "description", or "both" (default: "both")caseSensitive: Whether the search should be case-sensitive (default: false)
{
"name": "find-tools",
"arguments": {
"pattern": "file",
"searchIn": "both",
"caseSensitive": false
}
}Example patterns:
"file"- Find all tools containing "file""^read"- Find all tools starting with "read""(read|write).*file"- Find tools for reading or writing files"config$"- Find tools ending with "config"
Example output:
{
"filesystem": [
{
"name": "readFile",
"description": "Read the contents of a file",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the file to read"
}
},
"required": ["path"]
}
},
{
"name": "writeFile",
"description": "Write content to a file",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the file to write"
},
"content": {
"type": "string",
"description": "Content to write to the file"
}
},
"required": ["path", "content"]
}
}
]
}Commit Message Convention
This project follows Conventional Commits for automatic versioning and CHANGELOG generation.
Format: <type>(<scope>): <description>
Examples:
feat: add new hub connection featurefix: resolve issue with server timeoutdocs: update API documentationchore: update dependencies
Types:
feat: New feature (MINOR version bump)fix: Bug fix (PATCH version bump)docs: Documentation only changesstyle: Changes that do not affect the meaning of the coderefactor: Code change that neither fixes a bug nor adds a featureperf: Code change that improves performancetest: Adding missing tests or correcting existing testschore: Changes to the build process or auxiliary tools
Breaking Changes:
Add BREAKING CHANGE: in the commit footer to trigger a MAJOR version bump.
Other Links
License
MIT
Available Tools
7 toolscall-toolCall ToolA
Call a specific tool from a specific server. TIP: Use find-tools first to discover the tool and get the correct serverName and toolName
| Name | Required | Description | Default |
|---|---|---|---|
| toolArgs | Yes | Arguments to pass to the tool | |
| toolName | Yes | Name of the tool to call | |
| serverName | Yes | Name of the MCP server to call tool from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only states 'call a tool' without mentioning that the call executes the tool, potential side effects, authentication needs, or rate limits. This is minimal for a meta-tool that could trigger arbitrary actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a tip, which is very concise and front-loaded. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description fails to explain return values, error handling, or execution behavior. For a tool that calls other tools, the description is incomplete for an agent to understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes the parameters. The description adds a helpful tip about using find-tools for correct values, but does not elaborate on the format or semantics of toolArgs or how to construct the object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool calls a specific tool from a specific server, using a specific verb ('Call') and resource. It distinguishes from sibling tools like find-tools which are for discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to use find-tools first to discover the correct serverName and toolName, providing clear guidance on when to use this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-toolsFind ToolsA
Use this tool to find best tools by searching with keywords or regex patterns. If you don't have a specific tool for a task, this is the best way to discover what tools are available.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Regex pattern to search for in tool names and descriptions | |
| searchIn | No | Where to search: in tool names, descriptions, or both | both |
| caseSensitive | No | Whether the search should be case-sensitive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It only says 'find best tools' without explaining what 'best' means, how results are returned, or any limitations. This is insufficient for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose and a usage hint. Every word earns its place; no waste. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description should at least mention what the tool returns (e.g., a list of tool names). It omits this, leaving the agent guessing. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description adds no additional meaning beyond the schema, so baseline 3 applies. It mentions 'keywords or regex patterns' which maps to the pattern parameter, but doesn't enhance understanding of enum options or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to find tools by searching with keywords or regex patterns. It distinguishes from siblings like list-all-tools (which lists all) and get-tool (which retrieves a specific tool) by framing it as a discovery tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using the tool when you don't have a specific tool for a task, providing clear context. However, it does not explicitly exclude cases or mention alternatives like list-all-tools for a full inventory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find-tools-in-serverFind Tools in ServerB
Find tools matching a pattern in a specific MCP server (returns name and description only)
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Regex pattern to search for in tool names and descriptions | |
| searchIn | No | Where to search: in tool names, descriptions, or both | both |
| serverName | Yes | Name of the MCP server to search tools in | |
| caseSensitive | No | Whether the search should be case-sensitive |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states the limited return (name and description), but does not mention regex syntax, case sensitivity handling (detailed in schema), error behavior, or performance implications. Lacks critical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose efficiently. However, it is somewhat sparse and could include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, 2 required, and no output schema, the description is incomplete. It does not specify return value structure (e.g., array of objects), error conditions, or behavior when no match found. The absence of output schema makes this a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema's property descriptions already provide. It does not clarify the regex pattern format or default behavior beyond the schema's default values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'find' and resource 'tools in a specific MCP server', and explicitly notes the limited return ('name and description only'). This distinguishes it from siblings like 'get-tool' (single tool details) or 'list-all-tools-in-server' (no pattern matching).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for pattern-based searching within a server, but provides no guidance on when to choose this over alternatives like 'find-tools' (possibly across servers) or 'list-all-tools-in-server' (no pattern). No exclusion or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-toolGet Tool SchemaA
Get complete schema for a specific tool from a specific server, including inputSchema. TIP: Use find-tools first to discover the tool and get the correct serverName and toolName
| Name | Required | Description | Default |
|---|---|---|---|
| toolName | Yes | Exact name of the tool to retrieve | |
| serverName | Yes | Name of the MCP server containing the tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states 'Get complete schema', implying a read operation without side effects, but does not disclose auth needs, rate limits, or return format. Adequate for a simple retrieval but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Purpose is front-loaded, and the TIP is placed at the end for easy reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though no output schema exists, the description explains the return ('complete schema... including inputSchema'), which is sufficient for an agent. Sibling tools provide context. Minor improvement could specify the exact return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions ('Exact name of the tool', 'Name of the MCP server'). The description adds no extra parameter meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get complete schema for a specific tool from a specific server, including inputSchema', using specific verb+resource. It distinguishes from siblings like call-tool (invocation) and find-tools (discovery).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit TIP provides guidance: 'Use find-tools first to discover the tool and get the correct serverName and toolName', telling the agent when to use this tool and suggesting an alternative prerequisite tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-all-toolsList All ToolsA
List ALL available tools from all connected servers. NOTE: For better performance, use find-tools with keywords first. Only use this when you need to see everything or if find-tools didn't find what you need
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description is straightforward but doesn't disclose read-only nature or any rate limits. Simple operation, so transparency is adequate but not enhanced beyond necessity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states action, second provides performance advice. Front-loaded and concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and low complexity, the description is complete. It covers what the tool does and how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params). Baseline 4 applies. Description is sufficient as no parameter details are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists ALL tools from ALL connected servers. It distinguishes from sibling tools like find-tools (keyword-based) and list-all-tools-in-server (server-specific), using specific verb+resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use find-tools first for performance, only use list-all-tools when necessary or when find-tools fails. This tells when to use and when to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-all-tools-in-serverList Tools in ServerA
List ALL tools from a specific MCP server (returns name and description only)
| Name | Required | Description | Default |
|---|---|---|---|
| serverName | Yes | Name of the MCP server to list tools from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool returns only name and description, which is helpful beyond the input schema. However, it does not explicitly state that the operation is read-only or non-destructive, nor does it mention any prerequisites or potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence of 13 words. It front-loads the main action and clarifies the return content in parentheses. Every word carries weight, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 param, no output schema), the description is fairly complete: it states the action, scope, and return format. It lacks mention of error handling or performance, but for a simple listing tool, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'serverName' with a clear description. The tool description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and resource 'tools from a specific MCP server', clearly distinguishing from siblings like 'list-all-tools' (likely cross-server) and 'find-tools-in-server' (likely filtered). The scope is precise: ALL tools, and it notes the return includes only name and description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need a complete listing from one server, but it does not explicitly state when not to use it or suggest alternatives like 'find-tools-in-server' for filtering. The context from sibling names helps, but the description itself lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-serversList ServersB
List all connected MCP servers
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the listing action without revealing whether results are cached, live, or any other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It could benefit from additional detail but remains appropriately concise for a simple listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no parameters, the description is adequate but does not explain the return format or any filtering. For a list tool, this is minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and the schema coverage is 100%. Baseline 4 applies because the description adds no parameter details but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all connected MCP servers' uses a specific verb ('list') and resource ('connected MCP servers'), clearly distinguishing it from sibling tools like list-all-tools which list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like list-all-tools or call-tool. The description only states what it does, not when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.0.3- Added
call-tool - Added
find-tools - Added
find-tools-in-server - Added
get-tool - Added
list-all-tools - Added
list-all-tools-in-server - Added
list-servers
7 tool updates
v1.1.1- Removed
call-tool - Removed
find-tools - Removed
find-tools-in-server - Removed
get-tool - Removed
list-all-tools - Removed
list-all-tools-in-server - Removed
list-servers
7 tool updates
v1.0.0- First observed
call-tool - First observed
find-tools - First observed
find-tools-in-server - First observed
get-tool - First observed
list-all-tools - First observed
list-all-tools-in-server - First observed
list-servers
TDQS
Scored across 7 tools
Most tools are clearly distinct by scope (global vs per-server, discovery vs schema vs invocation). Minor overlap exists between list-all-tools and find-tools, but the descriptions explicitly guide usage.
All tool names follow a consistent kebab-case verb-noun pattern, with clear modifiers like -in-server to indicate scope. The naming is uniform and predictable.
Seven tools is well-scoped for a meta-server that manages other MCP servers. Each tool covers a distinct operation without redundancy or bloat.
The surface covers the full workflow: discover servers, list tools, search tools, inspect schemas, and call tools. No obvious dead ends or missing critical operations for the stated purpose.
Maintenance
Related MCP Connectors
Publish and discover MCP servers via the official MCP Registry. Powered by HAPI MCP server.
Trust, freshness, policy, and discovery layer for public MCP servers.
The official MCP Server for the Mux API
The MCP server that finds MCP servers. Aggregates Official Registry, Glama, and Smithery.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA central hub that aggregates multiple MCP resource servers into a single unified interface, enabling users to access tools and capabilities from multiple backend servers through one connection point.60 npm203MIT
- AlicenseBqualityDmaintenanceA hub server that connects to and manages other MCP servers, allowing users to bypass Cursor's 40-tool limit and reduce AI mistakes by hiding infrequently used tools.222 npm3MIT
- FlicenseNot gradedqualityNot gradedmaintenanceMCP Hub aggregates and proxies multiple Model Context Protocol servers into a unified Streamable HTTP interface. It allows users to combine diverse stdio, SSE, and HTTP-based servers while providing tool namespacing, health monitoring, and secure authentication.700 npm-
- AlicenseNot gradedqualityCmaintenanceMCP hub server that aggregates tools from multiple domain packages into a single globally-available interface.1MIT