LangChainGo MCP适配器

该适配器允许将MCP服务器上的工具与LangChain Go库无缝集成,实现工具自动发现与调用。

  • by i2y
  • Go
  • 本地部署
  • 48 星标
  • 更新于
在 GitHub 查看 i2y/langchaingo-mcp-adapter

使用说明

LangChainGo MCP适配器

一个Go适配器,将LangChain Go工具与模型上下文协议(MCP)服务器连接起来。

概述

此适配器允许您使用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_API_KEY
  • OpenAI:设置 OPENAI_API_KEY
  • 人类学(克劳德):设置 ANTHROPIC_API_KEY

该示例是跨平台的,适用于Windows、macOS和Linux。该示例从源代码自动构建并运行MCP服务器。请参阅 示例README 有关详细的设置说明。

此示例中的mcp-curl服务器基于以下代码 这个博客.

需求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求