mcpField
L
LangChainGo MCP Adapter

LangChainGo MCP Adapter

github.com/i2yフレームワーク・SDK4870 週間前に更新

LangChainGo MCP Adapter について

LangChainGo MCP Adapter は、LangChain Go のツールと MCP サーバーを橋渡しする Go 言語のアダプターです。LangChain Go でエージェントを構築する開発者が、既存のエージェント基盤から MCP ツールを利用するために使用します。

主な機能

  1. 01任意の MCP サーバーへの接続
  2. 02指定した MCP サーバーのツールを自動検出
  3. 03MCP ツールを LangChain Go ツールとしてラップ

活用シーン

  1. 01LangChain Go のエージェントから MCP サーバーのツールを呼び出す
  2. 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 サーバーは、こちらのブログのコードを基にしています。

要件

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細については、LICENSE ファイルを参照してください。

貢献

貢献を歓迎します。お気軽にプルリクエストを送信してください。

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します(git checkout -b feature/amazing-feature)
  3. 変更をコミットします(git commit -m 'Add some amazing feature')
  4. ブランチにプッシュします(git push origin feature/amazing-feature)
  5. プルリクエストを作成します

コメント

MCP は初めてですか?

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

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