Dapr MCP Server について
dapr-mcp-serverは、Daprの構成要素をAIエージェント向けのツールとして提供するGo製MCPサーバーです。Daprサイドカーを使う環境向けで、利用可能なコンポーネントに応じてツールを動的に登録し、stdioとストリーミングHTTPに対応します。
主な機能
- 01DaprのステートとPub/Subのツール
- 02サービス呼び出しとアクター操作
- 03シークレット、バインディング、ロック、暗号化
- 04稼働中のコンポーネントに応じた動的登録
- 05OpenTelemetryのトレースとメトリクス
活用シーン
- 01AIエージェントによるDaprステートの読み書き
- 02設定済みPub/Subコンポーネントを介したイベント配信
- 03サービスや仮想アクターの呼び出し
- 04ローカルまたはリモートのMCPクライアントへのDapr機能提供
MCP 対応
サイドカーを介してDaprの構成要素をMCPツールとして公開します。stdioとストリーミングHTTPに対応し、OIDC、SPIFFE、Dapr Sentryによるリクエスト制御も選択できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e DAPR_GRPC_PORT -e DAPR_API_TOKEN -e DAPR_MCP_SERVER_LOG_LEVEL ghcr.io/dapr/dapr-mcp-server:v0.0.3DAPR_GRPC_PORTgRPC port of the Dapr sidecarDAPR_API_TOKENシークレットDapr API token, if the sidecar requires oneDAPR_MCP_SERVER_LOG_LEVELLog level, written as JSON to stderrローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/dapr/dapr-mcp-server:v0.0.3stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
dapr-mcp-server
Dapr の構成要素を AI エージェント向けのツールとして公開する、Model Context Protocol(MCP)サーバーです。
概要
dapr-mcp-server は、Dapr サイドカーの前段に配置され、Dapr の各構成要素(ステート、Pub/Sub、シークレット、サービス呼び出し、アクター、バインディング、分散ロック、暗号化、会話コンポーネント)に対応する厳選されたツールを AI エージェントに提供する Go 製 MCP サーバーです。ツールは、稼働中のコンポーネントのセットに応じて動的に登録されます。デプロイ環境に Pub/Sub ブローカーがなければ、Pub/Sub ツールは公開されません。
トランスポートは、ローカル IDE 連携用のstdio(Claude Desktop、Cursor、VS Code、Claude Code)と、リモートまたは共有環境用のストリーマブル HTTPをサポートしています。すべてのツール呼び出しに OpenTelemetry のスパンとメトリクスが付与され、任意でログをエクスポートできます。リクエストは、OIDC、SPIFFE、Dapr Sentry、またはこれらを組み合わせた方式で制御できます。
詳細なドキュメントは docs.dapr.io / developing-ai / mcp をご覧ください。
クイックスタート
dapr run を使って、Dapr サイドカーの隣でバイナリを実行します(インストールから入手できます)。
dapr init
# stdio, for local MCP clients that launch the server themselves
dapr run --app-id dapr-mcp-server --resources-path resources -- dapr-mcp-server
# streamable HTTP, for remote clients
dapr run --app-id dapr-mcp-server --resources-path resources -- dapr-mcp-server --http :8080
--http を指定すると、任意の MCP クライアントを http://localhost:8080/ に接続できます。コンテナーイメージは Kubernetes 向けです。Dapr サイドカーインジェクターが、dapr.io/enabled: "true" および dapr.io/app-id の Pod アノテーションを通じてサイドカーを追加します(コンポーネント、認証、OTEL、検証を含む一連の手順については、スタートガイドをご覧ください)。
インストール
| 方法 | コマンド |
|---|---|
| コンテナー | docker pull ghcr.io/dapr/dapr-mcp-server:latest |
| バイナリ | Releases からダウンロードし、PATH に配置します |
| ソースから(Go 1.26.6 以降) | go install github.com/dapr/dapr-mcp-server/cmd/dapr-mcp-server@latest |
このサーバーは、公式の MCP Registry に io.github.dapr/dapr-mcp-server として登録されているため、レジストリを参照する MCP クライアントからコンテナーとしてインストールできます。
設定
環境変数の一覧は、設定ガイドをご覧ください。
| フラグ | デフォルト | 用途 |
|---|---|---|
--http <addr> | 未設定(stdio) | stdin/stdout の代わりに、このアドレスでストリーマブル HTTP を提供します。ヘルスプローブは /livez、/readyz、/startupz で提供されます。 |
--health-check | false | 実行中のサーバーの /livez をプローブし、200 が返る場合は 0、それ以外は 1 で終了します。コンテナーの HEALTHCHECK で使用されます。 |
--health-check-addr <host:port> | --http の値、未設定の場合は localhost:8080 | --health-check がプローブするアドレスです。0.0.0.0 などのワイルドカードホストは localhost としてプローブされます。 |
--version | false | バージョンを表示して終了します。 |
ログは JSON 形式で stderr に出力されるため、stdout の stdio トランスポートに混ざることはありません。Dapr サイドカーに到達できない間、/readyz は 503 を返します。
HTTP トランスポート固有の設定:
| 環境変数 | デフォルト | 用途 |
|---|---|---|
DAPR_MCP_CORS_ORIGIN | 未設定(CORS ヘッダーなし) | ブラウザーからサーバーへの呼び出しを許可するオリジンです。例:https://app.example.com。別のオリジンにあるブラウザーベースの MCP クライアントからアクセスする必要がある場合にのみ設定してください。 |
ドキュメント
| ページ | 目的 |
|---|---|
| 概要 | サーバーの概要、アーキテクチャ、機能、使用するタイミング |
| はじめに | インストール、コンポーネントの設定、実行、動作確認 |
| ツールリファレンス | 各ツールのスキーマ、入力、出力、安全性フラグ |
| 設定 | 環境変数、フラグ、トランスポート設定 |
| 認証 | OIDC、SPIFFE、Dapr Sentry、ハイブリッドモード |
| オブザーバビリティ | トレース、メトリクス、ログ |
このリポジトリに貢献するAIコーディングエージェントは、AGENTS.md を参照してください。人間の貢献者は、CONTRIBUTING.md を参照してください。
ツールの概要
すべてのツールと、ツールリファレンス内の各項目へのリンクです。コアツールは常に登録されます。条件付きツールは、対応する Dapr コンポーネントが存在する場合にのみ登録されます。サーバーは Dapr のホットリロードに対応するコンポーネントを監視します。クライアントがツールの一覧を取得するか get_components を呼び出すたびに、サイドカーを確認し、ビルディングブロックの最初のコンポーネントが現れたときにそのツールを追加し、最後のコンポーネントがなくなったときに削除して、接続中のクライアントにツール一覧が変更されたことを通知します。
| カテゴリ | ツール | 登録条件 | 備考 |
|---|---|---|---|
| メタデータ | get_components | コア | 必ず最初に呼び出してください |
| 呼び出し | invoke_service | コア | サービス間の HTTP 呼び出し |
| アクター | invoke_actor_method | コア | 仮想アクターのメソッド呼び出し |
| 状態 | save_state | state.* | 冪等な保存 |
| 状態 | get_state | state.* | 読み取り専用 |
| 状態 | delete_state | state.* | 破壊的操作、冪等 |
| 状態 | execute_transaction | state.* | アトミックな一括処理 |
| Pub/Sub | publish_event | pubsub.* | 冪等ではありません |
| Pub/Sub | publish_event_with_metadata | pubsub.* | ヘッダー/TTLを追加 |
| バインディング | invoke_output_binding | bindings.* | 外部システムとの入出力 |
| シークレット | get_secret | secretstores.* | 単一のシークレット |
| シークレット | get_bulk_secrets | secretstores.* | 高リスク。一括取得 |
| 会話 | converse_with_llm | conversation.* | 下流の LLM に処理を委譲 |
| 暗号 | encrypt_data | crypto.* | RSA 暗号化 |
| 暗号 | decrypt_data | crypto.* | RSA 復号 |
| ロック | acquire_lock | lock.* | 分散ミューテックス |
| ロック | release_lock | lock.* | acquire_lock と組み合わせて使用 |
開発
go build -o dapr-mcp-server ./cmd/dapr-mcp-server
go test -race ./...
golangci-lint run ./...
貢献者/AI エージェント向けのガイド(ビルドコマンド、ツール追加の手順、テスト方針、DCO の手順)は、AGENTS.md を参照してください。
コントリビューション
コントリビューションを歓迎します。イシューテンプレートからイシューを作成し、DCOに従ってコミットに署名し、プルリクエストテンプレートに従ってください。ワークフロー全体については、CONTRIBUTING.mdをご覧ください。
セキュリティ上の問題については、公開イシューを作成しないでください。代わりに、Dapr のセキュリティ報告プロセスに従ってください。
ライセンス
Apache 2.0 — LICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。