MCP Manager
Provides tools for searching arXiv papers, retrieving abstracts, and downloading papers from the arXiv repository.
Click on "Install 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 Managersearch arxiv for papers on mixture of experts"
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 Manager
A development scaffold for managing multiple MCP servers behind one standard MCP gateway. The default profile enables open-source Arxiv and calculator MCP servers.
This repository intentionally separates the components that MCP-Atlas and Toolathlon combine in different ways:
MCP client
|
| Streamable HTTP MCP
v
Gateway (tool discovery, namespacing, routing)
|
v
Runtime supervisor (startup, timeout, retry, cleanup)
|
| stdio MCP
+--> Arxiv MCP server --> arXiv and related upstream APIs
|
+--> Calculator MCP server
|
+--> Filesystem MCP server --> persistent data/ directory
|
+--> Local Weather MCP server --> WeatherAPI
|
| Streamable HTTP MCP + request-scoped API key
+--> GitHub MCP server --> GitHub APIs
|
+--> Local Twelve Data MCP server --> Twelve Data APIsThis is a demo for further development. Dependencies and the Arxiv server are declared but are not vendored into this repository.
Components
Component | Location | Responsibility |
Server catalog |
| Declarative, one-file-per-server definitions. |
Profiles |
| Select servers and allow/deny tools for a workload. |
Configuration |
| Typed manifest models and YAML loading. |
Secrets |
| Resolve explicit secret references without writing resolved config. |
Runtime |
| Launch and supervise backend MCP connections. |
Gateway |
| Expose namespaced tools and route calls to backends. |
See docs/ARCHITECTURE.md for the design boundaries.
Related MCP server: MCP Gateway
Arxiv backend
The catalog pins
blazickjp/arxiv-mcp-server
at 0.6.2 and launches it in an isolated uvx environment:
uvx --from arxiv-mcp-server==0.6.2 arxiv-mcp-serverThe upstream server uses stdio by default and does not require an API key. Gateway-visible names are stable and namespaced, for example:
arxiv__search_papers
arxiv__get_abstract
arxiv__download_paperThe double-underscore name is stored in a routing table; the gateway never parses it to determine the backend.
Calculator backend
The catalog pins
githejie/mcp-server-calculator
at 0.2.0 and launches it with uvx plus a compatible mcp==1.28.1 pin. It
exposes one gateway tool:
calculator__calculateThe tool accepts an expression string, for example 2 + 3 * 4.
Weather backend
The catalog integrates
geobio/weather-mcp-server at
commit 70b6a7c8183c8a3acc175f786f4b7be9c2ba66e4. The locally maintained service
under services/weather-mcp-server/ runs as a persistent local stdio backend.
The gateway starts it automatically, sends each client's key through the MCP
tools/call _meta.apiKey field, and stops it when the gateway exits. One
running child process can safely handle clients with different WeatherAPI keys.
Start only the gateway. Weather does not need an API key at startup and does not listen on a TCP port:
uv run mcp-manager --profile profiles/weather.yaml serve \
--host 127.0.0.1 --port 8080The client supplies its own key in MCP request metadata:
{"credentials":{"weather":{"apiKey":"<the client's WeatherAPI key>"}}}The exposed tools are namespaced, including:
weather__weather_current
weather__weather_forecast
weather__weather_history
weather__weather_alerts
weather__weather_airquality
weather__weather_astronomy
weather__weather_search
weather__weather_timezone
weather__weather_sportsThe gateway maps that credential to _meta.apiKey only on Weather MCP tool
calls. The local service keeps it in a request-local variable and does not log
it or store it in process-wide state.
With the Weather gateway running, test it using either client:
export WEATHER_API_KEY='<your-weatherapi-key>'
bash examples/test_weather_curl.sh
uv run python examples/test_weather_python.pyList the Weather tools and their parameter schemas without calling WeatherAPI:
uv run python examples/list_mcp_tools.py \
--credential-env weather=WEATHER_API_KEY \
--show-schemaGitHub backend
The catalog includes GitHub's hosted official MCP server at
https://api.githubcopilot.com/mcp/. It is opt-in because it requires a GitHub
personal access token and exposes repository data. The supplied profile enables
GitHub's server-side read-only mode.
The gateway itself starts once, without a GitHub token, and remains running:
uv run mcp-manager --profile profiles/github.yaml serve \
--host 127.0.0.1 --port 8080Every client supplies its own credential in each relevant MCP request's
params._meta object:
{"credentials":{"github":{"apiKey":"<the client's current token>"}}}The gateway does not read a GitHub token from its environment. If client A connects with token A and client B later connects with token B, the same running gateway creates or reuses separate authenticated upstream GitHub MCP sessions for them. The client-facing gateway transport is stateless, so a token change takes effect on the next request without a gateway restart. How a client obtains its token (user input, its own secret store, an identity service, or another mechanism) is outside the gateway protocol.
The profile permits every tool made available by GitHub's server-side read-only
mode; each token still determines which repositories its owner can see.
Discovered tools use the github__ namespace. To intentionally enable GitHub
write tools, change X-MCP-Readonly in
catalog/servers/github.yaml to "false"; token permissions and profile
argument policies still apply.
With the GitHub profile running, test the read-only github__get_me tool using
either client:
export GITHUB_TOKEN='<your-github-token>'
bash examples/test_github_curl.sh
uv run python examples/test_github_python.pyPoint either example at another Gateway deployment with MCP_URL for curl or
--url for Python.
Twelve Data backend
The catalog uses the tools from the official
mcp-server-twelve-data package at
version 0.2.5. A small locally maintained adapter under
services/twelve-data-mcp-server/ runs it as a persistent stdio backend. The
adapter removes the startup -k requirement and reads each client's API key
from the MCP tools/call _meta.apiKey field instead.
Start only the Gateway. The Twelve Data MCP Server starts automatically, does not listen on a TCP port, and does not receive an API key in its command line or environment:
uv run mcp-manager --profile profiles/twelvedata.yaml serve \
--host 127.0.0.1 --port 8080Each client sends its own raw Twelve Data API key in MCP request metadata:
{"credentials":{"twelvedata":{"apiKey":"<the client's Twelve Data API key>"}}}The Gateway maps the value to _meta.apiKey only for the selected Twelve Data
tool call. The long-running local Server reads it into a request-local variable
and forwards it to api.twelvedata.com. Different clients and different keys
can safely share the same Server process.
Discover the tools and their parameters using either example:
export TWELVE_DATA_API_KEY='<your-twelve-data-api-key>'
bash examples/test_twelvedata_curl.sh
uv run python examples/test_twelvedata_python.pyThe adapter keeps the API key out of tool schemas and sanitizes upstream HTTP errors so credential-bearing URLs are not exposed to clients or logs.
Run Weather and Twelve Data together with one Gateway:
uv run mcp-manager --profile profiles/weather-twelvedata.yaml serve \
--host 127.0.0.1 --port 8080Then use both request-scoped credentials from one Python MCP session:
export WEATHER_API_KEY='<your-weatherapi-key>'
export TWELVE_DATA_API_KEY='<your-twelve-data-api-key>'
bash examples/test_weather_twelvedata_curl.sh
uv run python examples/test_weather_twelvedata_python.pyBoth examples send both entries for tools/list, then send only weather for
the Weather call and only twelvedata for the Twelve Data call.
Filesystem backend
The filesystem profile starts one persistent local
@modelcontextprotocol/server-filesystem@2026.7.10 stdio process. Its only
allowed directory is this repository's data/ directory. All Gateway clients
using this profile share the same process and files; the Filesystem server
rejects paths outside that directory.
Install Node.js 20 or newer for the current package, then start the Gateway:
proxy_on # only when npm needs the configured network proxy
uv run mcp-manager --profile profiles/filesystem.yaml serve \
--host 127.0.0.1 --port 8080Test independent write and read requests using either client:
bash examples/test_filesystem_curl.sh
uv run python examples/test_filesystem_python.pyClient tool paths are relative to the allowed root. For example,
filesystem-python-example.txt is stored on disk as
data/filesystem-python-example.txt; clients should not prefix it with
data/ again. The profile intentionally exposes both read and write tools and
serializes calls with maxConcurrency: 1.
Server-scoped request credentials
Server manifests declare how a credential is injected. Remote HTTP servers can
use Authorization: Bearer <token>; local stdio servers can use MCP request
metadata such as _meta.apiKey. Profiles bind those server-specific slots to
fixed tool and argument policies. Clients group credentials by catalog server
name in params._meta:
{
"_meta": {
"credentials": {
"weather": {"apiKey": "<weather-key>"},
"twelvedata": {"apiKey": "<twelve-data-key>"}
}
}
}The gateway selects only the entry matching the target tool's server and maps
it to that backend's configured HTTP header or MCP request metadata. A
tools/list request may carry several server entries, while each tools/call
normally needs only one. Raw tokens remain in process memory. Authenticated
remote MCP sessions are pooled by
salted token fingerprint and closed after their configured idle timeout; local
stdio servers receive the current key on each tool call.
Intended development commands
After installing Python 3.11+ and uv:
uv sync --extra dev
uv run mcp-manager list-servers
uv run mcp-manager doctor
uv run mcp-manager serve --host 127.0.0.1 --port 8080For a credentialed multi-server profile, bind each server to an environment variable explicitly:
uv run mcp-manager --profile profiles/weather-twelvedata.yaml doctor \
--credential-env weather=WEATHER_API_KEY \
--credential-env twelvedata=TWELVE_DATA_API_KEYAn MCP-aware client connects to:
http://127.0.0.1:8080/mcpThe doctor command starts the selected backend, performs MCP initialization,
and lists the tools that the gateway would expose.
Client tests
The gateway uses stateless Streamable HTTP with JSON responses. A JSON-RPC
request can therefore call a tool directly without first obtaining an MCP
session ID. Requests that expect a response must include an id; a JSON-RPC
message without id is a notification and receives no tool result.
With the gateway running on port 8080, test a one-request curl tool call:
bash examples/test_mcp_curl.shOverride the endpoint when needed:
MCP_URL=https://example.test/mcp bash examples/test_mcp_curl.shTest the official Python MCP client, including initialization, discovery, and a tool call:
uv run python examples/test_mcp_python.pyOr point it at another deployment:
uv run python examples/test_mcp_python.py --url https://example.test/mcpList every discovered tool and its input parameters:
uv run python examples/list_mcp_tools.pyInclude each tool's complete input JSON Schema:
uv run python examples/list_mcp_tools.py --show-schemaUse --url https://example.test/mcp to inspect another deployment.
Current scope
Five local stdio backends (Arxiv, calculator, Filesystem, Weather, and Twelve Data) plus the hosted Streamable HTTP GitHub backend.
Standard MCP tool discovery and calls through one gateway.
Static default, Filesystem, Weather, GitHub, Twelve Data, and combined Weather/Twelve Data profiles.
Static secret providers plus request-scoped, server-named API credentials in MCP
_metafor API-backed servers.Files under
data/persist on disk; Gateway metadata itself has no persistent store, authentication, admin API, hot reload, or distributed state.
These omissions are deliberate so the repository remains a clear starting point rather than a prematurely complex platform.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseCqualityDmaintenanceA powerful gateway for the Model Context Protocol (MCP) that unifies AI toolchains by federating multiple MCP servers, wrapping REST APIs as MCP tools, and supporting multiple transport methods with an admin dashboard.Last updated1
- Alicense-qualityBmaintenanceAggregates multiple Model Context Protocol servers into a single gateway to provide unified search, description, and execution of tools. It reduces context limit issues by dynamically fetching specific tool schemas only when needed rather than loading all available tools at once.Last updated3424MIT
- Flicense-qualityCmaintenanceA simple gateway that connects to multiple child MCP servers and forwards tool calls to them, enabling seamless client interactions with multiple tools.Last updated34
- Flicense-qualityBmaintenanceA configurable MCP gateway that runs multiple Streamable HTTP MCP servers and exposes all their tools through a single endpoint, enabling tool aggregation and routing for MCP clients.Last updated
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Feanus/mcp-manager'
If you have feedback or need assistance with the MCP directory API, please join our Discord server