https://github.com/1mcp-app/agent
  
  
    A unified Model Context Protocol server implementation that aggregates multiple MCP servers into one. 
    https://github.com/1mcp-app/agent
  
mcp mcp-server unified-mcp-server
        Last synced: 7 months ago 
        JSON representation
    
A unified Model Context Protocol server implementation that aggregates multiple MCP servers into one.
- Host: GitHub
 - URL: https://github.com/1mcp-app/agent
 - Owner: 1mcp-app
 - License: apache-2.0
 - Created: 2025-03-16T14:05:08.000Z (8 months ago)
 - Default Branch: main
 - Last Pushed: 2025-04-08T02:35:56.000Z (7 months ago)
 - Last Synced: 2025-04-08T03:29:45.248Z (7 months ago)
 - Topics: mcp, mcp-server, unified-mcp-server
 - Language: TypeScript
 - Homepage:
 - Size: 854 KB
 - Stars: 3
 - Watchers: 1
 - Forks: 1
 - Open Issues: 1
 - 
            Metadata Files:
            
- Readme: README.md
 - Changelog: CHANGELOG.md
 - License: LICENSE
 
 
Awesome Lists containing this project
- awesome-mcp-servers - Agent - Aggregates multiple MCP servers into a single unified interface, reducing system resource usage and simplifying configuration management with dynamic reloading and tag-based filtering capabilities. Highly relevant as a tool for managing and orchestrating MCP servers. ([Read more](/details/agent.md)) `mcp` `middleware` `orchestration` `multi-instance` (MCP Middleware & Orchestration)
 - awesome-mcp-servers - 1mcp/agent - 複数のMCPサーバーを1つのMCPサーバーに集約する統一的なモデルコンテキストプロトコルサーバー実装。 (サーバー実装 / 🔗 <a name="aggregators"></a>アグリゲーター)
 - awesome-ai-tools - 1mcp/agent - Unified MCP server implementation aggregating multiple servers into one interface (MCP Servers / 🔗 Aggregators & Meta Servers)
 - metorial-index - One MCP - One MCP is a server that simplifies the management of multiple AI models by combining them into a single interface, making it easier and more efficient to use various AI tools without needing separate servers for each one. (Task and Project Management)
 - best-of-mcp-servers - GitHub - 16% open · ⏱️ 24.10.2025) (Aggregators)
 - awesome-mcp-servers - **agent** - A unified Model Context Protocol server implementation that aggregates multiple MCP servers into one. `typescript` `mcp` `mcp-client` `mcp-gateway` `mcp-proxy` `git clone https://github.com/1mcp-app/agent` (🌐 Web Development)
 
README
          # 1MCP - One MCP Server for All
