mcpField
L
LLM Provider MCP

LLM Provider MCP

ローカル
github.com/manishiitgAI・エージェント1今日更新

LLM Provider MCP について

LLM Provider MCP は、ホスト型モデル API とローカルのコーディングエージェントを共通インターフェースで扱う Go ライブラリです。オプションのローカル stdio MCP サーバーは、非同期ジョブを他の CLI に委任し、状態を SQLite に保存します。

主な機能

  1. 01共通の Go モデルインターフェース
  2. 02ホスト型 API とローカルエージェント対応
  3. 03非同期ジョブの委任と照会
  4. 04SQLite によるジョブの永続化
  5. 05ジョブのキャンセルと出力管理

活用シーン

  1. 01Go アプリでモデル API とローカルエージェントを切り替える
  2. 02あるコーディングエージェントから別の CLI に作業を委任する
  3. 03非同期コーディングジョブの進捗と結果を後から確認する

MCP 対応

オプションの llm-provider-mcp はローカル stdio MCP サーバーとして動作します。エージェントとモデルの一覧、非同期ジョブの開始・状態確認・キャンセル用ツールを提供し、tmux セッションで実行して SQLite に状態を保存します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbllm-provider-mcp_darwin_amd64.mcpb
mcpbllm-provider-mcp_darwin_arm64.mcpb
mcpbllm-provider-mcp_linux_amd64.mcpb
mcpbllm-provider-mcp_linux_arm64.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Go 向けマルチ LLM プロバイダー

CI Release License: BSL 1.1

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統合先トランスポート
openaiOpenAIOpenAI Go SDK
anthropicAnthropicAnthropic Go SDK
openrouterOpenRouterOpenAI 互換 API
bedrockAWS BedrockAWS SDK
vertexGoogle Vertex AI と GeminiGoogle Gen AI SDK
azureAzure AIAzure/OpenAI 互換 API
z-aiZ.AIOpenAI 互換 API
kimiKimi/MoonshotOpenAI 互換 API
minimax, minimax-coding-planMiniMaxプロバイダー API
claude-codeClaude CodeAgent SDK、オプションで tmux
codex-cliCodex CLIapp-server、オプションで tmux
cursor-cliCursor AgentCursor SDK、オプションで ACP または tmux
pi-cliPiRPC

専用ファクトリーでは、テキストモデルインターフェースに適合しない機能を提供します。

機能プロバイダー
埋め込み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 はプロバイダーの初期化を制御します。

フィールド用途
ProviderAPI、クラウドプラットフォーム、コーディング CLI を選択します
ModelIDモデルを選択します。対応している場合はプロバイダーのデフォルトが適用されます
Temperatureサンプリング温度を公開しているプロバイダーの温度を設定します
APIKeys環境変数の代わりに認証情報を明示的に指定します
MaxRetries選択したモデルの再試行を設定します
Logger / EventEmitterホストのロギング、トレース、モデルイベントを接続します
Context初期化の有効期間とキャンセルを制御します

一般的な認証情報の取得元は次のとおりです。

プロバイダー環境変数またはネイティブ認証
OpenAIOPENAI_API_KEY
AnthropicANTHROPIC_API_KEY
OpenRouterOPENROUTER_API_KEY
AWS Bedrock標準の AWS 認証情報チェーンと AWS_REGION
Vertex AIVERTEX_API_KEY、GOOGLE_API_KEY、または Google アプリケーション認証情報
Azure AIAZURE_AI_ENDPOINT と AZURE_AI_API_KEY
Z.AI / KimiZAI_API_KEY、KIMI_API_KEY
MiniMaxMINIMAX_API_KEY または MINIMAX_CODING_PLAN_API_KEY
ElevenLabs / DeepgramELEVENLABS_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 CodeSDKCLAUDE_CODE_TRANSPORT=sdk または tmux
Codexapp-serverCODEX_CLI_TRANSPORT=app-server または tmux
CursorSDKCURSOR_CLI_TRANSPORT=sdk、acp または tmux
PiRPCターミナルトランスポートなし

これらの変数をバックエンドに設定し、再起動してください。ネイティブ起動に失敗しても、tmux に自動で切り替わることはありません。SDK モードには Node.js と、対応する @anthropic-ai/claude-agent-sdk または @cursor/sdk パッケージが必要です。アダプターはグローバルな npm プレフィックスより先に、管理対象 CLI のインストールプレフィックスを検索します。また、明示的な CLAUDE_AGENT_SDK_PATH と CURSOR_SDK_PATH による上書きもサポートされています。

CLIプロバイダー ID認証
Claude Codeclaude-code既存の Claude Code ログインまたはスコープ付き OAuth トークン
Codex CLIcodex-cli既存の Codex ログイン
Cursor Agentcursor-cli既存の Cursor ログイン
Pi CLIpi-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 CodeCodex CLICursor AgentPi 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

ドキュメント

開発

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の下で利用できます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。