ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Go Micro MCP Hello World:三行代码把 go-micro 服务变成 AI 可调用工具

Go Micro MCP Hello World:三行代码把 go-micro 服务变成 AI 可调用工具 后端微服务AI AgentRPC框架【免费下载链接】go-microA Go agent harness and service framework项目地址https://gitcode.com/gh_mirrors/go/go-micro点击查看免费下载本指南以仓库中的 examples/mcp/hello 示例 为主体讲解如何用最小代码量把普通 go-micro 服务通过 MCPModel Context Protocol网关暴露给 Claude Code 等 AI Agent 调用。读完本文你将掌握用标准 Go 注释自动生成工具文档、用 3 行代码启动 MCP 网关、通过 HTTP API 与 Claude Code 两种方式调用服务以及网关背后的工具发现与调用管线原理。示例概览最小的 MCP 化 go-micro 服务examples/mcp/hello是仓库中最简单的 MCP 化 go-micro 服务它演示了四件事✅ 从 Go 注释自动提取工具文档Automatic documentation extraction✅ 三行代码完成 MCP 网关搭建MCP gateway setup with 3 lines of code✅ 开箱即可对接 Claude Code 集成Ready for Claude Code integration✅ 提供 HTTP 端点便于人工测试HTTP endpoint for testing该示例的核心价值在于你不需要为 AI 集成写任何额外代码。服务端代码、注释、注册流程与普通 go-micro 服务完全一致MCP 网关在运行时自动完成工具目录tool catalog的构建。运行示例进入示例目录直接运行cd examples/mcp/hello go run main.go从 main.go 可以看出服务启动时会同时打印三个关键信息Service: http://localhost:9090——服务本身的 RPC 监听地址由micro.Address(:9090)指定MCP Gateway: http://localhost:3000——MCP 网关地址由mcp.WithMCP(:3000)指定MCP Tools: http://localhost:3000/mcp/tools——工具列表 REST 端点这意味着运行一个进程就同时拥有了普通微服务能力和 AI 可调用的 MCP 能力。测试它两种接入方式方式一HTTP API快速验证服务启动后先用curl查看网关发现了哪些工具# List available tools curl http://localhost:3000/mcp/tools | jq然后直接调用SayHello工具# Call the SayHello tool curl -X POST http://localhost:3000/mcp/call \ -H Content-Type: application/json \ -d { tool: greeter.Greeter.SayHello, input: {name: Alice} } | jq工具名称的命名规则是服务名.类型名.方法名即greeter.Greeter.SayHello。从 gateway/mcp/mcp.go 的NewServer实现可以看到网关启动时会通过discoverServices查询注册中心、构建工具目录并通过watchServices持续监听注册中心变化服务上线/下线会自动反映到工具列表中。方式二Claude CodeAI 原生集成在另一个终端启动 MCP 服务器默认使用 stdio 传输专为本地 AI 工具设计micro mcp serve将以下配置写入~/.claude/claude_desktop_config.json{ mcpServers: { greeter: { command: micro, args: [mcp, serve] } } }重启 Claude Code 后直接对它说Say hello to Bob using the greeter serviceClaude 会通过 MCP 协议发现greeter.Greeter.SayHello工具自动补全参数并调用返回 Hello Bob。micro mcp命令的实现位于 cmd/micro/mcp/mcp.go除serve外还提供list列出工具和test测试某个工具子命令# List available tools micro mcp list # Test a specific tool micro mcp test greeter.Greeter.SayHello工作原理三步把服务变成 AI 工具第 1 步写普通 Go 代码方法签名与普通 go-micro handler 完全一致唯一区别是认真写注释// SayHello greets a person by name. Returns a friendly greeting message. // // example {name: Alice} func (g *Greeter) SayHello(ctx context.Context, req *HelloRequest, rsp *HelloResponse) error { rsp.Message Hello req.Name ! return nil }第 2 步注册 Handler// Documentation is extracted automatically! handler : service.Server().NewHandler(new(Greeter)) service.Server().Handle(handler)NewHandler在注册时自动解析方法源码注释与结构体标签把文档元数据写入注册中心端点信息。在 main.go 中使用了更简洁的service.Handle(new(Greeter))等价写法。第 3 步启动 MCP 网关go mcp.ListenAndServe(:3000, mcp.Options{ Registry: service.Options().Registry, })至此完成你的服务已经对 AI 可访问。示例中还展示了一种更内聚的写法——通过服务选项直接在服务启动时挂载网关见 gateway/mcp/option.go 的WithMCPservice : micro.NewService(greeter, micro.Address(:9090), // Start MCP gateway alongside the service mcp.WithMCP(:3000), )WithMCP的实现是把ListenAndServe追加到服务的AfterStart钩子中并复用服务自身的Registry因此不需要手动管理网关生命周期。自动提取了什么注释 → JSON Schema 的完整映射以下面这段代码为例// SayHello greets a person by name. Returns a friendly greeting message. // // example {name: Alice} func (g *Greeter) SayHello(...) type HelloRequest struct { Name string json:name description:Persons name to greet }Claude 实际看到的是这份 JSON 工具定义{ name: greeter.Greeter.SayHello, description: SayHello greets a person by name. Returns a friendly greeting message., inputSchema: { type: object, properties: { name: { type: string, description: Persons name to greet } }, examples: [{\name\: \Alice\}] } }这条链路的实现位于 gateway/mcp/parser.go具体分工如下ParseGoDocCommentparser.go#L61-L116按行提取首行为Summary将第一个标签之前的内容作为Description并支持三种 JSDoc 风格标签param name {type} desc、return {type} desc、example jsonParseStructTagsparser.go#L120-L169反射读取结构体的json标签生成属性名读取description标签生成字段描述缺省时自动由字段名生成可读描述没有omitempty的字段会进入required数组reflectTypeToJSONTypeparser.go#L172-L189把 Go 类型映射为 JSON Schema 类型覆盖 string / integer / number / boolean / array / object。注意example标签是给 AI 的最佳实践示例务必给出真实可用的 JSON 输入而非占位符。文档质量直接决定 Agent 首次调用成功率完整的编写规范含格式约束、错误场景、命名建议见 gateway/mcp/DOCUMENTATION.md。网关背后的调用管线/mcp/call与 streamable-HTTP 传输共用同一条invokeTool调用管线gateway/mcp/mcp.go#L753-L920按顺序执行工具查找未注册的工具返回 404Tool not foundx402 支付门可选配置了Payment时需按工具定价完成支付免费工具直接放行认证与授权配置了Auth时校验 Bearer token并按工具的Scopes做作用域检查不匹配返回 403Forbidden: insufficient scopes限流按工具维度执行令牌桶限流超限返回 429Rate limit exceeded熔断连续失败的工具暂时阻断保护下游服务返回 503circuit breaker open分发框架内置工具registry/store/broker 等走直接 Handler业务工具通过client.NewRequest发起标准 RPC 调用并携带Mcp-Trace-Id、Mcp-Tool-Name、Mcp-Account-Id元数据贯穿链路审计配置了AuditFunc时每次调用生成不可变的AuditRecord日志含 trace_id、账号、所需 scopes、是否放行、耗时、错误等。网关的四个传输端点统一注册在 handler() 方法中/mcp/tools与/mcp/call遗留 REST、/mcp规范兼容的 streamable-HTTP JSON-RPC 2.0、/mcp/wsWebSocket、/health健康检查。不设置Address时自动退化为 stdio 传输。生产化增强认证、作用域与文档覆盖示例是最小路径实际接入生产时有三类增强手段端点作用域注册时用server.WithEndpointScopes(Greeter.SayHello, greeter:read)声明所需 scopes网关从注册中心读取并在调用时强制执行也可以在网关层用mcp.Options{Scopes: map[string][]string{...}}集中覆盖策略网关级优先。手动文档覆盖server.WithEndpointDocs可自定义Description与Example手动元数据优先于自动提取的注释。HTTP 传输micro mcp serve --address :3000可为浏览器/桌面 Agent 提供 HTTP 端点规范客户端可直接对接http://localhost:3000/mcp。下一步查看 examples/mcp/documented 获取多端点的完整示例阅读 internal/website/docs/mcp.md 了解 MCP 网关的完整文档含 streamable-HTTP 握手流程与常见 token 模式深入 gateway/mcp/mcp.go 与 gateway/mcp/DOCUMENTATION.md 了解全部Options配置项RateLimit、CircuitBreaker、TraceProvider、Payment 等。从写普通 Go 服务到AI 可调用只需三步——注释、注册、启动网关这正是 MCP Hello World 示例想要传达的核心体验。赞分享后端微服务AI AgentRPC框架【免费下载链接】go-microA Go agent harness and service framework项目地址https://gitcode.com/gh_mirrors/go/go-micro点击查看免费下载相关推荐Proxmox VE Tools让虚拟化服务器管理效率提升10倍的智能化管理工具Proxmox VE Tools让虚拟化服务器管理效率提升10倍的智能化管理工具 Proxmox VE ToolsPVE Tools是一款专为Proxmo后端微服务AI AgentRPC框架go-micro Hello World 实战从零搭建一个可运行、可调试的 RPC 服务go micro Hello World 实战从零搭建一个可运行、可调试的 RPC 服务 本文以 go micro 仓库中最基础的 hello world 示后端微服务AI AgentRPC框架构建 AI-Native 服务让 Go Micro 服务自动成为 MCP 工具供 AI Agent 调用构建 AI Native 服务让 Go Micro 服务自动成为 MCP 工具供 AI Agent 调用 本文是一份基于 go micro 仓库的实战指南核后端微服务AI AgentRPC框架上一篇如何为Android应用实现完整无障碍支持Sunflower项目TalkBack手势指南 下一篇PythonCrawler现代Python爬虫架构的工程化实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表