BeefChicken MCP
Turn any OpenAPI 3.0 spec into an MCP server with zero code — deploy to Cloudflare Workers, Node.js, Docker, or run locally via npx, with a built-in OAuth 2.1 server for MCP clients that require custom connector authentication.
Documentation
BeefChicken MCP 🚀
💡 これは何?
BeefChicken MCP は、任意の openapi.yaml を配置するだけで、対象の Web API を Claude や Cursor などの MCPクライアント から直接呼び出せるようにする汎用 MCP サーバー(プロキシ)です。
特定のAPIに依存する実装コードは一切不要。APIキーを直接指定できないクライアント向けに 簡易 OAuth 2.1 サーバー まで同梱しているため、Claude.ai (Web版) にもそのまま接続できます。
graph LR
subgraph Client [AIクライアント]
Claude[🤖 Claude.ai / Cursor 等]
end
subgraph Proxy [BeefChicken MCP]
MCP[⚡ MCPサーバー<br/>Workers / Node.js / Docker]
OAuth[🔐 内蔵 OAuth 2.1]
end
subgraph Target [接続先API]
Spec[📄 docs/openapi.yaml]
API[🌐 対象Web API<br/>Stripe / GitHub / 社内API]
end
Spec -->|ビルド時/起動時に静的JSON化| MCP
Claude -->|MCPプロトコル / OAuth| MCP
MCP -->|ネイティブfetch| API
⚡ なぜ BeefChicken MCP なのか?
❌ 従来の課題
- MCPサーバーを作るために、TypeScriptやPythonでツール定義やリクエストハンドラをガリガリ書く必要がある。
- APIの仕様変更のたびにコードを修正・テストして再デプロイするのが大変。
- Claude.ai (Web版) で自作ツールを使いたいが、OAuth 2.1 認証サーバー構築のハードルが高い。
✅ BeefChicken MCP なら
- 🧩 コード記述 0 行:
docs/openapi.yamlを繋ぎたいAPIの仕様書に差し替えるだけ! - 🔐 Claude.ai (Web版) 即対応: 簡易 OAuth 2.1 サーバー内蔵で、Web版Claudeのカスタムコネクタも一発接続。
- ⚡️ サーバー維持費 0 円: Cloudflare Workers に数秒でデプロイ(Docker / Node.js にも対応)。無料枠内ならタダでMCPサーバーがあなたのものに。
- 📦 超軽量&ゼロパースオーバーヘッド: OpenAPI 仕様書はビルド時(Workers)・起動時(Docker)・デプロイ前の
npm run generate(Node.js)のいずれかで静的 JSON へ変換済み。リクエスト処理中の YAML パースは一切不要。
📊 他の手段との比較
| 機能 / 特徴 | 手動実装 (TS/Python SDK) | 一般的なMCPフレームワーク (FastMCP等) | BeefChicken MCP |
|---|---|---|---|
| コード記述 | 必要 (多) | 必要 (少) | 不要 (0行・YAML置くだけ) |
| OpenAPI対応 | ❌ 要手動変換 | ⚠️ 要ハンドラ実装 | ✅ ファイル差し替えのみ |
| OAuth 2.1 サーバー内蔵 | ❌ 自作が必要 | ❌ 自作が必要 | ✅ 内蔵 (Claude Web即対応) |
| Cloudflare Workers | ⚠️ 要調整 | ⚠️ 要調整 | ✅ 完全対応 (ボタンデプロイ) |
| 実行時フットプリント | - | 中〜大 | 極小 (静的JSON化) |
✨ 主な特徴
- 🧩 設定ファイルの差し替えだけで完結: コードを1行も書かずに任意の Web API を MCP ツール化。
- 🎯 専用プロキシに徹した設計: 複雑なハンドラ記述を排除し、仕様書通りの純粋なプロキシとして動作。
- 📦 静的JSON変換: 実行時の YAML パーサーや
$ref解決ロジックを非搭載にし、Worker バンドルサイズを最小化。 - 🔌 ネイティブ
fetch中継: 余計な HTTP クライアントライブラリを挟まずレスポンスをダイレクト中継。 - 🛡️ Stateless & Robust: SSE 長時間保持に依存しない
responseMode: 'json'構成。タイムアウト制限に強い堅牢設計。
⚠️ 本番公開前の注意点: 本サーバー自体にはレート制限がありません。公開時は Cloudflare の Rate Limiting Rules やリバースプロキシ等で制御してください。また同梱の OAuth 2.1 サーバーは簡易実装です。詳細は 認証ドキュメント を確認してください。
🚀 クイックスタート
1. 仕様書の配置
docs/openapi.yaml を繋ぎたい API の OpenAPI 3.0 仕様書に差し替えます。
💡 ヒント: Stripe や GitHub などの標準 OpenAPI は公式や APIs.guru 等から入手できます。
npm install
npm run generate # docs/openapi.yaml を解析し、src/generated/tools.json を自動生成
2. デプロイ / 実行
Cloudflare Workers の場合:
npx wrangler deploy
成功すると https://beefchicken-mcp.<あなたのサブドメイン>.workers.dev/mcp が発行されます(D1設定等の詳細は デプロイ手順 参照)。
Node.js の場合:
API_BASE_URL=https://api.example.com npm run node:dev
Docker の場合:
docker run -p 3000:3000 \
-e HOST=0.0.0.0 \
-e ALLOWED_HOSTS=127.0.0.1,localhost \
-e API_BASE_URL=https://api.example.com \
-v $(pwd)/docs/openapi.yaml:/app/docs/openapi.yaml:ro \
ghcr.io/watanabebashi/beefchicken-mcp
イメージは GHCR から配布されており、ビルドは不要です。自分の openapi.yaml をマウントすると、コンテナ起動時にそれを解析して tools.json を生成します(マウントしない場合は同梱のサンプル仕様書が使われます)。タグは latest(最新リリース)・vX.Y.Z(特定バージョン固定)・edge(main ブランチの最新ビルド)から選べます。ローカルの変更を試したい場合は、従来どおり docker build -t beefchicken-mcp . でビルドできます。
3. クライアントから接続
発行された URL に対し Authorization: Bearer <対象APIのAPIキー> ヘッダーを付けて MCP クライアントに設定します。
4. ローカル MCP クライアント(Claude Desktop 等)から直接使う場合
Claude Desktop / Claude Code のように MCP サーバーをサブプロセスとして起動するクライアントには、デプロイ不要で npx 経由で直接接続できます。設定ファイル(例: claude_desktop_config.json)に以下を追加してください。
{
"mcpServers": {
"my-api": {
"command": "npx",
"args": ["beefchicken-mcp", "--openapi", "/絶対パス/to/your-api-openapi.yaml"],
"env": {
"API_KEY": "<対象APIのAPIキー>",
"API_BASE_URL": "https://api.example.com"
}
}
}
}
--openapiに対象APIの OpenAPI 仕様書への絶対パスを指定すると、起動のたびにオンメモリでツール定義を生成します(事前のnpm run generateは不要)。フラグを省いた位置引数(["beefchicken-mcp", "/絶対パス/to/your-api-openapi.yaml"])でも同じ動作です。パスを一切指定しなかった場合は、クローン済みリポジトリ内で事前に生成済みのsrc/generated/tools.jsonにフォールバックします(無ければ起動時にエラーで停止します)。cwd 相対のデフォルト仕様書は意図的に持ちません。MCPクライアントがサブプロセスを起動する際の cwd は予測できないため、必ず絶対パスで指定してください。API_KEYは必須です。stdio モードは Web版向けの簡易OAuthサーバーを経由せず、API_KEYの値をそのまま対象APIへのAuthorization: Bearerとして使います。- リポジトリを clone した状態でクライアントに登録したい場合は、
commandをnpx、argsを["tsx", "src/stdio.ts", "--openapi", "./docs/openapi.yaml"]にし、cwd(対応しているクライアントの場合)をリポジトリのルートに設定しても同じエントリーポイント(src/stdio.ts)が起動します(npm run stdioはnpmのバナー出力が標準出力に混ざり stdio の JSON-RPC 通信を壊すため、クライアント設定には使わないでください。手元のターミナルで単体動作を確認する用途に留めてください)。
📚 ドキュメント
| トピック | 内容 |
|---|---|
| 🔑 認証 | APIキーの送信方法・設計方針、claude.ai Web版向けカスタムコネクタの接続方法 |
| ☁️ デプロイ | Cloudflare Workers / Node.js / Docker へのデプロイ手順 |
| ⚙️ 環境変数 | 全設定項目のリファレンス |
| 🛠 開発 | ローカル実行・テスト手順・OpenAPI更新・安全性チェック |
📜 ライセンス
MIT License. 詳細は LICENSE を参照してください。