一个Go适配器,用于连接LangChain Go工具与模型上下文协议(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() {
// 使用标准输入输出创建一个MCP客户端
mcpClient, err := client.NewStdioMCPClient(
"./an-mcp-server", // MCP服务器可执行文件路径
nil, // 如需额外环境变量,请在此处设置
)
if err != nil {
log.Fatalf("创建MCP客户端失败: %v", err)
}
defer mcpClient.Close()
// 创建适配器
adapter, err := langchaingo_mcp_adapter.New(mcpClient)
if err != nil {
log.Fatalf("创建适配器失败: %v", err)
}
// 获取所有来自MCP服务器的工具
mcpTools, err := adapter.Tools()
if err != nil {
log.Fatalf("获取工具失败: %v", err)
}
ctx := context.Background()
// 创建一个Google AI LLM客户端
llm, err := googleai.New(
ctx,
googleai.WithDefaultModel("gemini-2.0-flash"),
googleai.WithAPIKey(os.Getenv("GOOGLE_API_KEY")),
)
if err != nil {
log.Fatalf("创建Google AI客户端失败: %v", err)
}
// 使用工具创建一个代理
agent := agents.NewOneShotAgent(
llm,
mcpTools,
agents.WithMaxIterations(3),
)
executor := agents.NewExecutor(agent)
// 使用代理
question := "你能帮我使用可用工具分析这些数据吗?"
result, err := chains.Run(
ctx,
executor,
question,
)
if err != nil {
log.Fatalf("代理执行错误: %v", err)
}
log.Printf("代理结果: %s", result)
}
查看example目录中的完整示例:
example/agent:演示如何使用适配器与各种LLM提供商(Google AI、OpenAI、Anthropic)example/server:提供一个URL抓取工具的最小MCP服务器示例示例代理支持多个LLM提供商:
GOOGLE_API_KEYOPENAI_API_KEYANTHROPIC_API_KEY示例是跨平台的,在Windows、macOS和Linux上均可运行。示例会自动构建并运行MCP服务器。详细设置说明请参阅示例README。
本样本中的mcp-curl服务器基于这篇博客中的代码。
本项目采用MIT许可证——详情请见LICENSE文件。
欢迎贡献!请随意提交Pull Request。
git checkout -b feature/amazing-feature)git commit -m '添加一些惊人的功能')git push origin feature/amazing-feature)