vibocode-mcp について
vibocode-mcpは、APIアクションカタログの検索と、制限付きサンドボックスでのPython実行を行うMCPサーバーです。APIアクセスとViBoの永続メモリーを必要とするエージェント向けに、ツールを絞っています。
主な機能
- 01カタログのエンドポイントとメモリー検索
- 02制限付きサンドボックスでのPython実行
- 03許可リスト内のHTTPパスへのアクセス
- 04メモリーの追加、検索、統計確認
- 05OpenAPIからのカタログ生成
活用シーン
- 01自然言語のクエリからAPIアクションを検索
- 021回のPython実行で複数のエンドポイントを呼び出す
- 03後続のエージェントセッション向けに情報を保存
MCP 対応
stdio上のJSON-RPCで、`search`と`run`の2つのMCPツールを公開します。`search`はカタログのアクションとメモリー情報を検索し、`run`はサンドボックスの制限下でPythonを実行します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
vibocode-mcp
API カタログの代わりにツールを2つ。 エージェントのコンテキストを小さく保ちながら、幅広くアクセスできる MCP サーバーです。
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 トークンです(o200k_base トークナイザー)。同じ GitHub REST カタログ(1,272 エンドポイント)をプレーンな MCP ツールとして用意すると、79,525 トークンかかり、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 を1回呼び出すだけで、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秒、メモリ1.5 GB、CPU 20秒、出力は4,000文字まで
- 同じ事実をメモリに2回書き込む処理はスキップされます
これは Python レベルのサンドボックス(AST + rlimits + 別プロセス)であり、V8 アイソレートではありません。意図しないコードや不注意なコードからは保護しますが、意図的な OS レベルの攻撃には対応しません。
テスト
python3 tests/test_mcp.py # protocol, search, memory, API, limits, blocks
ベンチマーク
トークナイザー:o200k_base(tiktoken)。カタログは公式 OpenAPI 仕様から生成しています。
「完全なカタログ」とは、エンドポイントごとに1つのツールを用意し、名前、説明、空の入力スキーマを含めたものです。代替方式に有利な、最小限の構成です。
| カタログ | アクション数 | 完全なカタログ | vibocode | 比率 |
|---|---|---|---|---|
| GitHub REST | 1,272 | 79,525 トークン | 217 | 366x |
| Stripe | 612 | 38,020 トークン | 217 | 175x |
| Slack Web API | 174 | 9,129 トークン | 217 | 42x |
GitHub の場合、ユーザーが何も入力する前に、200,000トークンのコンテキストウィンドウの40%を消費します。
エンドツーエンドの測定では、コード196トークンを含む run の呼び出し1回で api.github.com に3回リクエストし、メモリに事実を書き込み、統計情報を読み取りました。5ステップ全体で2,202トークンでした。
検索品質
検索は字句ベースで、エイリアスにも対応しています。aliases.json でユーザーが入力する単語をカタログの用語に対応付けるため、エンドポイントの用語ではなく、自然な表現で検索できます。
同梱設定(英語のエイリアス):
| カタログ | クエリ数 | Top-1 | Top-4 |
|---|---|---|---|
| Stripe | 12 | 83% | 92% |
| GitHub REST | 5 | 40% | 80% |
VIBOCODE_ALIASES で言語パックを読み込んだ場合(28個のクエリを混在させたセットで、半数が英語以外):Stripe 80% / 95%、GitHub 38% / 75%。
いずれの場合も、シナリオ全体を説明し、対象を指定しないクエリが弱点として知られています。次のステップは BM25 と埋め込みを組み合わせることです。
制限事項
- トランスポートは行区切りの JSON-RPC です(Content-Length ではありません)。stdio クライアントには十分です
- セッションベースのエンドポイントには、Cookie またはサービスのトークンが必要です
- カタログは静的です。新しいエンドポイントは
catalog.jsonに追加するか、OpenAPI から生成します - 検索は字句ベースで、ベクトルインデックスは使用しません
ライセンス
MIT。ViBo memory は独自のライセンスを持つ別製品です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。