乐于分享
好东西不私藏

OneMCP:让你的 AI 工具不再「各自为战」

OneMCP:让你的 AI 工具不再「各自为战」

如果你用过 Claude Desktop、Cursor 这些 AI 工具,大概率已经碰到过 MCP(Model Context Protocol)。

这玩意儿有多火?2024 年 11 月 Anthropic 推出来,不到一年,28% 的财富 500 强公司已经部署了它。社区里已经冒出来几千个 MCP 服务器,什么文件系统、GitHub、数据库…应有尽有。

但问题也随之来了:

工具一多,管理就乱。

这个工具叫 read_file,那个也叫 read_file,到底调用的是哪个?

每加一个服务,就要配置一次,有没有办法一次性搞定?

这些问题,OneMCP 都能帮你解决。


OneMCP 是什么?

OneMCP 是一个「智能路由层」,插在 MCP 客户端和后端服务器之间。

你的 AI 工具 (Claude Desktop, Cursor...)        ↓    OneMCP 路由层        ↓   ┌─────┬─────┬─────┐   │ S1  │ S2  │ S3  │  ← 多个 MCP 服务器   └─────┴─────┴─────┘

简单说,它做三件事:

  1. 统一入口 — 一个接口,管理所有 MCP 服务
  2. 解决冲突 — 自动给工具加前缀,避免名字重复
  3. 性能优化 — 连接池、健康检查、故障自动恢复

核心特色

🔌 服务聚合

不管你有多少个 MCP 服务器,OneMCP 统一暴露一个接口。客户端只需要连接一次,就能访问所有服务的工具。

🏷️ 命名空间

这是我觉得最实用的功能。

想象一下:你同时装了 filesystem 服务器和 github 服务器,它们都有个叫 read_file 的工具。怎么办?

OneMCP 自动帮你搞定冲突:

filesystem__read_file   → 读本地文件github__read_file       → 读 GitHub 文件

格式是 {服务名}__{工具名},双下划线分隔,一目了然。

🔌 连接池

每个服务维护一个连接池,复用连接,不用每次请求都重新启动进程。配置也很灵活:

{"connectionPool": {"maxConnections"5,"idleTimeout"60000,"connectionTimeout"30000  }}

🌡️ 健康监控

OneMCP 会定期「体检」每个服务。连续失败 3 次,自动标记为不健康,工具列表里就看不到了。恢复后又自动加回来。

🎨 TUI 交互界面

不想改配置文件?直接跑 onemcp-tui,一个终端界面让你可视化配置服务。

🏷️ 标签过滤

给服务打标签,然后按标签筛选:

# 只暴露有 "production" 或 "api" 标签的服务onemcp -t production,api

Server 模式也支持,用 HTTP 头过滤:

curl -H "X-MCP-Tags: production" http://localhost:3000/mcp ...

📦 批量操作

一个请求调用多个工具,减少网络往返:

const results = await router.invokeToolsBatch([  {    namespacedName: 'filesystem__read_file',    args: {       path: '/tmp/a.txt'    }  },  {     namespacedName: 'github__create_issue'    args: {       title: 'Bug found'    }  }]);

安装和使用

安装

# 全局安装npm install -g onemcp# 或者作为项目依赖npm install onemcp

初始化

# 初始化配置目录(默认 ~/.onemcp)onemcp --init

CLI 模式(stdio)

这是最常用的模式,AI 工具通过标准输入输出和 OneMCP 通信:

# 直接运行onemcp# 指定配置目录onemcp --config-dir ~/.onemcp

Server 模式(HTTP)

启动一个 HTTP 服务,其他应用可以通过网络访问:

# 监听 3000 端口onemcp --mode server --port 3000# 或者用环境变量ONEMCP_MODE=server ONEMCP_PORT=8080 onemcp

TUI 模式

可视化配置界面:

onemcp-tui

配置示例

配置文件在 ~/.onemcp/config.json

{"mcpServers": {"filesystem": {"transport""stdio","command""npx","args": ["-y""@modelcontextprotocol/server-filesystem""/tmp"],"tags": ["filesystem""local"],"enabled"true    },"github": {"transport""stdio","command""npx","args": ["-y""@modelcontextprotocol/server-github"],"env": {"GITHUB_TOKEN""your-token-here"      },"tags": ["remote""api"],"enabled"true    }  },"connectionPool": {"maxConnections"5,"idleTimeout"60000  }}

编程式使用

如果想在代码里用,OneMCP 是个完整的 NPM 包:

import { CliModeRunner } from'onemcp';import { FileConfigProvider, FileStorageAdapter } from'onemcp';const storage = new FileStorageAdapter('~/.onemcp');const configProvider = new FileConfigProvider({  storageAdapter: storage,  configDir: '~/.onemcp'});const config = await configProvider.load();const runner = new CliModeRunner(config, configProvider);await runner.start();

适用场景

  • 多服务管理:同时用十几个 MCP 服务,每个都要配置
  • 工具名冲突:不同服务有同名的工具
  • 性能敏感:需要连接池复用、批量调用
  • 运维需求:健康监控、审计日志、故障恢复

总结

OneMCP 不是要替代 MCP,而是让 MCP 更好用。

当你的服务从 1 个变成 10 个,从 10 个变成 50 个的时候,你会发现:一个统一的路由层,能省多少事儿。

官网:https://github.com/BeCrafter/onemcp安装:npm install -g onemcp

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » OneMCP:让你的 AI 工具不再「各自为战」

猜你喜欢

  • 暂无文章