关于 LangChainGo MCP Adapter
LangChainGo MCP Adapter 是一个 Go 语言适配器,用于将 LangChain Go 的工具与 MCP 服务连接起来。它面向使用 LangChain Go 构建 Agent 的开发者,可把 MCP 工具接入现有的 Agent 基础设施。
主要功能
- 01连接任意 MCP 服务
- 02自动发现指定 MCP 服务中的工具
- 03将 MCP 工具封装为 LangChain Go 工具
适用场景
- 01在 LangChain Go Agent 中调用 MCP 服务提供的工具
- 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 服务基于这篇博客中的代码。
要求
- Go 1.23 或更高版本
- tmc/langchaingo
- mark3labs/mcp-go
许可证
此项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。
贡献
欢迎贡献!请随时提交 Pull Request。
- Fork 此代码仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add some amazing feature') - 将更改推送到分支(
git push origin feature/amazing-feature) - 发起 Pull Request
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。