muthuishere/mcp-server-bash-sdk
MCP server SDK/example implemented entirely in bash — build a Model Context Protocol server with no runtime dependency beyond a POSIX shell.
📦 mcp-server-bash-sdk とは何ですか?
完全に Bash で書かれた、Model Context Protocol (MCP) 2026-07-28 の非常に小さな、オーバーヘッドゼロの実装です。これにより、AIエージェントクライアントに get_weather や list_files などの tool 関数を、大規模な MCP サーバーが使用するのと同じ JSON-RPC 形式で公開できますが、Node や Python などの重いランタイムを導入する必要はありません。
🎯 コアのアイデア
- 状態なし、リクエストごとのプロトコル – 2026-07-28 リビジョンではハンドシェイクやセッションが削除されたため、各リクエストは単一の JSON ラインであり、シンプルな read-loop で処理可能です。
- 1つのコードベース、2つのトランスポート – 同じ Bash スクリプトが stdio(LLMエージェントがサブプロセスを起動する通常の方法)または ローカル HTTP POST エンドポイント(
socat/netcatを使用)の両方でリクエストを処理できます。 - 名前によるツール発見 –
tool_で始まる名前の Bash 関数は、自動的にserver/discover応答にリストアップされ、tools/callで呼び出すことができます。
🛠️ 主要なコンポーネント(README に記載)
| ファイル / ディレクトリ | 役割 |
|---|---|
mcpserver_core.sh |
JSON-RPC フレーミング、MCP メソッドディスパッチ、バージョンネゴシエーション、および公式 JSON スキーマ(jq とオプションの jsonschema を使用)に基づく出力の検証を処理します。 |
mcpserver_http.sh |
コアを ストリーミング HTTP リスナー(POSTのみ、ループバックのみ)に変換する薄いラッパーです。 |
moviemcpserver.sh(およびその他の例) |
コアを source し、ビジネスロジックを含む tool_* 関数を定義する具体的なサーバースクリプトです。 |
assets/ |
サーバー(discover ペイロード)とツール一覧(tools ペイロード)を記述する JSON ファイル。 |
spec/ |
コンプライアンステストスイートで使用されるバニラ化された MCP スキーマ。 |
docs/adr/ および docs/spikes/ |
アーキテクチャ決定記録(ADR)と、macOS、Debian、Alpine などでの特定の Bash 動作を検証した実験用スクリプト。 |
examples/ |
映画カタログ、gitラッパー、天気API、ファイルサーバーの4つの実行可能なサーバーデモに加え、ステップバイステップの「自分だけのサーバー構築」ガイド。 |
test_*.sh および scripts/test-linux.sh |
コアロジック、ディスカバリの形状、スキーマ準拠、および複数の Linux フレーバーでの両方のトランスポートをカバーするユニットおよび統合テスト。 |
🚀 クイックスタート(初期設定フロー)
- クローンして実行可能に
git clone https://github.com/muthuishere/mcp-server-bash-sdk cd mcp-server-bash-sdk chmod +x mcpserver_core.sh moviemcpserver.sh - stdio でリクエストを実行
echo '{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"}}}' | ./moviemcpserver.sh - ローカル HTTP エンドポイントとして実行
./moviemcpserver.sh --http # http://127.0.0.1:3000/mcp でリッスン - テストスイートを実行(
jqが必要;スキーマテストにはオプションでpython+jsonschema)./test_mcpserver_core.sh # 31 個のユニットテスト ./test_http_transport.sh # 19 個の HTTP テスト ./scripts/test-linux.sh all # Docker を使って Debian、Ubuntu、Alpine で検証
🧩 Bash で あなたの MCP サーバーを構築する方法
- ラッパースクリプトを作成(例:
weatherserver.sh)。 - 設定パスを設定(
MCP_CONFIG_FILE、MCP_TOOLS_LIST_FILE、MCP_LOG_FILE)をmcpserver_core.shをsourceする 前 に設定します。 tool_*関数を定義 – 各関数は単一の JSON 文字列引数を受け取り、成功時は結果をechoし、0を返す必要があります。エラー時は説明文をechoし、1を返します。コアはこれをisError: trueを含む JSON 応答に変換します(HTTP/stdio のラウンドトリップは成功とみなされます)。- トランスポートを選択 – 引数なしでスクリプトを実行すると stdio、
--http(およびオプションのMCP_HTTP_PORT、MCP_HTTP_BIND、MCP_ALLOWED_ORIGINS)で HTTP を選択できます。 - MCP クライアント設定にサーバーを追加 – 例として、LLMアシスタントの
mcp.serversJSON でtypeをstdio、commandをあなたのスクリプトに設定します。
📌 制限事項(作者がリストアップ)
- ローカルのみの HTTP – TLS や認証なし;公開するにはリバースプロキシが必要。
- SSE / ストリーミング応答なし – 2026-07-28 リビジョンではセッションベースのストリームが削除されたため、進行状況通知はサポートされません。
- 単一クライアント stdio – 1つのプロセスが1つのクライアントを同時に処理(約30 req/s)。
- 機能の欠落 –
resources、prompts、MRTR 入力、および「tasks」拡張なし。 - バージョンロック – 2026-07-28 リビジョンのみ実装済み;古い MCP バージョンは拒否されます。
📚 ドキュメントとコミュニティ
- 完全なドキュメントサイト – https://muthuishere.github.io/mcp-server-bash-sdk/
- アーキテクチャ決定記録 –
docs/adr/は SDK の設計がこうなった理由を説明しています。 - Discord コミュニティ – AgentNexus(https://discord.gg/V9C2kvHC8D)には
#mcp-bash-sdkチャンネルがあり、質問や実例共有が可能です。 - 作者 – deemwar(https://examples.deemwar.com)がメンテナンス;プロダクション支援は
io@deemwar.comまで。
✅ TL;DR
AIエージェントにシンプルなツールを公開する必要がある場合(例:プロトタイピング、ローカル開発、Node/Python のインストールが望ましくない環境)、このリポジトリは、stdio とローカル HTTP 両方のバインディングを備えた、仕様準拠の実装を提供します。徹底的なテストと、独自のツール関数を追加するための明確なガイドも付いています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト