//Onlycheckfor"sse"sincestdioisthedefaultiftransport=="sse"{serverUrl:="http://"+serverlistensseServer:=server.NewSSEServer(s,server.WithBaseURL(serverUrl))log.Printf("SSEserverlisteningon%s",serverlisten)iferr:=sseServer.Start(serverlisten);err!=nil{log.Fatalf("Servererror:%v",err)}}else{iferr:=server.ServeStdio(s);err!=nil{log.Fatalf("Servererror:%v",err)}}// 使用 SSE 初始化 MCP clientctx := context.Background()cli, _ := client.NewSSEMCPClient("http://localhost:8080/sse")cli.Start(ctx)defer cli.Close()// 发送 init requestinitRequest := mcp.InitializeRequest{}initRequest.Params.ProtocolVersion = mcp.LATEST_PROTOCOL_VERSIONinitRequest.Params.ClientInfo = mcp.Implementation{Name: "current-time",Version:"1.0.0",}cli.Initialize(ctx, initRequest)// 查询 MCP Server 提供的 toolstools, _ := 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)
$goruntools/mcp-time/main.go--transportsse2025/03/2318:55:03SSEserverlisteningonlocalhost:8080
$ go run main.go欢迎使用 einowithmcp demo.请输入操作: 北京当前时间北京当前时间是2025-03-2318:56:59.061851+0800CST。请注意,这可能是基于假设日期的回答,实际时间会有所不同。请输入操作: 芝加哥当前时间芝加哥的当前时间是2025年3月23日05:57:13(CDT)。请输入操作: tell me shanghaicurrenttimeThecurrenttimeinShanghaiis2025-03-2318:57:26.192551+0800CST.请输入操作: bye欢迎再次使用,再见。
Eino 动作真是快,从社区用户提出 mcp 需求到最终实现,短短几周,主打一个听劝。
Eino 有了将 remote MCP Server 的 Tools 转化为自己可用的 ToolNode,用于统一编排能力后,云端构建智能体时,可以考虑将一些复用的公共能力通过 MCP Server 方式统一管控起来,而不需要 Eino 每个 Agent 再去真正实现,有了 MCP Server 更方便企业各个部门数据的开放与细粒度管控。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |