游乐游手机版
首页/AI热点日报/热点详情

MCP让Eino更强大实战指南完整深度解析与核心技巧

类型:热点整理2026-07-04
Eino近期完成了更新,正式引入对MCP协议的支持。对于服务端开发者而言,这无疑是一个重要动态——它意味着在构建智能体(Agent)时,能够更加优雅地连接和统一管理外部工具与资源。整体架构设计并不复杂:在Eino构建智能体时,通过MCP客户端(MCP Client)连接至MCP服务端(MCP Ser

Eino近期完成了更新,正式引入对MCP协议的支持。对于服务端开发者而言,这无疑是一个重要动态——它意味着在构建智能体(Agent)时,能够更加优雅地连接和统一管理外部工具与资源。

整体架构设计并不复杂:在Eino构建智能体时,通过MCP客户端(MCP Client)连接至MCP服务端(MCP Server),获取已注册的工具(Tools),并将其转换为Eino自有的ToolNode,最终融入Workflow编排流程。这种桥接机制既延续了MCP协议的灵活性,也进一步丰富了Eino的生态体系。

MCP 让 Eino 更强大:实战指南

实战演示:将stdio传输改造为SSE模式

本文以之前“MCP实战:使用Go快速构建MCP Server”一文中介绍的current time MCP Server为例进行演示。由于Eino主要面向服务端应用场景,默认的stdio传输方式无法满足需求,因此需要先将其改造为SSE(Server-Sent Events)模式。

步骤1:调整MCP Server监听模式

让MCP Server根据传入参数进行判断:如果指定了sse传输协议,则启动SSE服务;否则继续使用默认的stdio模式。

// Only check for "sse" since stdio is the default
if transport == "sse" {
    serverUrl := "http://" + serverlisten
    sseServer := server.NewSSEServer(s, server.WithBaseURL(serverUrl))
    log.Printf("SSE server listening on %s", serverlisten)
    if err := sseServer.Start(serverlisten); err != nil {
        log.Fatalf("Server error: %v", err)
    }
} else {
    if err := server.ServeStdio(s); err != nil {
        log.Fatalf("Server error: %v", err)
    }
}

步骤2:基于Eino创建Agent并接入MCP Server

通过SSE协议初始化MCP客户端,发送初始化请求,查询MCP Server提供的工具列表,然后将这些工具绑定到Eino的Agent中,最后即可开始调用。

// 使用 SSE 初始化 MCP client
ctx := context.Background()
cli, _ := client.NewSSEMCPClient("http://localhost:8080/sse")
cli.Start(ctx)
defer cli.Close()

// 发送 init request
initRequest := mcp.InitializeRequest{}
initRequest.Params.ProtocolVersion = mcp.LATEST_PROTOCOL_VERSION
initRequest.Params.ClientInfo = mcp.Implementation{
    Name:    "current-time",
    Version: "1.0.0",
}
cli.Initialize(ctx, initRequest)

// 查询 MCP Server 提供的 tools
tools, _ := eino_mcp.GetTools(ctx, &eino_mcp.Config{Cli: cli})

// 将 MCP Tools 与 Eino 绑定
llm, _ := openai.NewChatModel(context.Background(), &openai.ChatModelConfig{
    BaseURL: os.Getenv("OPENAI_API_URL"),
    Model:   os.Getenv("MODEL_ID"),
    APIKey:  os.Getenv("OPENAI_API_KEY"),
})
agent, _ := react.NewAgent(ctx, &react.AgentConfig{
    Model:       llm,
    ToolsConfig: compose.ToolsNodeConfig{Tools: tools},
})
run(agent)

步骤3:运行效果展示

首先启动MCP Server,默认监听8080端口:

$ go run tools/mcp-time/main.go --transport sse
2025/03/23 18:55:03 SSE server listening on localhost:8080

接着运行Eino MCP Demo,输入查询指令进行测试:

$ go run main.go

欢迎使用 eino with mcp demo.

请输入操作: 北京当前时间
北京当前时间是 2025-03-23 18:56:59.061851 +0800 CST。请注意,这可能是基于假设日期的回答,实际时间会有所不同。

请输入操作: 芝加哥当前时间
芝加哥的当前时间是 2025年3月23日 05:57:13 (CDT)。

请输入操作: tell me shanghai current time
The current time in Shanghai is 2025-03-23 18:57:26.192551 +0800 CST.

请输入操作: bye
欢迎再次使用,再见。

从开发周期来看,Eino从社区用户提出MCP需求到最终落地实现,仅用了短短几周时间,响应速度令人印象深刻。在具备将远程MCP Server的Tools转化为ToolNode的统一编排能力后,企业在云端构建智能体时,可以将一些复用的公共能力通过MCP Server进行集中管理,而无需每个Agent都独立实现一遍。这种架构设计不仅促进了部门间数据的开放共享,也便于实施细粒度的权限控制。

来源:https://www.53ai.com/news/finetuning/2025032387394.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。