BeefChicken MCP
# BeefChicken MCP 🚀
<div align="center">
<h3>openapi.yaml を1枚置くだけ。コード記述ゼロでどんなWeb APIも即座にMCPサーバー化</h3>
<p><strong>簡易OAuth 2.1内蔵の超軽量OpenAPIプロキシサーバー</strong></p>
<p><a href="README.en.md">English</a> | 日本語</p>
[](https://deploy.workers.cloudflare.com/?url=https://github.com/Watanabebashi/BeefChicken-MCP)
[](https://opensource.org/licenses/MIT)
[](https://modelcontextprotocol.io/)
[](https://workers.cloudflare.com/)
[](https://www.docker.com/)
[](https://www.npmjs.com/package/beefchicken-mcp)
[](https://www.npmjs.com/package/beefchicken-mcp)
</div>
---
## 💡 これは何?
**BeefChicken MCP** は、任意の `openapi.yaml` を配置するだけで、対象の Web API を Claude や Cursor などの **MCPクライアント** から直接呼び出せるようにする汎用 MCP サーバー(プロキシ)です。
特定のAPIに依存する実装コードは一切不要。APIキーを直接指定できないクライアント向けに **簡易 OAuth 2.1 サーバー** まで同梱しているため、**Claude.ai (Web版)** にもそのまま接続できます。
```mermaid
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サーバーがあなたのものに。
- 📥 **デプロイすら不要な最短経路**: Claude Desktop 等のローカルクライアントなら、cloneもビルドも不要。[npm](https://www.npmjs.com/package/beefchicken-mcp) から `npx beefchicken-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'` 構成。タイムアウト制限に強い堅牢設計。
- 📦 **4通りの配布形態**: Cloudflare Workers / Node.js / Docker イメージ(GHCR)/ npm CLI(`npx beefchicken-mcp`)。用途に応じて選択可能。
> **⚠️ 本番公開前の注意点**:
> 本サーバー自体にはレート制限がありません。公開時は Cloudflare の [Rate Limiting Rules](https://developers.cloudflare.com/waf/rate-limiting-rules/) やリバースプロキシ等で制御してください。また同梱の OAuth 2.1 サーバーは簡易実装です。詳細は [認証ドキュメント](docs/oauth.md) を確認してください。
---
## 🚀 クイックスタート
### 1. 仕様書の配置
`docs/openapi.yaml` を繋ぎたい API の OpenAPI 3.0 仕様書に差し替えます。
> **💡 ヒント**: Stripe や GitHub などの標準 OpenAPI は公式や [APIs.guru](https://github.com/APIs-guru/openapi-directory) 等から入手できます。
```bash
npm install
npm run generate # docs/openapi.yaml を解析し、src/generated/tools.json を自動生成
```
### 2. デプロイ / 実行
**ローカル MCP クライアント(Claude Desktop 等)の場合 — 最短:**
```bash
npx beefchicken-mcp --openapi /絶対パス/to/openapi.yaml
```
[npm パッケージ](https://www.npmjs.com/package/beefchicken-mcp)として配布しているため、cloneもデプロイも不要です(この経路では手順1の `npm install` / `npm run generate` も不要で、指定した仕様書を起動のたびにオンメモリで解析します)。クライアント設定への具体的な登録方法は[手順4](#4-ローカル-mcp-クライアントclaude-desktop-等から直接使う場合)を参照してください。
**Cloudflare Workers の場合:**
```bash
npx wrangler deploy
```
成功すると `https://beefchicken-mcp.<あなたのサブドメイン>.workers.dev/mcp` が発行されます(D1設定等の詳細は [デプロイ手順](docs/deploy.md) 参照)。
**Node.js の場合:**
```bash
API_BASE_URL=https://api.example.com npm run node:dev
```
**Docker の場合:**
```bash
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](https://github.com/Watanabebashi/BeefChicken-MCP/pkgs/container/beefchicken-mcp) から配布されており、ビルドは不要です。自分の `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`)に以下を追加してください。
```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 通信を壊すため、クライアント設定には使わないでください。手元のターミナルで単体動作を確認する用途に留めてください)。
---
## 📚 ドキュメント
| トピック | 内容 |
|---|---|
| 🔑 [認証](docs/oauth.md) | APIキーの送信方法・設計方針、claude.ai Web版向けカスタムコネクタの接続方法 |
| ☁️ [デプロイ](docs/deploy.md) | Cloudflare Workers / Node.js / Docker へのデプロイ手順 |
| ⚙️ [環境変数](docs/environment.md) | 全設定項目のリファレンス |
| 🛠 [開発](docs/development.md) | ローカル実行・テスト手順・OpenAPI更新・安全性チェック |
---
## 📜 ライセンス
MIT License. 詳細は [LICENSE](LICENSE) を参照してください。
TDQS
Scored across 4 tools
Each tool maps to a distinct operation: list, create, get by ID, and delete by ID. There is no meaningful overlap, and the names make the resource and action clear.
All tool names follow the same resource_verb pattern, with tasks_id_get and tasks_id_delete clearly indicating the ID path parameter. The consistent snake_case and operation-based suffixes make the set predictable.
Four tools is an appropriate, focused count for a simple task management server. Each tool covers a core operation without unnecessary bloat.
The server covers list, create, read, and delete operations for tasks, but notably lacks an update operation. This is a minor gap since delete-and-recreate is a possible workaround, but update is a standard task lifecycle need.