Baton について
Batonは、リクエスト、コレクション、環境をYAMLファイルで管理するAPIワークスペース向けのローカルMCPサーバーです。ファイルモードとデスクトップアプリモードがあり、編集の確認や実行の承認を制御できます。
主な機能
- 01リクエスト・コレクション・環境の読み書き
- 02リクエストと共有スクリプトの編集
- 03リクエストまたはコレクション全体の実行
- 04保存済みレスポンスからのモック提供
- 05アプリモードでの下書きと確認
活用シーン
- 01GitワークスペースでのAPIリクエスト管理
- 02アプリで確認するリクエスト案の作成
- 03必要に応じたリクエストやコレクションの実行
- 04保存済みレスポンスを使ったモックテスト
MCP 対応
stdioでローカル実行するMCPサーバーで、Batonのワークスペース、リクエスト、環境、スクリプト、モック用ツールを公開します。ファイルモードではYAMLを書き込み、アプリモードでは編集を下書きにし、送信や削除に確認を求めます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Baton — MCP のセットアップ
AI アシスタントが Baton ワークスペースで作業できるようにします。 Baton は Git ネイティブの API クライアント(Postman の代替製品)です。リクエスト、コレクション、 環境は、所有するリポジトリ内の通常の YAML ファイルです。MCP サーバーは ローカルで実行され、1 つの設定で、起動時に選択する 2 つのモードに対応します。
-
ファイルモード — ワークスペースで Baton アプリが開いていない場合、編集は YAML ファイルへの書き込みです。アプリが書き込むものと同じバイト列が書き込まれ、 他の変更と同様に Git のレビューを経ます。
-
アプリモード — ワークスペースでデスクトップアプリが開いている場合、編集は リクエストのタブに下書きとして反映され、承認するか破棄できます。送信は アプリを経由して実行され、アプリのシークレットが使われます。本番環境への送信や 削除には確認が必要です。また、アシスタントは、現在開いているリクエストと環境を 認識できます。
-
サーバー:
baton -
トランスポート: stdio(ローカルプロセス)
-
パッケージ:
@dudko.dev/baton-mcp— Node.js 24+ -
認証: なし — ユーザーの権限でローカル実行されます。シークレットがサーバーを経由することはありません。
できること
ファイルモードでは、アシスタントはワークスペースの読み取りと書き込みができますが、
--allow-run を追加しない限り、リクエストは送信できません。アプリモードでは、
すべての送信が画面上のアプリを経由します。
| ツール | 内容 |
|---|---|
workspace_info | コレクション、環境、スケジュール、読み込み時の問題、アプリが接続されているかどうかを確認します。 |
list_requests | メソッド、URL、タグを含むリクエストを一覧表示します。コレクションを指定して絞り込むこともできます。 |
get_request | パース済みリクエスト、生の YAML、認証情報の取得元を表示します。シークレットは参照情報としてのみ表示されます。 |
upsert_request | リクエストを決定的な YAML として書き込む(ファイルモード)か、アプリ内で下書きとして提案します。 |
move_request | ID とスクリプトを維持したまま、リクエストを移動または名前変更します。 |
delete_request | リクエストを削除します。アプリモードでは確認後に削除します。 |
upsert_collection | コレクションまたはフォルダーを作成または置換します。変数、認証、順序を設定できます。 |
list_environments | 変数とシークレットの名前を、それぞれのシークレットの参照元とともに一覧表示します。 |
upsert_environment | 環境を書き込みます(シークレット名のみ。シークレットの参照先には Vault を指定できます)。 |
get_script / upsert_script | リクエスト前、テスト、共有ライブラリのスクリプトを読み書きします。 |
run_request / run_collection | リクエストを実行するか、コレクション内のすべてのリクエストを実行します。ファイルモードでは --allow-run が必要です。アプリモードではアプリを経由して送信します。 |
list_examples / save_example | リクエストの保存済みレスポンスを一覧表示し、最後のレスポンスを保存します。 |
list_mocks / start_mock / stop_mock | mocks/<name>.yaml から 127.0.0.1 上にモックを起動し、サンプルを使って応答します。 |
app_state / select_request | アプリモード専用:アプリ内で開いている内容を確認し、アプリ内でリクエストを開きます。 |
アプリモードでは、リソース baton://app/state と baton://app/selection を
サブスクライブできます。アシスタントはクリック、承認された下書き、送信の完了を
発生と同時に認識できます。
Claude Code にインストールする(プラグイン)
/plugin marketplace add dudko-dev/baton-mcp-setup
/plugin install baton@baton
/reload-plugins
プラグインは現在のプロジェクトディレクトリでサーバーを起動するため、Baton
ワークスペース(baton.yaml があるフォルダー)で Claude
Code を開いてください。アプリモードを使うには、同じワークスペースで Baton アプリを開きます。サーバーの接続先を変更する場合や、
ファイルモードでアシスタントにリクエストを実行させる場合は、代わりに以下の手順で
--workspace <dir> および/または --allow-run を指定して手動で追加してください。アプリでは、Settings → Agents から
ワークスペースに .mcp.json を書き込めます。
マーケットプレイスを使わない場合は、サーバーを直接追加してください。
claude mcp add baton -- npx -y @dudko.dev/baton-mcp --workspace /path/to/workspace
他のクライアントから接続する
Claude Desktop
claude_desktop_config.json(Settings → Developer → Edit Config):
{
"mcpServers": {
"baton": {
"command": "npx",
"args": [
"-y",
"@dudko.dev/baton-mcp"
]
}
}
}
Cursor
~/.cursor/mcp.json または .cursor/mcp.json:
{
"mcpServers": {
"baton": {
"command": "npx",
"args": [
"-y",
"@dudko.dev/baton-mcp"
]
}
}
}
VS Code(GitHub Copilot / MCP)およびその他のクライアント
{
"servers": {
"baton": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dudko.dev/baton-mcp"
]
}
}
}
安全性
- ファイルモードでは、リクエストの実行はデフォルトで無効です。 アシスタントにリクエストを送信させる場合に限り、引数に
--allow-runを追加してください。ファイルの編集によって、リクエストが気付かないうちに送信されることはありません。 - アプリモードでは、常にユーザーが確認できます。 編集内容は下書きとして届き、承認または破棄できます。本番環境への送信と削除は、アプリでの確認後にのみ実行されます。
- シークレットはワークスペースの外に保管されます。 サーバーが読み書きするのは、シークレットの名前と
{{secret:name}}参照のみです。値は OS のセキュアストアまたは Vault に保管され、参照が必要な箇所に平文の値がある場合は拒否されます。レスポンスは値に基づいてマスクされ、本文は切り詰められます。また、Authorization、Cookie、Set-Cookie、X-API-Keyは名前に置き換えられます。 - サーバーが git に触れることはありません。 コミットはユーザー自身が行います。
| フラグ | 意味 |
|---|---|
--workspace <dir> | ワークスペースのルート、つまり baton.yaml があるフォルダーです(デフォルト:現在のディレクトリ)。 |
--allow-run | ファイルモードでエージェントにリクエストを実行させます。デフォルトでは無効です。アプリモードでの送信はアプリを経由します。 |
--agent <name> | アプリのバナーや確認画面で使用する、このエージェントの名前です。 |
トラブルシューティング
- 「not a Baton workspace」/クライアントに「Connection closed」と表示される — フォルダーに
baton.yamlがない場合、サーバーは起動時に終了します。ワークスペースで Claude Code を開くか、--workspace /path/to/workspaceを指定してサーバーを手動で追加してください。 run_requestが拒否される — サーバーはファイルモードです。--allow-runを追加するか、ワークスペースで Baton アプリを開き、サーバーを再起動してアプリモードにしてください。- アプリを開いているのに、編集内容がファイルに直接書き込まれる — モードはサーバーの起動時に決まります。そのワークスペースでアプリを開いた後、クライアントの MCP サーバーを再起動してください。
npm warn EBADENGINE … required: { node: '>=24' }の後、何も起きない — サーバーには Node.js 24 以降が必要です。クライアントが起動するシェルでnode --versionを実行してください。
サポート
- ウェブサイト:https://baton.dudko.dev
- お問い合わせ:[email protected]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。