Skip to main content
Glama

Install MCP Server

Install in VS Code

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 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

{
  "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 install

Build

npm run build
# or
yarn build
# or
pnpm build

Run

npm start
# or
yarn start
# or
pnpm start

Development Mode

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:

{
  "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 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"
    }
  }
}

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 descriptions

  • searchIn: 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 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.

License

MIT

Available Tools

7 tools
call-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

ParametersJSON Schema
NameRequiredDescriptionDefault
toolArgsYesArguments to pass to the tool
toolNameYesName of the tool to call
serverNameYesName of the MCP server to call tool from

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesRegex pattern to search for in tool names and descriptions
searchInNoWhere to search: in tool names, descriptions, or bothboth
caseSensitiveNoWhether the search should be case-sensitive

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesRegex pattern to search for in tool names and descriptions
searchInNoWhere to search: in tool names, descriptions, or bothboth
serverNameYesName of the MCP server to search tools in
caseSensitiveNoWhether the search should be case-sensitive

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNameYesExact name of the tool to retrieve
serverNameYesName of the MCP server containing the tool

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNameYesName of the MCP server to list tools from

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

TDQS

A3.7/5.0
Disambiguation3/5

The tools have overlapping purposes that could cause confusion, particularly between the 'find-tools', 'find-tools-in-server', 'list-all-tools', and 'list-all-tools-in-server' tools, which all serve similar discovery functions with subtle distinctions. However, the descriptions help clarify their specific use cases, such as 'find-tools' for keyword searches versus 'list-all-tools' for comprehensive listings, preventing complete misselection.

Naming Consistency4/5

The tool names follow a consistent verb_noun pattern with hyphens (e.g., 'call-tool', 'find-tools'), making them predictable and readable. There is a minor deviation with 'list-servers' using a plural noun where others use singular or plural inconsistently, but overall the naming convention is clear and uniform across the set.

Tool Count5/5

With 7 tools, the count is well-scoped for the server's purpose of managing and discovering MCP tools and servers. Each tool serves a distinct role in the workflow, from discovery to execution, and none feel redundant or unnecessary, fitting the typical range of 3-15 tools for such a utility server.

Completeness5/5

The tool set provides complete coverage for the domain of MCP tool and server management, including discovery (e.g., 'find-tools', 'list-servers'), retrieval (e.g., 'get-tool'), and execution (e.g., 'call-tool'). There are no obvious gaps; agents can navigate from listing servers to finding and calling tools without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    A 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.
    41
    203
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    MCP 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.
    1,038

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/warpdev/mcp-hub-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server