mcpField
V
vibocode-mcp

vibocode-mcp

本地服务
github.com其他01 天前更新

关于 vibocode-mcp

vibocode-mcp 是一款 MCP 服务,可搜索 API 操作目录,并在受限沙盒中运行模型编写的 Python。它面向需要 API 访问和 ViBo 持久记忆的 Agent,工具集保持精简。

主要功能

  1. 01搜索目录端点和记忆
  2. 02在受限沙盒中运行 Python
  3. 03访问允许列表中的 HTTP 路径
  4. 04添加、查找和统计记忆
  5. 05从 OpenAPI 生成目录

适用场景

  1. 01通过自然语言查询查找 API 操作
  2. 02在一次 Python 运行中调用多个端点
  3. 03保存事实供后续 Agent 会话使用

MCP 相关

它通过 stdio 上的 JSON-RPC 暴露 `search` 和 `run` 两个 MCP 工具。`search` 查找目录操作和记忆事实;`run` 在沙盒限制下执行 Python。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vnbochkarev-netizen-vibocode": {
"command": "npx",
"args": [
"-y",
"vibocode-mcp"
],
"env": {
"VIBOCODE_CATALOG": "<VIBOCODE_CATALOG>",
"VIBO_MEM_FILE": "<VIBO_MEM_FILE>"
}
}
}
}
启动命令npx -y vibocode-mcp
需要配置的环境变量
VIBOCODE_CATALOGPath to catalog.json describing the target service
VIBO_MEM_FILEPath to the ViBo memory base (optional, enables persistent memory)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmvibocode-mcp0.1.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

vibocode-mcp

两个工具,而非 API 目录。 一个 MCP 服务,能让 Agent 保持小巧的上下文,同时拥有广泛的触达能力。

search  — finds the right endpoints and memory facts, returns compact signatures
run     — executes model-written Python in a sandbox: api.get(path) + vi.add/find/stats

整个工具集只有 217 个 token(o200k_base 分词器)。同一份 GitHub REST 目录包含 1,272 个端点,若将其作为普通 MCP 工具,则需要 79,525 个 token:相差 366 倍。Slack 的 174 个端点则相差 42 倍。测量结果和复现命令见基准测试。

安装

npx vibocode-mcp

需要 Node 18+ 和 Python 3.10+(服务端使用 Python)。

MCP 客户端配置:

{
  "mcpServers": {
    "vibocode": {
      "command": "npx",
      "args": ["-y", "vibocode-mcp"],
      "env": {
        "VIBOCODE_CATALOG": "/path/to/catalog.json",
        "VIBO_MEM_FILE": "/path/to/memory.web"
      }
    }
  }
}

操作目录

catalog.json 描述一项服务:基础 URL、允许的域名以及操作列表。

{
  "service": "example",
  "base_url": "http://127.0.0.1:4174",
  "allow_domains": ["127.0.0.1"],
  "actions": [
    {"name": "health", "method": "GET", "path": "/api/health", "auth": false,
     "desc": "Service health: storage, notification channels, server time"}
  ]
}

目录不是手工编写的:对于 OpenAPI,可以自动生成。

python3 tools/openapi_to_catalog.py openapi.json -o catalog.json \
  --base-url https://api.example.com --allow api.example.com --service example

使用示例

h = api.get("/api/health")
print(h["status"], h["data"]["storage"])
vi.add("Service health", "health ok, storage local-json")
print(vi.stats())

一次 run 调用:发送 API 请求、写入记忆并读取统计信息。如果没有记忆,它就只是一个沙箱;其价值在于,下一次会话不必重新发现已有的信息。

内部构成

bin/vibocode-mcp.js        — npm entry point (starts the Python server)
vibocode/server.py         — MCP server (JSON-RPC over stdio)
vibocode/catalog.py        — catalog search, compact signatures
vibocode/aliases.json      — query alias data (natural language -> catalog terms)
vibocode/bridge.py         — bridge: ViBo memory + allowlisted HTTP
vibocode/sandbox.py        — AST validation + isolated process with limits
vibocode/runner.py         — model code executor
tools/openapi_to_catalog.py — catalog generator from OpenAPI
tests/test_mcp.py          — 19 checks
skill/                     — packaging as an agent skill (SKILL.md + CLI)

安全性

  • 导入:json, math, re, datetime, statistics, itertools
  • 禁止使用:open, eval, exec, compile, __import__, getattr, setattr、双下划线属性、global/nonlocal、无限循环
  • 网络:仅允许调用 api.get(path),且只能访问 allow_domains 中的主机
  • 限制:墙钟时间 40 s、内存 1.5 GB、CPU 时间 20 s、输出上限为 4,000 个字符
  • 同一事实重复写入记忆时会跳过

这是 Python 层级的沙箱(AST + rlimits + 独立进程),并非 V8 隔离环境:它能防范意外和不谨慎的代码,但无法抵御蓄意的操作系统级攻击。

测试

python3 tests/test_mcp.py     # protocol, search, memory, API, limits, blocks

基准测试

分词器:o200k_base(tiktoken)。目录由官方 OpenAPI 规范生成。 “完整目录”指每个端点对应一个工具,包含名称、描述和空输入架构——这是对替代方案更为宽松的下限估算。

目录操作数完整目录vibocode比率
GitHub REST1,27279,525 个 token217366 倍
Stripe61238,020 个 token217175 倍
Slack Web API1749,129 个 token21742 倍

对于 GitHub,在用户还没说一个字之前,就会占用 200,000-token 上下文窗口的 40%。

端到端测试:一次 run 调用使用 196 个 token 的代码,向 api.github.com 发送了三个请求,将一条事实写入记忆,并读取了统计信息。整个五步交互共计 2,202 个 token。

搜索质量

搜索采用词法匹配并支持别名。aliases.json 将用户输入的词映射到目录术语,因此查询可以使用自然的表达方式,而不必使用端点术语。

随附配置(英文别名):

目录查询数Top-1Top-4
Stripe1283%92%
GitHub REST540%80%

使用通过 VIBOCODE_ALIASES 加载的语言包时(共 28 个混合查询,其中一半为非英语):Stripe 为 80% / 95%,GitHub 为 38% / 75%。

两种情况下已知的弱点相同:描述完整场景而非具体对象的查询。 下一步:混合使用 BM25 + 嵌入。

限制

  • 传输协议采用按行分隔的 JSON-RPC(非 Content-Length);足以满足 stdio 客户端的需求
  • 基于会话的端点需要 cookie 或服务令牌
  • 目录是静态的:新增端点需添加到 catalog.json(或从 OpenAPI 生成)
  • 搜索采用词法匹配,不使用向量索引

许可证

MIT。ViBo memory 是独立产品,拥有自己的许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。