mcp-uni
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-uniconnect an MCP server via stdio"
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.
English | δΈζ
MCP-UNI
MCP-UNI is a Model Context Protocol (MCP) universal server that acts as a unified gateway for connecting and managing multiple MCP servers. It provides a single HTTP endpoint to dynamically connect, disconnect, and interact with various MCP servers without requiring static configuration.
Features
π Dynamic MCP Server Management: Connect and disconnect MCP servers at runtime
π HTTP Server Interface: RESTful API with Server-Sent Events (SSE) support
π Multiple Transport Support: Supports both SSE and stdio transports
π οΈ Tool Aggregation: Exposes all connected MCP server tools through a unified interface
π Resource Management: Access resources and resource templates from connected servers
π¬ Prompt Management: Manage prompts across multiple MCP servers
π Auto-retry: Built-in retry mechanism for connection failures
π Real-time Updates: Dynamic tool list updates when servers connect/disconnect
Architecture
MCP-UNI acts as a proxy/gateway between clients and multiple MCP servers:
Client ββHTTP/SSEββ> MCP-UNI ββstdio/SSEββ> MCP Server 1
β
ββββββstdio/SSEββ> MCP Server 2
β
ββββββstdio/SSEββ> MCP Server NInstallation
Using npx (Recommended)
npx mcp-uniFrom npm (Coming Soon)
npm install -g mcp-uniFrom Source
git clone https://github.com/yourusername/mcp-uni.git
cd mcp-uni
npm install
npm run buildQuick Start
Method 1: Using Configuration File (Recommended)
Create a configuration file (
mcp-uni.config.json):{ "mcpServers": { "everything": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-everything"], "env": {} } } }Start the MCP-UNI server:
# Using npx (no installation required) npx mcp-uni # With custom port npx mcp-uni --port 8000 # With custom config file npx mcp-uni --config /path/to/your-config.json # Or if installed globally mcp-uni mcp-uni --port 8000The server will start on
http://localhost:7200(or your specified port) with SSE endpoint at/stream, and automatically connect the MCP servers defined in your configuration file.
Method 2: Manual Connection
Start the MCP-UNI server:
# Using npx (no installation required) npx mcp-uni # With custom port npx mcp-uni --port 8000 # Or if installed globally mcp-uni mcp-uni --port 8000The server will start on
http://localhost:7200(or your specified port) with SSE endpoint at/stream.Connect an MCP server:
curl -X POST http://localhost:7200/tools/connect_mcp \ -H "Content-Type: application/json" \ -d '{ "name": "my-mcp-server", "transportConfig": { "type": "stdio", "command": "node", "args": ["./my-mcp-server/index.js"], "env": {}, "cwd": "/path/to/server" } }'List connected servers:
curl -X POST http://localhost:7200/tools/list_mcp \ -H "Content-Type: application/json" \ -d '{}'
Configuration
Configuration File
MCP-UNI supports a configuration file (mcp-uni.config.json) to automatically connect MCP servers on startup. This allows you to pre-configure your MCP servers without manually connecting them each time.
Configuration File Format
{
"mcpServers": {
"server-name": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-everything"],
"env": {}
}
}
}Configuration File Location
Default:
mcp-uni.config.jsonin the current working directoryCustom: Use
--configoption to specify a different path
Example Configuration Files
Multiple MCP Servers:
{
"mcpServers": {
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
"env": {}
},
"everything": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-everything"],
"env": {}
},
"database": {
"type": "stdio",
"command": "python",
"args": ["-m", "database_mcp_server"],
"env": {
"DB_URL": "sqlite:///app.db"
},
"cwd": "/path/to/db/server"
}
}
}SSE Transport Configuration:
{
"mcpServers": {
"remote-server": {
"type": "sse",
"url": "http://example.com/sse",
"query": {
"param1": "value1"
},
"headers": {
"Authorization": "Bearer token"
}
}
}
}Transport Configuration
MCP-UNI supports two types of transport configurations:
SSE Transport
{
"type": "sse",
"url": "http://example.com/sse",
"query": {
"param1": "value1"
},
"headers": {
"Authorization": "Bearer token"
}
}Stdio Transport
{
"type": "stdio",
"command": "python",
"args": ["-m", "my_mcp_server"],
"env": {
"ENV_VAR": "value"
},
"cwd": "/path/to/working/directory"
}Command Line Options
mcp-uni [options]
Options:
-p, --port <number> Port to listen on (default: 7200)
-s, --stream <path> Stream endpoint path (default: /stream)
-c, --config <path> Config file path (default: mcp-uni.config.json)
-h, --help Display help for command
-V, --version Display version numberExamples
# Start server on default port (7200) with default config
npx mcp-uni
# Start server on custom port
npx mcp-uni --port 8000
# Start server with custom config file
npx mcp-uni --config /path/to/my-config.json
# Start server with custom port and config
npx mcp-uni --port 8000 --config ./configs/production.json
# Start server with custom stream endpoint
npx mcp-uni --port 8000 --stream /events
# Show help
npx mcp-uni --help
# Show version
npx mcp-uni --versionAPI Reference
Built-in Tools
MCP-UNI provides these management tools:
connect_mcp
Connect a new MCP server to the host.
Parameters:
name(string): Unique name for the MCP servertransportConfig(object): Transport configuration (see above)
disconnect_mcp
Disconnect an MCP server from the host.
Parameters:
name(string): Name of the MCP server to disconnect
list_mcp
List all currently connected MCP servers.
Parameters: None
Dynamic Tools
All tools from connected MCP servers are automatically exposed through MCP-UNI with their original names and schemas.
HTTP Endpoints
POST /tools/{tool_name}- Execute a toolGET /stream- SSE endpoint for real-time updatesGET /health- Health check endpoint
Usage Examples
Connecting Multiple Servers
# Connect a file system MCP server
curl -X POST http://localhost:7200/tools/connect_mcp \
-H "Content-Type: application/json" \
-d '{
"name": "filesystem",
"transportConfig": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
"env": {},
"cwd": "."
}
}'
# Connect a database MCP server
curl -X POST http://localhost:7200/tools/connect_mcp \
-H "Content-Type: application/json" \
-d '{
"name": "database",
"transportConfig": {
"type": "stdio",
"command": "python",
"args": ["-m", "database_mcp_server"],
"env": {"DB_URL": "sqlite:///app.db"},
"cwd": "/path/to/db/server"
}
}'Using Connected Server Tools
Once servers are connected, their tools become available:
# Use filesystem server tool
curl -X POST http://localhost:7200/tools/read_file \
-H "Content-Type: application/json" \
-d '{"path": "/tmp/example.txt"}'
# Use database server tool
curl -X POST http://localhost:7200/tools/execute_query \
-H "Content-Type: application/json" \
-d '{"query": "SELECT * FROM users LIMIT 10"}'Development
Project Structure
src/
βββ index.ts # Entry point and HTTP server setup
βββ server.ts # MCP server implementation
βββ host.ts # MCP host for managing connections
βββ utils/
βββ schema-converter.ts # JSON Schema to Zod conversion utilities
βββ utils.ts # Utility functionsBuilding
npm run buildThe compiled JavaScript will be output to the build/ directory.
Key Components
McpHost (
host.ts:37): Manages connections to multiple MCP serverscreateServer (
server.ts:15): Creates the unified MCP server instanceSchema Conversion (
utils/schema-converter.ts): Converts JSON schemas to Zod schemasTransport Management (
host.ts:166): Handles different transport types (SSE/stdio)
Error Handling
MCP-UNI includes robust error handling:
Connection Retries: Automatic retry with backoff for failed connections (3 retries, 2.5s delay)
Tool Execution: Proper error propagation from connected servers
Graceful Cleanup: Automatic cleanup of connections on server shutdown
Requirements
Node.js 16+ (ES modules required)
TypeScript 5+
Dependencies
@modelcontextprotocol/sdk: MCP SDK for client/server implementationmcp-proxy: HTTP proxy server for MCP protocolzod: Schema validation and type safety
License
MIT
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
Support
For issues and questions:
Create an issue on GitHub
Check existing documentation
Review the MCP specification
MCP-UNI simplifies MCP server management by providing a unified, dynamic gateway for all your Model Context Protocol servers.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/iHeyTang/mcp-uni'
If you have feedback or need assistance with the MCP directory API, please join our Discord server