小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
Apache License 2.0
6
最近更新:6天前

一个统一的 Model Context Protocol 服务器实现,将多个 MCP 服务器聚合为一个。

1MCP - 一个适用于所有场景的MCP服务器

一个统一的模型上下文协议服务器实现,将多个MCP服务器聚合到一个接口中。

NPM Version
NPM License
smithery badge

概述

1MCP(One MCP)旨在简化与AI助手的工作方式。无需为不同的客户端(如Claude Desktop、Cherry Studio、Cursor、Roo Code、Claude等)配置多个MCP服务器,1MCP提供了一个单一的、统一的服务器,具有以下功能:

  • 将多个MCP服务器聚合到一个统一的接口中
  • 通过消除冗余的服务器实例减少系统资源使用
  • 简化不同AI助手之间的配置管理
  • 提供一种标准化的方式让AI模型与外部工具和资源交互
  • 支持动态配置重载而无需重启服务器
  • 处理优雅关闭和资源清理

快速开始

要使Cursor能够使用已经在Claude Desktop中配置的现有MCP服务器,请按照以下步骤操作:

  1. 使用Claude Desktop配置文件运行1MCP服务器:
bash 复制代码
npx -y @1mcp/agent --config ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. 将1MCP服务器添加到您的Cursor配置文件(~/.cursor/mcp.json)中:
json 复制代码
{
    "mcpServers": {
        "1mcp": {
            "type": "http",
            "url": "http://localhost:3050/sse"
        }
    }
}
  1. 开始使用!

使用方法

您可以直接使用npx运行服务器:

bash 复制代码
# 基本用法(使用SSE传输启动服务器)
npx -y @1mcp/agent

# 使用现有的Claude Desktop配置
npx -y @1mcp/agent --config ~/Library/Application\ Support/Claude/claude_desktop_config.json

# 使用stdio传输而不是SSE
npx -y @1mcp/agent --transport stdio

# 显示所有可用选项
npx -y @1mcp/agent --help

可用选项:

  • --transport, -t: 选择传输类型("stdio"或"sse",默认: "sse")
  • --config, -c: 使用特定的配置文件
  • --port, -P: 更改SSE端口(默认:3050)
  • --host, -H: 更改SSE主机(默认:localhost)
  • --tags, -g: 通过标签过滤服务器(参见下面的“标签”部分)
  • --help, -h: 显示帮助

使用环境变量的例子:

bash 复制代码
# 使用环境变量
ONE_MCP_PORT=3051 ONE_MCP_TAGS=network,filesystem npx -y @1mcp/agent

# 或者在您的shell配置中
export ONE_MCP_PORT=3051
export ONE_MCP_TAGS=network,filesystem
npx -y @1mcp/agent

Docker

您也可以使用Docker运行1MCP:

bash 复制代码
# 拉取最新镜像
docker pull ghcr.io/1mcp-app/agent:latest

# 使用SSE传输(默认)运行
docker run -p 3050:3050 ghcr.io/1mcp-app/agent

# 使用自定义配置文件运行
docker run -p 3050:3050 -v /path/to/config.json:/config.json ghcr.io/1mcp-app/agent --config /config.json

# 使用stdio传输运行
docker run -i ghcr.io/1mcp-app/agent --transport stdio

可用镜像标签:

  • latest: 最新稳定版本
  • vX.Y.Z: 特定版本(例如 v1.0.0
  • sha-<commit>: 特定提交

环境变量

您可以使用前缀为ONE_MCP_的环境变量来配置1MCP:

  • ONE_MCP_TRANSPORT: 传输类型("stdio"或"sse",默认: "sse")
  • ONE_MCP_PORT: SSE端口(默认:3050)
  • ONE_MCP_HOST: SSE主机(默认: "localhost")
  • ONE_MCP_CONFIG: 配置文件路径
  • ONE_MCP_TAGS: 以逗号分隔的标签列表,用于过滤服务器

使用环境变量的例子:

bash 复制代码
docker run -p 3051:3051 \
  -e ONE_MCP_PORT=3051 \
  -e ONE_MCP_TAGS=network,filesystem \
  ghcr.io/1mcp-app/agent

标签的理解

标签帮助您控制哪些MCP服务器可供不同的客户端使用。可以将标签视为描述每个服务器功能的标签。

如何使用标签

  1. 在您的服务器配置中:为每个服务器添加标签以描述其功能
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
    }
  }
}
  1. 在以stdio模式启动1MCP时:您可以按标签过滤服务器
bash 复制代码
# 仅启动带有"network"标签的服务器
npx -y @1mcp/agent --transport stdio --tags "network"

# 启动带有"network"或"filesystem"标签的服务器
npx -y @1mcp/agent --transport stdio --tags "network,filesystem"
  1. 在使用SSE传输时:客户端可以请求具有特定标签的服务器
json 复制代码
{
    "mcpServers": {
        "1mcp": {
            "type": "http",
            "url": "http://localhost:3050/sse?tags=network"  // 仅连接到具备网络功能的服务器
        }
    }
}

示例标签:

  • network: 用于执行网络请求的服务器
  • filesystem: 用于处理文件操作的服务器
  • memory: 用于提供内存/存储的服务器
  • shell: 用于运行shell命令的服务器
  • db: 用于处理数据库操作的服务器

配置

全局配置

服务器会自动在全局位置管理配置:

  • macOS/Linux: ~/.config/1mcp/mcp.json
  • Windows: %APPDATA%/1mcp/mcp.json

配置文件格式

json 复制代码
{
  "mcpServers": {
    "mcp-server-fetch": {
      "command": "uvx",
      "args": [
        "mcp-server-fetch"
      ],
      "disabled": false
    },
    "server-memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "disabled": false
    }
  }
}

工作原理

系统架构

|sse| MCP A2 -->|sse| MCP A3 -->|sse| MCP A4 -->|sse| MCP MCP --> |sse| S1 MCP --> |stdio| S2 MCP --> |stdio| S3">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

请求流程

sequenceDiagram participant Client as AI Assistant participant 1MCP as 1MCP Server participant MCP as MCP Servers Client->>1MCP: 发送MCP请求 activate 1MCP 1MCP->>1MCP: 验证请求 1MCP->>1MCP: 加载配置 1MCP->>MCP: 转发请求 activate MCP MCP-->>1MCP: 响应 deactivate MCP 1MCP-->>Client: 转发响应 deactivate 1MCP

开发

安装依赖项:

bash 复制代码
pnpm install

构建服务器:

bash 复制代码
pnpm build

开发时自动重建:

bash 复制代码
pnpm watch

运行服务器:

bash 复制代码
pnpm dev

调试

使用MCP Inspector,这是一个包脚本:

bash 复制代码
pnpm inspector

Inspector将提供一个URL,以便您在浏览器中访问调试工具。