这是一个演示 CloudWeGo eino 与模型上下文协议(MCP)集成的示例项目。该项目创建了一个能够使用 MCP 工具执行任务的 AI 代理。
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Eino Agent │ │ MCP Client │ │ MCP Tools │
│ │◄──►│ │◄──►│ │
│ - OpenAI Model │ │ - SSE Transport │ │ - Time Tool │
│ - Tool Registry │ │ - Tool Discovery │ │ - Stdio Mode │
│ - Chat Interface│ │ - Protocol Handle│ │ - SSE Mode │
└─────────────────┘ └──────────────────┘ └─────────────────┘
确保已安装 Go 1.23.4 或更高版本:
go version
# 复制环境配置文件
cp env.sh.example env.sh
# 编辑配置文件,填入你的 API 凭证
cat env.sh
配置文件内容:
export OPENAI_API_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export MODEL_ID="qwen2.5-32b-instruct"
export OPENAI_API_KEY="your-api-key-here"
选择以下方法之一启动 MCP 时间工具:
cd tools/mcp-time
go build -o mcp-time main.go
./mcp-time -transport=sse -server_listen=localhost:8080
cd tools/mcp-time-v2
go build -o mcp-time-v2 main.go
./mcp-time-v2 -transport=sse
# 在项目根目录运行
go run main.go
启动应用程序后,您将看到一个交互界面:
欢迎使用 eino with mcp 示例。
请输入操作: 现在北京时间是多少?
当前时间是 2024-01-15 14:30:00 +0800 CST
请输入操作:
支持的命令:
exit 或 bye 退出程序eino-mcp/
├── main.go # 主应用程序入口
├── go.mod # Go 模块定义
├── go.sum # 依赖校验和
├── env.sh.example # 环境变量模板
├── CLAUDE.md # Claude Code 开发指南
├── tools/ # MCP 工具实现
│ ├── mcp-time/ # mcp-go 实现
│ │ ├── main.go # 基于 mark3labs/mcp-go
│ │ └── ... # 相关依赖
│ └── mcp-time-v2/ # go-mcp 实现
│ ├── main.go # 基于 ThinkInAIXYZ/go-mcp
│ └── ... # 相关依赖
└── vendor/ # Go 依赖包
// 初始化 MCP 客户端
cli, _ := client.NewSSEMCPClient("http://localhost:8080/sse")
cli.Start(ctx)
// 创建 OpenAI 模型
llm, _ := openai.NewChatModel(context.Background(), &openai.ChatModelConfig{
BaseURL: os.Getenv("OPENAI_API_URL"),
Model: os.Getenv("MODEL_ID"),
APIKey: os.Getenv("OPENAI_API_KEY"),
Timeout: 30 * time.Second,
})
// 创建 eino 智能体
agent, _ := react.NewAgent(ctx, &react.AgentConfig{
Model: llm,
ToolsConfig: compose.ToolsNodeConfig{Tools: tools},
})
两个实现版本:
mcp-go 库go-mcp 库两种工具提供相同的功能:
主要依赖项:
github.com/cloudwego/eino - 核心 AI 框架github.com/cloudwego/eino-ext - 扩展组件github.com/mark3labs/mcp-go - MCP 协议实现(mcp-time)github.com/ThinkInAIXYZ/go-mcp - MCP 协议实现(mcp-time-v2)github.com/cloudwego/eino-ext/components/model/openai - OpenAI 模型集成# 构建主应用
go build -o eino-mcp main.go
# 构建工具
cd tools/mcp-time && go build -o mcp-time main.go
cd tools/mcp-time-v2 && go build -o mcp-time-v2 main.go
# 运行所有测试
go test ./...
# 测试特定模块
go test ./tools/...
tools/ 目录中创建一个新的工具实现A: 使用 -transport 参数指定 stdio 或 sse
A: 修改 env.sh 文件中的相关环境变量
A: 参考 tools/ 目录中的现有实现,创建一个新的工具文件
本项目遵循相应的开源许可证。
欢迎提交 Issues 和 Pull Requests 来改进此项目。