mcpField
L
LangChainGo MCP Adapter

LangChainGo MCP Adapter

github.com/i2y框架与 SDK4870 周前更新

关于 LangChainGo MCP Adapter

LangChainGo MCP Adapter 是一个 Go 语言适配器,用于将 LangChain Go 的工具与 MCP 服务连接起来。它面向使用 LangChain Go 构建 Agent 的开发者,可把 MCP 工具接入现有的 Agent 基础设施。

主要功能

  1. 01连接任意 MCP 服务
  2. 02自动发现指定 MCP 服务中的工具
  3. 03将 MCP 工具封装为 LangChain Go 工具

适用场景

  1. 01在 LangChain Go Agent 中调用 MCP 服务提供的工具
  2. 02基于 MCP 服务快速搭建 URL 抓取等功能的 Agent 示例

MCP 相关

作为 MCP 客户端,该适配器连接 MCP 服务并读取其工具列表,再将这些工具包装为 LangChain Go 工具供 Agent 调用。

详细介绍

LangChainGo MCP 适配器

一个 Go 适配器,用于连接 LangChain Go 工具和 Model Context Protocol(MCP)服务。

概述

此适配器可让你通过 LangChain Go 库使用 MCP 服务上定义的工具。它实现了必要的接口,可将 MCP 工具无缝集成到 LangChain Go 的 Agent 基础设施中。

功能

  • 连接到任意 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:演示如何将此适配器与多种大模型提供商(Google AI、OpenAI、Anthropic)搭配使用
  • example/server:一个精简的 MCP 服务示例,提供 URL 获取工具

示例 Agent 支持多种大模型提供商:

  • Google AI (Gemini):设置 GOOGLE_API_KEY
  • OpenAI:设置 OPENAI_API_KEY
  • Anthropic (Claude):设置 ANTHROPIC_API_KEY

此示例支持多个平台,可在 Windows、macOS 和 Linux 上运行。示例会自动从源代码构建并运行 MCP 服务。详细的设置说明请参阅示例 README。

此示例中的 mcp-curl 服务基于这篇博客中的代码。

要求

许可证

此项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。

贡献

欢迎贡献!请随时提交 Pull Request。

  1. Fork 此代码仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add some amazing feature')
  4. 将更改推送到分支(git push origin feature/amazing-feature)
  5. 发起 Pull Request

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。