ブルーノ API MCP サーバー
Bruno APIコレクションをMCPツールとして公開するモデルコンテキストプロトコル(MCP)サーバー。このサーバーを使用すると、MCPプロトコルを介してBruno APIコレクションとやり取りし、AIエージェントや他のMCPクライアントからAPIコレクションにアクセスできるようになります。
これが重要な理由: ソースコードとデータの連携
開発者が API を統合する必要がある場合、通常、次の 3 つの主要な課題に直面します。
システム境界を越えたデバッグ: 別々のコードおよびデータ環境にわたる問題の診断には、継続的なコンテキストの切り替えが必要となり、トラブルシューティングが非効率的になります。
カスタム ツールの作成: サードパーティ API 統合ごとにカスタム ツールの構築と保守が必要となり、開発のオーバーヘッドと技術的負債が発生します。
サービス UI の構築: すべてのバックエンド サービスのユーザー インターフェイスを開発すると、複雑さが増し、メンテナンス コストも大幅に増加します。
このサーバーは、ソースコードとデータを共存させることで、まさにこれらの問題を解決します。Bruno APIコレクションをモデルコンテキストプロトコルツールに変換することで、以下のことが可能になります。
完全なコンテキストで以前は別々だった環境をデバッグ
追加のカスタム開発なしで、あらゆるAPIをエージェント対応ツールに変換します
AIインターフェースを介して制御できるヘッドレスサービスを構築する
メンテナンスのオーバーヘッドを削減しながら API 統合を加速する必要がある開発チームにとって、このアプローチは、これまで複雑だった統合を簡単かつアクセスしやすいものにすることで、可能性を根本的に変えます。
Related MCP server: Scenario Word
特徴
Bruno API コレクションを MCP ツールに自動変換
さまざまなAPI構成の環境管理
SSEトランスポートを使用したHTTP
クロスオリジンサポート
APIコレクション管理用の組み込みツール
使用法
依存関係をインストールします:
npm installBruno API コレクションを使用してサーバーを起動します。
node --loader ts-node/esm src/index.ts --bruno-path /path/to/bruno/collection [--environment env_name] [--include-tools tool1,tool2,tool3] [--exclude-tools tool4,tool5]オプション:
--bruno-pathまたは-b: Bruno API コレクション ディレクトリへのパス (必須)--environmentまたは-e: 使用する環境の名前(オプション)--include-tools: 含めるツール名のカンマ区切りリスト。他のツールは除外されます(オプション)--exclude-tools: 除外するツール名のカンマ区切りリスト(オプション)
ツールのフィルタリング オプションでは、両方の形式がサポートされています。
--include-tools tool1,tool2,tool3 # Space-separated format --include-tools=tool1,tool2,tool3 # Equals-sign formatクライアントから接続:
ローカル接続:
http://localhost:8000/sseWindows から WSL へ:
http://<WSL_IP>:8000/sseWSL IP を取得するには、次のコマンドを実行します:
hostname -I | awk '{print $1}'
定義済みスクリプト
リポジトリには、一般的なユースケース向けに事前定義された npm スクリプトがいくつか含まれています。
# Start the server with default settings
npm start
# Start with CFI API path
npm run start:cfi
# Start with local environment
npm run start:local
# Start with only specific tools included
npm run start:include-tools
# Start with specific tools excluded
npm run start:exclude-tools発達
テストの実行
すべてのテストを実行します。
npm test特定のテスト ファイルを実行します。
npm test test/bruno-parser-auth.test.tsデバッグ
サーバーは詳細なログ出力のためにdebugライブラリを使用します。DEBUG環境変数を設定することで、異なるDEBUG名前空間を有効にすることができます。
# Debug everything
DEBUG=* npm start
# Debug specific components
DEBUG=bruno-parser npm start # Debug Bruno parser operations
DEBUG=bruno-request npm start # Debug request execution
DEBUG=bruno-tools npm start # Debug tool creation and registration
# Debug multiple specific components
DEBUG=bruno-parser,bruno-request npm start
# On Windows CMD:
set DEBUG=bruno-parser,bruno-request && npm start
# On Windows PowerShell:
$env:DEBUG='bruno-parser,bruno-request'; npm start利用可能なデバッグ名前空間:
bruno-parser: Bruno API コレクション解析と環境処理bruno-request: リクエストの実行とレスポンスの処理bruno-tools: ツールの作成とMCPサーバーへの登録
ツール
環境の一覧
Bruno API コレクションで利用可能なすべての環境を一覧表示します。
パラメータは必要ありません
戻り値:
利用可能な環境のリスト
現在アクティブな環境
エコー
送信したメッセージをエコーバックします (テストに便利です):
パラメータ:
message(文字列)
ブルーノ API コレクション構造
Bruno API コレクションは、標準の Bruno 構造に従う必要があります。
collection/
├── collection.bru # Collection settings
├── environments/ # Environment configurations
│ ├── local.bru
│ └── remote.bru
└── requests/ # API requests
├── request1.bru
└── request2.bruコレクション内の各リクエストは自動的に MCP ツールに変換され、MCP プロトコルを通じて使用できるようになります。
ツールでカスタムパラメータを使用する
Bruno API コレクションから生成されたツールを呼び出すときは、以下を指定してリクエストをカスタマイズできます。
環境オーバーライド
特定のリクエストに対して異なる環境を指定できます。
{
"environment": "us-dev"
}これにより、デフォルトの環境ではなく、指定された環境の変数が使用されます。
変数の置き換え
単一のリクエストに対して特定の変数をオーバーライドできます。
{
"variables": {
"dealId": "abc123",
"customerId": "xyz789",
"apiKey": "your-api-key"
}
}これらの変数は、URL、ヘッダー、リクエスト本文で置換されます。例えば、リクエストURLが以下の場合:
{{baseUrl}}/api/deal/{{dealId}}そして、 { "variables": { "dealId": "abc123" } }を指定すると、実際に使用される URL は次のようになります。
https://api.example.com/api/deal/abc123クエリパラメータ
クエリ パラメータを直接追加または上書きできます。
{
"query": {
"limit": "10",
"offset": "20",
"search": "keyword"
}
}これにより、元のリクエストで定義されているかどうかに関係なく、これらのクエリパラメータがURLに追加されます。例えば、リクエストURLが以下の場合:
{{baseUrl}}/api/dealsそして{ "query": { "limit": "10", "search": "keyword" } }を指定すると、実際に使用される URL は次のようになります。
https://api.example.com/api/deals?limit=10&search=keywordこのアプローチは、変数を使用してクエリ パラメータをオーバーライドするよりも簡潔で明示的です。
カスタムボディパラメータ
リクエスト本文にカスタム パラメータを指定することもできます。
{
"body": {
"name": "John Doe",
"email": "john@example.com"
}
}完全な例
以下は、4 種類のカスタマイズをすべて組み合わせた完全な例です。
{
"environment": "staging",
"variables": {
"dealId": "abc123",
"apiKey": "test-key-staging"
},
"query": {
"limit": "5",
"sort": "created_at"
},
"body": {
"status": "approved",
"amount": 5000
}
}ライセンス
マサチューセッツ工科大学