mcpField
V
vibocode-mcp

vibocode-mcp

ローカル
github.comその他01 日前に更新

vibocode-mcp について

vibocode-mcpは、APIアクションカタログの検索と、制限付きサンドボックスでのPython実行を行うMCPサーバーです。APIアクセスとViBoの永続メモリーを必要とするエージェント向けに、ツールを絞っています。

主な機能

  1. 01カタログのエンドポイントとメモリー検索
  2. 02制限付きサンドボックスでのPython実行
  3. 03許可リスト内のHTTPパスへのアクセス
  4. 04メモリーの追加、検索、統計確認
  5. 05OpenAPIからのカタログ生成

活用シーン

  1. 01自然言語のクエリからAPIアクションを検索
  2. 021回のPython実行で複数のエンドポイントを呼び出す
  3. 03後続のエージェントセッション向けに情報を保存

MCP 対応

stdio上のJSON-RPCで、`search`と`run`の2つの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 カタログの代わりにツールを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 REST1,27279,525 トークン217366x
Stripe61238,020 トークン217175x
Slack Web API1749,129 トークン21742x

GitHub の場合、ユーザーが何も入力する前に、200,000トークンのコンテキストウィンドウの40%を消費します。

エンドツーエンドの測定では、コード196トークンを含む run の呼び出し1回で api.github.com に3回リクエストし、メモリに事実を書き込み、統計情報を読み取りました。5ステップ全体で2,202トークンでした。

検索品質

検索は字句ベースで、エイリアスにも対応しています。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 は独自のライセンスを持つ別製品です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。