LLM Provider MCP について
LLM Provider MCP は、ホスト型モデル API とローカルのコーディングエージェントを共通インターフェースで扱う Go ライブラリです。オプションのローカル stdio MCP サーバーは、非同期ジョブを他の CLI に委任し、状態を SQLite に保存します。
主な機能
- 01共通の Go モデルインターフェース
- 02ホスト型 API とローカルエージェント対応
- 03非同期ジョブの委任と照会
- 04SQLite によるジョブの永続化
- 05ジョブのキャンセルと出力管理
活用シーン
- 01Go アプリでモデル API とローカルエージェントを切り替える
- 02あるコーディングエージェントから別の CLI に作業を委任する
- 03非同期コーディングジョブの進捗と結果を後から確認する
MCP 対応
オプションの llm-provider-mcp はローカル stdio MCP サーバーとして動作します。エージェントとモデルの一覧、非同期ジョブの開始・状態確認・キャンセル用ツールを提供し、tmux セッションで実行して SQLite に状態を保存します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Go 向けマルチ LLM プロバイダー
multi-llm-provider-go は、共通のプロバイダーインターフェースを通じて、ホスト型 LLM API とローカルの
コーディングエージェントを利用するための Go ライブラリです。
モデルの実行方法として、相互に補完する次の 2 つの方法をサポートしています。
- API プロバイダーは、通常の SDK または HTTP トランスポートを通じてホスト型モデルを呼び出します。OpenAI、Anthropic、Bedrock、Vertex AI、Azure、OpenRouter が含まれます。
- コーディングエージェントプロバイダーは、Claude Code、Codex CLI、Cursor Agent、Pi をネイティブ SDK またはプロトコルセッションで実行し、ネイティブのツール、サブスクリプション、プロジェクトコンテキスト、認証済みセッションを維持します。
このリポジトリには、コーディングエージェント間で非同期処理を委任するためのオプションの MCP サーバー、llm-provider-mcp も含まれています。これはプロバイダーライブラリを公開する方法の 1 つであり、ライブラリの用途はこれに限りません。
これが必要な理由
アプリケーションでは、オーケストレーション層を作り直さずに、タスクごとに適切なモデルとトランスポートを選択できる必要があります。
一般的なリクエスト/レスポンス統合、予測可能なインフラストラクチャ、構造化出力、埋め込み、メディア生成などのモデルレベルの機能を求める場合は、直接 API を使用します。リポジトリの調査、ファイルの編集、コマンドの実行ができ、既存のローカルサブスクリプションを再利用できるエージェントを求める場合は、コーディングエージェント CLI を使用します。どちらも、同じ Go モデル抽象化の背後で利用できます。
flowchart LR
App[Go application] --> Provider[Shared provider interfaces]
Provider --> API[API and cloud adapters]
Provider --> CLI[Local coding-agent adapters]
API --> Hosted[Hosted models]
CLI --> Native[SDK / app-server / RPC]
CLI --> Tmux[Optional tmux sessions]
Native --> Agents[Claude Code / Codex / Cursor / Pi]
Tmux --> Agents
MCP[Optional MCP server] --> CLI
サポート対象のプロバイダー
コアの InitializeLLM ファクトリーは、テキストプロバイダーとコーディングエージェントプロバイダーに対し、同じ llmtypes.Model インターフェースを返します。
| プロバイダー ID | 統合先 | トランスポート |
|---|---|---|
openai | OpenAI | OpenAI Go SDK |
anthropic | Anthropic | Anthropic Go SDK |
openrouter | OpenRouter | OpenAI 互換 API |
bedrock | AWS Bedrock | AWS SDK |
vertex | Google Vertex AI と Gemini | Google Gen AI SDK |
azure | Azure AI | Azure/OpenAI 互換 API |
z-ai | Z.AI | OpenAI 互換 API |
kimi | Kimi/Moonshot | OpenAI 互換 API |
minimax, minimax-coding-plan | MiniMax | プロバイダー API |
claude-code | Claude Code | Agent SDK、オプションで tmux |
codex-cli | Codex CLI | app-server、オプションで tmux |
cursor-cli | Cursor Agent | Cursor SDK、オプションで ACP または tmux |
pi-cli | Pi | RPC |
専用ファクトリーでは、テキストモデルインターフェースに適合しない機能を提供します。
| 機能 | プロバイダー |
|---|---|
| 埋め込み | OpenAI、OpenRouter、Vertex AI、Bedrock |
| 画像生成 | Vertex AI、MiniMax Coding Plan、Codex CLI |
| 動画生成 | Vertex AI(Veo と Gemini Omni) |
| テキスト読み上げ | Vertex AI、MiniMax、ElevenLabs、Deepgram |
| 音声の文字起こし | Deepgram |
| 音楽生成 | ElevenLabs、MiniMax |
Gemini モデルは、直接 API アクセスの場合は Vertex AI を通じて、コーディングエージェントとして利用する場合は Pi を通じて使用できます。旧 Gemini CLI アダプターは削除されました。
共通機能
プロバイダーによってサポート状況は異なりますが、共通インターフェースでは次の機能を利用できます。
- テキスト生成とストリーミング
- ツール呼び出しと構造化出力
- トークン使用量、モデルのメタデータ、ロギング、イベントの発行
- 埋め込み
- 画像入力と生成
- 動画生成と会話形式の動画編集
- 音声生成と文字起こし
- 音楽生成
- ステートフルなコーディングエージェントのセッション、継続、ターミナルの進捗状況
クイックスタート:Go ライブラリ
モジュールをインストールします。
go get github.com/manishiitg/multi-llm-provider-go@latest
現在のモジュールには Go 1.25.12 以降が必要です。
プロバイダーを初期化し、返された llmtypes.Model を使用します。
package main
import (
"context"
"fmt"
"log"
llmproviders "github.com/manishiitg/multi-llm-provider-go"
"github.com/manishiitg/multi-llm-provider-go/llmtypes"
)
func main() {
model, err := llmproviders.InitializeLLM(llmproviders.Config{
Provider: llmproviders.ProviderOpenAI,
ModelID: "gpt-4.1-mini",
})
if err != nil {
log.Fatal(err)
}
response, err := model.GenerateContent(
context.Background(),
[]llmtypes.MessageContent{
llmtypes.TextParts(llmtypes.ChatMessageTypeHuman, "Explain tmux in one sentence."),
},
)
if err != nil {
log.Fatal(err)
}
if len(response.Choices) == 0 {
log.Fatal("provider returned no choices")
}
fmt.Println(response.Choices[0].Content)
}
選択したプロバイダーが必要とする認証情報を設定します。たとえば、OpenAI には
OPENAI_API_KEY を設定します。認証情報は Config.APIKeys で明示的に指定することも
できます。ストリーミング、ツール呼び出し、カスタムロギング、Bedrock、Vertex AI の例は
例をご覧ください。
設定
llmproviders.Config はプロバイダーの初期化を制御します。
| フィールド | 用途 |
|---|---|
Provider | API、クラウドプラットフォーム、コーディング CLI を選択します |
ModelID | モデルを選択します。対応している場合はプロバイダーのデフォルトが適用されます |
Temperature | サンプリング温度を公開しているプロバイダーの温度を設定します |
APIKeys | 環境変数の代わりに認証情報を明示的に指定します |
MaxRetries | 選択したモデルの再試行を設定します |
Logger / EventEmitter | ホストのロギング、トレース、モデルイベントを接続します |
Context | 初期化の有効期間とキャンセルを制御します |
一般的な認証情報の取得元は次のとおりです。
| プロバイダー | 環境変数またはネイティブ認証 |
|---|---|
| OpenAI | OPENAI_API_KEY |
| Anthropic | ANTHROPIC_API_KEY |
| OpenRouter | OPENROUTER_API_KEY |
| AWS Bedrock | 標準の AWS 認証情報チェーンと AWS_REGION |
| Vertex AI | VERTEX_API_KEY、GOOGLE_API_KEY、または Google アプリケーション認証情報 |
| Azure AI | AZURE_AI_ENDPOINT と AZURE_AI_API_KEY |
| Z.AI / Kimi | ZAI_API_KEY、KIMI_API_KEY |
| MiniMax | MINIMAX_API_KEY または MINIMAX_CODING_PLAN_API_KEY |
| ElevenLabs / Deepgram | ELEVENLABS_API_KEY、DEEPGRAM_API_KEY |
| コーディングエージェント CLI | 既存のネイティブ CLI ログインまたはプロバイダー設定 |
一般的なプロバイダー認証情報については、.env.example をご覧ください。モデル、 エンドポイント、フォールバック、テスト固有の変数については、それらを使用するプロバイダー アダプターおよびテストの近くに記載されています。
トランスポートを変更するには、まずプロバイダーを変更します。
config.Provider = llmproviders.ProviderAnthropic // direct API
config.Provider = llmproviders.ProviderBedrock // cloud API
config.Provider = llmproviders.ProviderCodexCLI // local coding agent
config.Provider = llmproviders.ProviderCursorCLI // local coding agent
呼び出し範囲が限定されたコーディングエージェント呼び出しでは、プロセスの作業ディレクトリと
一時セッションを自動的に使用できます。長時間稼働するホストアプリケーションでは、
CodingAgentWorkingDirOption、CodingAgentInteractiveSessionOption、
CodingAgentPersistentInteractiveOption を明示的に渡してください。プロバイダー固有のオプションでは、
モデル、承認ポリシー、再開 ID、ツール、ストリーミングの動作も制御できます。
コーディングエージェントのトランスポート
コーディングエージェントのアダプターは、ネイティブのコーディング CLI をエージェントのループを再実装せずにプロバイダーとして利用できるようにします。各 CLI の既存のログインとモデルへのアクセスを使用し、その CLI のネイティブなファイルツールとシェルツールを使ってローカルプロジェクトで実行されます。
ネイティブの SDK とプロトコルトランスポートがデフォルトです。ターミナルセッションが必要な場合は、tmux を明示的に利用できます。
| プロバイダー | デフォルト | 環境変数による上書き |
|---|---|---|
| Claude Code | SDK | CLAUDE_CODE_TRANSPORT=sdk または tmux |
| Codex | app-server | CODEX_CLI_TRANSPORT=app-server または tmux |
| Cursor | SDK | CURSOR_CLI_TRANSPORT=sdk、acp または tmux |
| Pi | RPC | ターミナルトランスポートなし |
これらの変数をバックエンドに設定し、再起動してください。ネイティブ起動に失敗しても、tmux に自動で切り替わることはありません。SDK モードには Node.js と、対応する @anthropic-ai/claude-agent-sdk または @cursor/sdk パッケージが必要です。アダプターはグローバルな npm プレフィックスより先に、管理対象 CLI のインストールプレフィックスを検索します。また、明示的な CLAUDE_AGENT_SDK_PATH と CURSOR_SDK_PATH による上書きもサポートされています。
| CLI | プロバイダー ID | 認証 |
|---|---|---|
| Claude Code | claude-code | 既存の Claude Code ログインまたはスコープ付き OAuth トークン |
| Codex CLI | codex-cli | 既存の Codex ログイン |
| Cursor Agent | cursor-cli | 既存の Cursor ログイン |
| Pi CLI | pi-cli | 既存の Pi/プロバイダー設定 |
オプションの tmux トランスポートの要件:
- macOS または Linux
- tmux 3.x 以降
- インストール済みで認証済みのコーディング CLI が少なくとも 1 つ
このライブラリは、セッションのライフサイクル、再開、入力、中断、ペインのキャプチャ、クリーンアップのヘルパーを提供するため、ホストアプリケーションは独自のワークフローの一部としてコーディングエージェントを管理できます。
モジュール構成
multi-llm-provider-go/
├── providers.go # Provider IDs, configuration, initialization
├── provider_*.go # Shared provider behavior and media factories
├── interfaces/ # Logging, events, and public support contracts
├── llmtypes/ # Messages, responses, tools, streams, options
├── pkg/adapters/ # API, cloud, media, and coding-CLI adapters
├── pkg/codingagentjob/ # Durable asynchronous job execution
├── pkg/codingagentmcp/ # Optional MCP tool surface
├── pkg/tmuxcapture/ # Terminal progress capture and cleanup
├── cmd/llm-chat/ # Local provider chat client
├── cmd/llm-test/ # Manual provider contract runner
└── cmd/llm-provider-mcp/ # Optional delegation MCP server
llmtypes.Model は、テキストのリクエスト/レスポンスを扱う中心的なインターフェースです。その他に、埋め込み、画像生成、動画生成、音声生成と文字起こし、音楽生成のインターフェースもあります。
オプション:MCP による非同期委任
llm-provider-mcp は、コーディングエージェントのプロバイダーをローカルの stdio MCP サーバーとしてパッケージ化します。Codex または Claude Code のホストは、別のコーディング CLI に作業をキュー登録して作業を続け、後から結果を取得できます。ジョブは SQLite に保存され、分離された tmux セッションで実行されます。
委任を行うプロジェクトにインストールしてください。
curl -fsSL https://raw.githubusercontent.com/manishiitg/llm-provider-mcp/main/scripts/install-mcp.sh | sh
セットアップでは、インストール済みの CLI を検出し、現在のプロジェクト用に選択したホストとターゲットを登録して、認証を確認し、委任スキルをインストールします。また、このサーバーは公式 MCP Registryに io.github.manishiitg/llm-provider-mcp として公開されています。
以下の 5 つのツールを公開します。
| ツール | 用途 |
|---|---|
list_coding_agents | 有効なターゲットと機能を一覧表示する |
list_coding_agent_models | 利用可能なモデルセレクターを調べる |
delegate_coding_agent | 非同期コーディングジョブを開始する |
get_coding_agent_job | 進捗、ターミナル出力、または最終結果を取得する |
cancel_coding_agent_job | キュー登録済みまたは実行中のジョブを停止する |
MCP のワークフロー全体については、インストールと委任ワークフローを参照してください。
セキュリティと信頼
- API の認証情報は、ホストプロセスまたはプロバイダーの通常の認証情報チェーン内に保持されます。
- コーディングエージェントの認証情報は、ネイティブ CLI が管理します。
- tmux を使用するエージェントは、ローカルユーザーのファイルシステムとプロセスに対する権限を持ちます。tmux はトランスポートであり、サンドボックスではありません。
- コーディングエージェントは、作業ツリーを変更したりコマンドを実行したりできます。委任された変更を受け入れる前に、レビューしてテストしてください。
LLM_PROVIDER_MCP_WORKSPACE_ROOTSを使用すると、MCP サーバーが受け付けるディレクトリを制限できますが、オペレーティングシステムのサンドボックスが作成されるわけではありません。
機密性の高いリポジトリでコーディングエージェントの無人実行を有効にする前に、セキュリティと信頼をお読みください。Linux の共有ホストでは、各ユーザーの CLI をそのユーザー自身の Linux アカウントで実行してください:スロット起動。
テストとカバレッジ
ホスト型 API とターミナル TUI では異なる問題が発生するため、このリポジトリでは複数の層でテストを行っています。
| 層 | 検証内容 | 通常の CI |
|---|---|---|
| ユニットテストとアダプターテスト | リクエスト変換、イベント解析、メタデータ、料金、オプション、クリーンアップ | はい |
| リプレイテストとフィクスチャテスト | ネットワークに接続せずにプロバイダーのレスポンスとターミナルの記録を検証 | はい |
| コントラクトテスト | API プロバイダーとコーディングエージェントに共通する動作 | はい |
| 実 API テスト | 認証、実際のレスポンス形式、ストリーミング、ツール、メディア | オプトイン |
| 実際のコーディングエージェントの E2E テスト | tmux の起動、プロンプト、ツール、再開、ライブ入力、キャンセル、分離 | オプトイン |
| 下流のコンパイルチェック | MCP Agent および MCP Agent Builder との公開 API 互換性 | はい |
API プロバイダーのカバレッジは一様ではありません。以下の一覧は、現在リポジトリにあるテストと手動コマンドを反映しています。
| プロバイダー | 決定的テストまたはリプレイテストのカバレッジ | オプトインの実 API Go テスト | 手動の llm-test コマンド |
|---|---|---|---|
| OpenAI | はい | はい | はい |
| Anthropic | はい | はい | はい |
| Bedrock | はい | はい | はい |
| Vertex AI | はい | はい | はい |
| Azure AI | リプレイ | 未対応 | はい |
| OpenRouter | リプレイ | 未対応 | はい |
| Z.AI | 限定的 | はい | はい |
| Kimi | モデルメタデータ | はい | 未対応 |
| MiniMax | はい | 認証情報が必要 | はい |
| ElevenLabs / Deepgram | 未対応 | 未対応 | 未対応 |
「はい」は、すべての機能がカバーされていることを意味しません。 API プロバイダーのテストコントラクトでは、自動 Go テスト、リプレイ/手動スモークテストのカバレッジ、部分的なカバレッジ、機能ごとの既知の不足を区別しています。
コーディングエージェント認定スイートでは、稼働中の 4 つの CLI プロバイダーすべてをカバーしています。
| コントラクト領域 | Claude Code | Codex CLI | Cursor Agent | Pi CLI |
|---|---|---|---|---|
| tmux の起動と作業ディレクトリ | ✓ | ✓ | ✓ | ✓ |
| ネイティブのシステム指示とプロンプトの貼り付け | ✓ | ✓ | ✓ | ✓ |
| ターミナルの進捗表示と完了検出 | ✓ | ✓ | ✓ | ✓ |
| MCP ブリッジとツールポリシー | ✓ | ✓ | ✓ | ✓ |
| 永続セッションと継続 | ✓ | ✓ | ✓ | ✓ |
| ライブ入力、キャンセル、クリーンアップ | ✓ | ✓ | ✓ | ✓ |
| 並列処理/セッションの分離 | ✓ | ✓ | ✓ | ✓ |
コーディングエージェントのマトリックスには、リリースをブロックするコントラクト領域が示されています。P0 以外のより広範な認定上の不足は、knownCertificationGaps で明示的に追跡しています。これらのチェックは、すべての上流 CLI バージョンが同じように動作することを保証するものではありません。実テストは明示的な環境変数によって制御され、該当する CLI へのログインまたはプロバイダーの認証情報が必要です。
オフラインのテストスイートを実行し、手動テスト用クライアントをビルドします。
go test -p 1 ./...
make build
./bin/llm-test --help
プロバイダーごとの詳細なカバレッジと実テストのコマンドについては、以下を参照してください。
コード品質とシークレットスキャン
このプロジェクトでは、静的解析に golangci-lint を、シークレットスキャンに gitleaks を使用しています。
make lint
make scan-secrets
ドキュメント
- Go プロバイダー API
- サンプル
- コーディングエージェントのプロバイダーとモデル
- MCP のインストール
- 委任ワークフロー
- アーキテクチャ
- セキュリティと信頼
- API プロバイダーのテストコントラクト
- コーディングエージェントの tmux コントラクト
- リプレイと手動テストランナー
- ロードマップ
開発
make build
make build-mcp
go test -p 1 ./...
golangci-lint run --timeout=5m ./...
CI では、意図しない公開 API の破壊を防ぐため、現在のチェックアウトに対して MCP Agent と MCP Agent Builder のコンパイルチェックも行います。
プルリクエストを作成する前に、CONTRIBUTING.md を確認してください。セキュリティ上の問題は、公開のイシューではなく SECURITY.md に従って報告してください。
ライセンス
multi-llm-provider-goは、2026-10-09より、Business Source License 1.1に基づいてソースコードを利用できます。個人プロジェクト、開発、テスト、評価、教育、研究の目的であれば、閲覧、変更、実行できます。事業の運営に使用する場合、または他者に提供する場合は、商用ライセンスが必要です。agentworkshq.com/aboutからお問い合わせください。各バージョンは、ライセンスに定められた変更日にApache License 2.0に移行します。2026-10-09より前に公開されたバージョンは、引き続きMIT Licenseの下で利用できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。