A unified Model Context Protocol server implementation that aggregates multiple MCP servers into one.
## Overview
1MCP (One MCP) is designed to simplify the way you work with AI assistants. Instead of configuring multiple MCP servers for different clients (Claude Desktop, Cherry Studio, Cursor, Roo Code, Claude, etc.), 1MCP provides a single, unified server that:
- Aggregates multiple MCP servers into one unified interface
- Reduces system resource usage by eliminating redundant server instances
- Simplifies configuration management across different AI assistants
- Provides a standardized way for AI models to interact with external tools and resources
- Supports dynamic configuration reloading without server restart
- Handles graceful shutdown and resource cleanup
## Quick Start
To enable Cursor to use existing MCP servers already configured in Claude Desktop, follow these steps:
1. Run the 1MCP server with the Claude Desktop config file:
```bash
npx -y @1mcp/agent --config ~/Library/Application\ Support/Claude/claude_desktop_config.json
```
2. Add the 1MCP server to your Cursor config file (`~/.cursor/mcp.json`):
```json
{
    "mcpServers": {
        "1mcp": {
            "type": "http",
            "url": "http://localhost:3050/sse"
        }
    }
}
```
3. Enjoy it!
## Usage
You can run the server directly using `npx`:
```bash
# Basic usage (starts server with SSE transport)
npx -y @1mcp/agent
# Use existing Claude Desktop config
npx -y @1mcp/agent --config ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Use stdio transport instead of SSE
npx -y @1mcp/agent --transport stdio
# Show all available options
npx -y @1mcp/agent --help
```
Available options:
- `--transport, -t`: Choose transport type ("stdio" or "sse", default: "sse")
- `--config, -c`: Use a specific config file
- `--port, -P`: Change SSE port (default: 3050)
- `--host, -H`: Change SSE host (default: localhost)
- `--tags, -g`: Filter servers by tags (see Tags section below)
- `--help, -h`: Show help
### Understanding Tags
Tags help you control which MCP servers are available to different clients. Think of tags as labels that describe what each server can do.
#### How to Use Tags
1. **In your server config**: Add tags to each server to describe its capabilities
```json
{
  "mcpServers": {
    "web-server": {
      "command": "uvx",
      "args": ["mcp-server-fetch"],
      "tags": ["network", "web"],
      "disabled": false
    },
    "file-server": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "~/Downloads"],
      "tags": ["filesystem"],
      "disabled": false
    }
  }
}
```
2. **When starting 1MCP in stdio mode**: You can filter servers by tags
```bash
# Only start servers with the "network" tag
npx -y @1mcp/agent --transport stdio --tags "network"
# Start servers with either "network" or "filesystem" tags
npx -y @1mcp/agent --transport stdio --tags "network,filesystem"
```
3. **When using SSE transport**: Clients can request servers with specific tags
```json
{
    "mcpServers": {
        "1mcp": {
            "type": "http",
            "url": "http://localhost:3050/sse?tags=network"  // Only connect to network-capable servers
        }
    }
}
```
Example tags:
- `network`: For servers that make web requests
- `filesystem`: For servers that handle file operations
- `memory`: For servers that provide memory/storage
- `shell`: For servers that run shell commands
- `db`: For servers that handle database operations
## Configuration
### Global Configuration
The server automatically manages configuration in a global location:
- macOS/Linux: `~/.config/1mcp/mcp.json`
- Windows: `%APPDATA%/1mcp/mcp.json`
### Configuration File Format
```json
{
  "mcpServers": {
    "mcp-server-fetch": {
      "command": "uvx",
      "args": [
        "mcp-server-fetch"
      ],
      "disabled": false
    },
    "server-memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "disabled": false
    }
  }
}
```
## How It Works
### System Architecture
```mermaid
graph TB
    subgraph "AI Assistants"
        A1[Claude Desktop]
        A2[Cursor]
        A3[Cherry Studio]
        A4[Roo Code]
    end
    subgraph "1MCP Server"
        MCP[1MCP Agent]
    end
    subgraph "MCP Servers"
        S1[Server 1]
        S2[Server 2]
        S3[Server 3]
    end
    A1 -->|sse| MCP
    A2 -->|sse| MCP
    A3 -->|sse| MCP
    A4 -->|sse| MCP
    MCP --> |sse| S1
    MCP --> |stdio| S2
    MCP --> |stdio| S3
```
### Request Flow
```mermaid
sequenceDiagram
    participant Client as AI Assistant
    participant 1MCP as 1MCP Server
    participant MCP as MCP Servers
    Client->>1MCP: Send MCP Request
    activate 1MCP
    1MCP->>1MCP: Validate Request
    1MCP->>1MCP: Load Config
    1MCP->>MCP: Forward Request
    activate MCP
    MCP-->>1MCP: Response
    deactivate MCP
    1MCP-->>Client: Forward Response
    deactivate 1MCP
```
## Development
Install dependencies:
```bash
pnpm install
```
Build the server:
```bash
pnpm build
```
For development with auto-rebuild:
```bash
pnpm watch
```
Run the server:
```bash
pnpm dev
```
### Debugging
Using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script:
```bash
pnpm inspector
```
The Inspector will provide a URL to access debugging tools in your browser.