LangChainGo MCP Adapter について
LangChainGo MCP Adapter は、LangChain Go のツールと MCP サーバーを橋渡しする Go 言語のアダプターです。LangChain Go でエージェントを構築する開発者が、既存のエージェント基盤から MCP ツールを利用するために使用します。
主な機能
- 01任意の MCP サーバーへの接続
- 02指定した MCP サーバーのツールを自動検出
- 03MCP ツールを LangChain Go ツールとしてラップ
活用シーン
- 01LangChain Go のエージェントから MCP サーバーのツールを呼び出す
- 02Google AI、OpenAI、Anthropic のモデルを用いたサンプルエージェントの実行
MCP 対応
MCP クライアントとして、MCP サーバーに接続してツール一覧を取得し、それらを LangChain Go のツールとしてラップしてエージェントから呼び出せるようにします。
詳細
LangChainGo MCP アダプター
LangChain Go のツールと Model Context Protocol(MCP)サーバーを接続する Go アダプターです。
概要
このアダプターを使うと、MCP サーバーで定義されたツールを LangChain Go ライブラリで使用できます。MCP ツールを LangChain Go のエージェントインフラストラクチャにシームレスに統合するために必要なインターフェースを実装しています。
機能
- 任意の MCP サーバーに接続します
- 指定された MCP サーバーから MCP ツールを自動的に検出し、LangChain Go で利用できるようにします
- MCP ツールを LangChain Go のツールとしてラップします
インストール
go get github.com/i2y/langchaingo-mcp-adapter
使用方法
package main
import (
"context"
"log"
"os"
"github.com/i2y/langchaingo-mcp-adapter"
"github.com/mark3labs/mcp-go/client"
"github.com/tmc/langchaingo/agents"
"github.com/tmc/langchaingo/chains"
"github.com/tmc/langchaingo/llms/googleai"
"github.com/tmc/langchaingo/tools"
)
func main() {
// Create an MCP client using stdio
mcpClient, err := client.NewStdioMCPClient(
"./an-mcp-server", // Path to an MCP server executable
nil, // Additional environment variables if needed
)
if err != nil {
log.Fatalf("Failed to create MCP client: %v", err)
}
defer mcpClient.Close()
// Create the adapter
adapter, err := langchaingo_mcp_adapter.New(mcpClient)
if err != nil {
log.Fatalf("Failed to create adapter: %v", err)
}
// Get all tools from MCP server
mcpTools, err := adapter.Tools()
if err != nil {
log.Fatalf("Failed to get tools: %v", err)
}
ctx := context.Background()
// Create a Google AI LLM client
llm, err := googleai.New(
ctx,
googleai.WithDefaultModel("gemini-2.0-flash"),
googleai.WithAPIKey(os.Getenv("GOOGLE_API_KEY")),
)
if err != nil {
log.Fatalf("Create Google AI client: %v", err)
}
// Create a agent with the tools
agent := agents.NewOneShotAgent(
llm,
mcpTools,
agents.WithMaxIterations(3),
)
executor := agents.NewExecutor(agent)
// Use the agent
question := "Can you help me analyze this data using the available tools?"
result, err := chains.Run(
ctx,
executor,
question,
)
if err != nil {
log.Fatalf("Agent execution error: %v", err)
}
log.Printf("Agent result: %s", result)
}
サンプルアプリケーション
完全なサンプルについては、example ディレクトリを参照してください。
example/agent:さまざまな LLM プロバイダー(Google AI、OpenAI、Anthropic)でアダプターを使用する方法を示しますexample/server:URL フェッチツールを提供する最小限の MCP サーバーのサンプルです
サンプルエージェントは複数の LLM プロバイダーに対応しています。
- Google AI(Gemini):
GOOGLE_API_KEYを設定します - OpenAI:
OPENAI_API_KEYを設定します - Anthropic(Claude):
ANTHROPIC_API_KEYを設定します
このサンプルはクロスプラットフォーム対応で、Windows、macOS、Linux で動作します。ソースから MCP サーバーを自動的にビルドして実行します。詳しいセットアップ手順については、サンプル README を参照してください。
このサンプルの mcp-curl サーバーは、こちらのブログのコードを基にしています。
要件
- Go 1.23 以降
- tmc/langchaingo
- mark3labs/mcp-go
ライセンス
このプロジェクトは MIT ライセンスの下で公開されています。詳細については、LICENSE ファイルを参照してください。
貢献
貢献を歓迎します。お気軽にプルリクエストを送信してください。
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add some amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。