[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ThinkInAIXYZ--go-mcp":3,"tool-ThinkInAIXYZ--go-mcp":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",151918,2,"2026-04-12T11:33:05",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":75,"owner_email":75,"owner_twitter":75,"owner_website":76,"owner_url":77,"languages":78,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":32,"env_os":95,"env_gpu":96,"env_ram":96,"env_deps":97,"category_tags":102,"github_topics":75,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":103,"updated_at":104,"faqs":105,"releases":141},6869,"ThinkInAIXYZ\u002Fgo-mcp","go-mcp","Go-MCP is a powerful Go(Golang) version of the MCP SDK that implements the Model Context Protocol (MCP) to facilitate seamless communication between external systems and AI applications. ","go-mcp 是一款专为 Go 语言开发者打造的开源工具包，旨在实现模型上下文协议（MCP）。它的核心作用是搭建一座桥梁，让外部系统与大模型应用之间能够进行高效、无缝的通信，解决不同系统间数据交互标准不一、集成复杂的难题。\n\n这款工具特别适合正在使用 Go 语言构建 AI 应用的后端工程师和系统架构师。如果你希望将现有的业务系统快速接入大模型能力，或者需要开发符合 MCP 标准的服务端与客户端，go-mcp 能提供极大的便利。\n\n在技术亮点上，go-mcp 完整实现了 MCP 协议规范，确保兼容性；其架构设计清晰，支持双向通信，并提供了标准的 HTTP 处理器，可轻松融入现有的 Web 框架。得益于 Go 语言本身的强类型特性，它能编写出更安全、易维护的代码；同时利用 Go 强大的并发能力和静态编译优势，确保了服务的高性能与低资源消耗，且部署简单，无需繁琐的依赖管理。通过简洁地道的 API 设计，go-mcp 帮助开发者以更低的成本完成系统集成，专注于核心业务逻辑的实现。","# Go-MCP\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_bdfdb6749764.png\" height=\"250\" alt=\"Statusphere logo\">\n\u003C\u002Fdiv>\n\u003Cbr\u002F>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FThinkInAIXYZ\u002Fgo-mcp?style=flat\" alt=\"Release\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FThinkInAIXYZ\u002Fgo-mcp?style=flat\" alt=\"Stars\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fnetwork\u002Fmembers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002FThinkInAIXYZ\u002Fgo-mcp?style=flat\" alt=\"Forks\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FThinkInAIXYZ\u002Fgo-mcp?color=gold&style=flat\" alt=\"Issues\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpulls\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002FThinkInAIXYZ\u002Fgo-mcp?color=gold&style=flat\" alt=\"Pull Requests\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green.svg\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fgraphs\u002Fcontributors\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcontributors\u002FThinkInAIXYZ\u002Fgo-mcp?color=green&style=flat\" alt=\"Contributors\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcommits\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FThinkInAIXYZ\u002Fgo-mcp?color=green&style=flat\" alt=\"Last Commit\">\u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-reference-blue?logo=go&logoColor=white&style=flat\" alt=\"Go Reference\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgo%20report-A+-brightgreen?style=flat\" alt=\"Go Report\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo%20Tests-passing-brightgreen?style=flat\" alt=\"Go Tests\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"README_CN.md\">简体中文\u003C\u002Fa> | \u003Ca href=\"README_TW.md\">繁體中文\u003C\u002Fa> | \u003Ca href=\"README_VI.md\">Tiếng Việt\u003C\u002Fa>\n\u003C\u002Fp>\n\n## 🚀 Overview\n\nGo-MCP is a powerful Go version of the MCP SDK that implements the Model Context Protocol (MCP) to facilitate seamless communication between external systems and AI applications. Based on the strong typing and performance advantages of the Go language, it provides a concise and idiomatic API to facilitate your integration of external systems into AI applications.\n\n### ✨ Key Features\n\n- 🔄 **Complete Protocol Implementation**: Full implementation of the MCP specification, ensuring seamless integration with all compatible services\n- 🏗️ **Elegant Architecture Design**: Adopts a clear three-layer architecture, supports bidirectional communication, ensuring code modularity and extensibility\n- 🔌 **Seamless Integration with Web Frameworks**: Provides MCP protocol-compliant http.Handler, allowing developers to integrate MCP into their service frameworks\n- 🛡️ **Type Safety**: Leverages Go's strong type system for clear, highly maintainable code\n- 📦 **Simple Deployment**: Benefits from Go's static compilation, eliminating complex dependency management\n- ⚡ **High-Performance Design**: Fully utilizes Go's concurrency capabilities, maintaining excellent performance and low resource overhead across various scenarios\n\n## 🛠️ Installation\n\n```bash\ngo get github.com\u002FThinkInAIXYZ\u002Fgo-mcp\n```\n\nRequires Go 1.18 or higher.\n\n## 🎯 Quick Start\n\n### Client Example\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fclient\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Ftransport\"\n)\n\nfunc main() {\n\t\u002F\u002F Create SSE transport client\n\ttransportClient, err := transport.NewSSEClientTransport(\"http:\u002F\u002F127.0.0.1:8080\u002Fsse\")\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create transport client: %v\", err)\n\t}\n\n\t\u002F\u002F Initialize MCP client\n\tmcpClient, err := client.NewClient(transportClient)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create MCP client: %v\", err)\n\t}\n\tdefer mcpClient.Close()\n\n\t\u002F\u002F Get available tools\n\ttools, err := mcpClient.ListTools(context.Background())\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to list tools: %v\", err)\n\t}\n\tlog.Printf(\"Available tools: %+v\", tools)\n}\n```\n\n### Server Example\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fprotocol\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fserver\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Ftransport\"\n)\n\ntype TimeRequest struct {\n\tTimezone string `json:\"timezone\" description:\"timezone\" required:\"true\"` \u002F\u002F Use field tag to describe input schema\n}\n\nfunc main() {\n\t\u002F\u002F Create SSE transport server\n\ttransportServer, err := transport.NewSSEServerTransport(\"127.0.0.1:8080\")\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create transport server: %v\", err)\n\t}\n\n\t\u002F\u002F Initialize MCP server\n\tmcpServer, err := server.NewServer(transportServer)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create MCP server: %v\", err)\n\t}\n\t\n\t\u002F\u002F Optional: Global middleware (variadic - multiple middleware supported)\n\t\u002F\u002F mcpServer.Use(\n\t\u002F\u002F \tLoggingMiddleware,\n\t\u002F\u002F \tAuthMiddleware,\n\t\u002F\u002F \tMetricsMiddleware,\n\t\u002F\u002F )\n\n\t\u002F\u002F Register time query tool\n\ttool, err := protocol.NewTool(\"current_time\", \"Get current time for specified timezone\", TimeRequest{})\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create tool: %v\", err)\n\t\treturn\n\t}\n\tmcpServer.RegisterTool(tool, handleTimeRequest)\n\n\t\u002F\u002F Start server\n\tif err = mcpServer.Run(); err != nil {\n\t\tlog.Fatalf(\"Server failed to start: %v\", err)\n\t}\n}\n\nfunc handleTimeRequest(ctx context.Context, req *protocol.CallToolRequest) (*protocol.CallToolResult, error) {\n\tvar timeReq TimeRequest\n\tif err := protocol.VerifyAndUnmarshal(req.RawArguments, &timeReq); err != nil {\n\t\treturn nil, err\n\t}\n\n\tloc, err := time.LoadLocation(timeReq.Timezone)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid timezone: %v\", err)\n\t}\n\n\treturn &protocol.CallToolResult{\n\t\tContent: []protocol.Content{\n\t\t\t&protocol.TextContent{\n\t\t\t\tType: \"text\",\n\t\t\t\tText: time.Now().In(loc).String(),\n\t\t\t},\n\t\t},\n\t}, nil\n}\n```\n\n### Integration With Gin Server\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fprotocol\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fserver\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Ftransport\"\n\t\"github.com\u002Fgin-gonic\u002Fgin\"\n)\n\nfunc main() {\n\tmessageEndpointURL := \"\u002Fmessage\"\n\n\tsseTransport, mcpHandler, err := transport.NewSSEServerTransportAndHandler(messageEndpointURL)\n\tif err != nil {\n\t\tlog.Panicf(\"new sse transport and hander with error: %v\", err)\n\t}\n\n\t\u002F\u002F new mcp server\n\tmcpServer, _ := server.NewServer(sseTransport)\n\n\t\u002F\u002F register tool with mcpServer\n\t\u002F\u002F mcpServer.RegisterTool(tool, toolHandler)\n\n\t\u002F\u002F start mcp Server\n\tgo func() {\n\t\tmcpServer.Run()\n\t}()\n\n\tdefer mcpServer.Shutdown(context.Background())\n\n\tr := gin.Default()\n\tr.GET(\"\u002Fsse\", func(ctx *gin.Context) {\n\t\tmcpHandler.HandleSSE().ServeHTTP(ctx.Writer, ctx.Request)\n\t})\n\tr.POST(messageEndpointURL, func(ctx *gin.Context) {\n\t\tmcpHandler.HandleMessage().ServeHTTP(ctx.Writer, ctx.Request)\n\t})\n\n\tif err = r.Run(\":8080\"); err != nil {\n\t\treturn\n\t}\n}\n```\n\n[Reference：A more complete example](https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fblob\u002Fmain\u002Fexamples\u002Fhttp_handler\u002Fmain.go)\n\n## 🏗️ Architecture Design\n\nGo-MCP adopts an elegant three-layer architecture:\n\n![Architecture Overview](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_7bf3a8da053d.png)\n\n1. **Transport Layer**: Handles underlying communication implementation, supporting multiple transport protocols\n2. **Protocol Layer**: Handles MCP protocol encoding\u002Fdecoding and data structure definitions\n3. **User Layer**: Provides friendly client and server APIs\n\nCurrently supported transport methods:\n\n![Transport Methods](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_8cec774f6e53.png)\n\n- **HTTP SSE\u002FPOST**: HTTP-based server push and client requests, suitable for web scenarios\n- **Streamable HTTP**: Supports HTTP POST\u002FGET requests with both stateless and stateful modes, where stateful mode utilizes SSE for multi-message streaming to enable server-to-client notifications and requests\n- **Stdio**: Standard input\u002Foutput stream-based, suitable for local inter-process communication\n\nThe transport layer uses a unified interface abstraction, making it simple to add new transport methods (like Streamable HTTP, WebSocket, gRPC) without affecting upper-layer code.\n\n## 🤝 Contributing\n\nWe welcome all forms of contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 📞 Contact Us\n\n- **GitHub Issues**: [Submit an issue](https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues)\n- **Discord**: Click [here](https:\u002F\u002Fdiscord.gg\u002F4CSU8HYt) to join our user group\n- **WeChat Group**:\n\n![WeChat QR Code](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_a53ba14a7fd3.jpg)\n\n## ✨ Contributors\n\nThanks to all developers who have contributed to this project!\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_8b4539cab2c2.png\" alt=\"Contributors\" \u002F>\n\u003C\u002Fa>\n\n## 📈 Project Trends\n\n[![Star History](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_2b4531d91c6c.png)](https:\u002F\u002Fwww.star-history.com\u002F#ThinkInAIXYZ\u002Fgo-mcp&Date)\n","# Go-MCP\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_bdfdb6749764.png\" height=\"250\" alt=\"Statusphere logo\">\n\u003C\u002Fdiv>\n\u003Cbr\u002F>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FThinkInAIXYZ\u002Fgo-mcp?style=flat\" alt=\"Release\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FThinkInAIXYZ\u002Fgo-mcp?style=flat\" alt=\"Stars\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fnetwork\u002Fmembers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002FThinkInAIXYZ\u002Fgo-mcp?style=flat\" alt=\"Forks\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002FThinkInAIXYZ\u002Fgo-mcp?color=gold&style=flat\" alt=\"Issues\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpulls\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues-pr\u002FThinkInAIXYZ\u002Fgo-mcp?color=gold&style=flat\" alt=\"Pull Requests\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green.svg\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fgraphs\u002Fcontributors\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fcontributors\u002FThinkInAIXYZ\u002Fgo-mcp?color=green&style=flat\" alt=\"Contributors\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcommits\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FThinkInAIXYZ\u002Fgo-mcp?color=green&style=flat\" alt=\"Last Commit\">\u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F-reference-blue?logo=go&logoColor=white&style=flat\" alt=\"Go Reference\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgo%20report-A+-brightgreen?style=flat\" alt=\"Go Report\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo%20Tests-passing-brightgreen?style=flat\" alt=\"Go Tests\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"README_CN.md\">简体中文\u003C\u002Fa> | \u003Ca href=\"README_TW.md\">繁體中文\u003C\u002Fa> | \u003Ca href=\"README_VI.md\">Tiếng Việt\u003C\u002Fa>\n\u003C\u002Fp>\n\n## 🚀 概述\n\nGo-MCP 是一个功能强大的 Go 版本 MCP SDK，实现了模型上下文协议（MCP），以促进外部系统与 AI 应用程序之间的无缝通信。基于 Go 语言的强类型和高性能优势，它提供了一个简洁且符合惯用风格的 API，方便您将外部系统集成到 AI 应用程序中。\n\n### ✨ 核心特性\n\n- 🔄 **完整的协议实现**：全面实现 MCP 规范，确保与所有兼容服务的无缝集成\n- 🏗️ **优雅的架构设计**：采用清晰的三层架构，支持双向通信，确保代码模块化和可扩展性\n- 🔌 **与 Web 框架的无缝集成**：提供符合 MCP 协议的 http.Handler，使开发者能够将 MCP 集成到其服务框架中\n- 🛡️ **类型安全**：利用 Go 的强类型系统，编写清晰且易于维护的代码\n- 📦 **简单的部署**：受益于 Go 的静态编译特性，无需复杂的依赖管理\n- ⚡ **高性能设计**：充分利用 Go 的并发能力，在各种场景下保持出色的性能和较低的资源开销\n\n## 🛠️ 安装\n\n```bash\ngo get github.com\u002FThinkInAIXYZ\u002Fgo-mcp\n```\n\n需要 Go 1.18 或更高版本。\n\n## 🎯 快速入门\n\n### 客户端示例\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fclient\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Ftransport\"\n)\n\nfunc main() {\n\t\u002F\u002F 创建 SSE 传输客户端\n\ttransportClient, err := transport.NewSSEClientTransport(\"http:\u002F\u002F127.0.0.1:8080\u002Fsse\")\n\tif err != nil {\n\t\tlog.Fatalf(\"创建传输客户端失败: %v\", err)\n\t}\n\n\t\u002F\u002F 初始化 MCP 客户端\n\tmcpClient, err := client.NewClient(transportClient)\n\tif err != nil {\n\t\tlog.Fatalf(\"创建 MCP 客户端失败: %v\", err)\n\t}\n\tdefer mcpClient.Close()\n\n\t\u002F\u002F 获取可用工具\n\ttools, err := mcpClient.ListTools(context.Background())\n\tif err != nil {\n\t\tlog.Fatalf(\"列出工具失败: %v\", err)\n\t}\n\tlog.Printf(\"可用工具: %+v\", tools)\n}\n```\n\n### 服务器示例\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fprotocol\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fserver\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Ftransport\"\n)\n\ntype TimeRequest struct {\n\tTimezone string `json:\"timezone\" description:\"时区\" required:\"true\"` \u002F\u002F 使用字段标签描述输入模式\n}\n\nfunc main() {\n\t\u002F\u002F 创建 SSE 传输服务器\n\ttransportServer, err := transport.NewSSEServerTransport(\"127.0.0.1:8080\")\n\tif err != nil {\n\t\tlog.Fatalf(\"创建传输服务器失败: %v\", err)\n\t}\n\n\t\u002F\u002F 初始化 MCP 服务器\n\tmcpServer, err := server.NewServer(transportServer)\n\tif err != nil {\n\t\tlog.Fatalf(\"创建 MCP 服务器失败: %v\", err)\n\t}\n\t\n\t\u002F\u002F 可选：全局中间件（可变参数 - 支持多个中间件）\n\t\u002F\u002F mcpServer.Use(\n\t\u002F\u002F \tLoggingMiddleware,\n\t\u002F\u002F \tAuthMiddleware,\n\t\u002F\u002F \tMetricsMiddleware,\n\t\u002F\u002F )\n\n\t\u002F\u002F 注册时间查询工具\n\ttool, err := protocol.NewTool(\"current_time\", \"获取指定时区的当前时间\", TimeRequest{})\n\tif err != nil {\n\t\tlog.Fatalf(\"创建工具失败: %v\", err)\n\t\treturn\n\t}\n\tmcpServer.RegisterTool(tool, handleTimeRequest)\n\n\t\u002F\u002F 启动服务器\n\tif err = mcpServer.Run(); err != nil {\n\t\tlog.Fatalf(\"服务器启动失败: %v\", err)\n\t}\n}\n\nfunc handleTimeRequest(ctx context.Context, req *protocol.CallToolRequest) (*protocol.CallToolResult, error) {\n\tvar timeReq TimeRequest\n\tif err := protocol.VerifyAndUnmarshal(req.RawArguments, &timeReq); err != nil {\n\t\treturn nil, err\n\t}\n\n\tloc, err := time.LoadLocation(timeReq.Timezone)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"无效的时区: %v\", err)\n\t}\n\n\treturn &protocol.CallToolResult{\n\t\tContent: []protocol.Content{\n\t\t\t&protocol.TextContent{\n\t\t\t\tType: \"text\",\n\t\t\t\tText: time.Now().In(loc).String(),\n\t\t\t},\n\t\t},\n\t}, nil\n}\n```\n\n### 与 Gin 服务器的集成\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fprotocol\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fserver\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Ftransport\"\n\t\"github.com\u002Fgin-gonic\u002Fgin\"\n)\n\nfunc main() {\n\tmessageEndpointURL := \"\u002Fmessage\"\n\n\tsseTransport, mcpHandler, err := transport.NewSSEServerTransportAndHandler(messageEndpointURL)\n\tif err != nil {\n\t\tlog.Panicf(\"new sse transport and hander with error: %v\", err)\n\t}\n\n\t\u002F\u002F 新建 MCP 服务器\n\tmcpServer, _ := server.NewServer(sseTransport)\n\n\t\u002F\u002F 将工具注册到 mcpServer 中\n\t\u002F\u002F mcpServer.RegisterTool(tool, toolHandler)\n\n\t\u002F\u002F 启动 MCP 服务器\n\tgo func() {\n\t\tmcpServer.Run()\n\t}()\n\n\tdefer mcpServer.Shutdown(context.Background())\n\n\tr := gin.Default()\n\tr.GET(\"\u002Fsse\", func(ctx *gin.Context) {\n\t\tmcpHandler.HandleSSE().ServeHTTP(ctx.Writer, ctx.Request)\n\t})\n\tr.POST(messageEndpointURL, func(ctx *gin.Context) {\n\t\tmcpHandler.HandleMessage().ServeHTTP(ctx.Writer, ctx.Request)\n\t})\n\n\tif err = r.Run(\":8080\"); err != nil {\n\t\treturn\n\t}\n}\n```\n\n[参考：更完整的示例](https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fblob\u002Fmain\u002Fexamples\u002Fhttp_handler\u002Fmain.go)\n\n## 🏗️ 架构设计\n\nGo-MCP 采用优雅的三层架构：\n\n![架构概览](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_7bf3a8da053d.png)\n\n1. **传输层**：负责底层通信实现，支持多种传输协议。\n2. **协议层**：负责 MCP 协议的编码\u002F解码以及数据结构定义。\n3. **用户层**：提供友好的客户端和服务器 API。\n\n目前支持的传输方式如下：\n\n![传输方式](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_8cec774f6e53.png)\n\n- **HTTP SSE\u002FPOST**：基于 HTTP 的服务器推送和客户端请求，适用于 Web 场景。\n- **可流式 HTTP**：支持无状态和有状态两种模式的 HTTP POST\u002FGET 请求，其中有状态模式利用 SSE 进行多消息流式传输，以实现服务器到客户端的通知和请求。\n- **Stdio**：基于标准输入输出流，适用于本地进程间通信。\n\n传输层使用统一的接口抽象，使得添加新的传输方式（如可流式 HTTP、WebSocket、gRPC）变得简单，而不会影响上层代码。\n\n## 🤝 贡献\n\n我们欢迎任何形式的贡献！详情请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。\n\n## 📄 许可证\n\n本项目采用 MIT 许可证授权——详情请参阅 [LICENSE](LICENSE) 文件。\n\n## 📞 联系我们\n\n- **GitHub Issues**：[提交问题](https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues)\n- **Discord**：点击[这里](https:\u002F\u002Fdiscord.gg\u002F4CSU8HYt)加入我们的用户群\n- **微信交流群**：\n\n![微信二维码](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_a53ba14a7fd3.jpg)\n\n## ✨ 贡献者\n\n感谢所有为本项目做出贡献的开发者！\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_8b4539cab2c2.png\" alt=\"贡献者\" \u002F>\n\u003C\u002Fa>\n\n## 📈 项目趋势\n\n[![星标历史](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_readme_2b4531d91c6c.png)](https:\u002F\u002Fwww.star-history.com\u002F#ThinkInAIXYZ\u002Fgo-mcp&Date)","# go-mcp 快速上手指南\n\ngo-mcp 是一个基于 Go 语言实现的 Model Context Protocol (MCP) SDK，旨在利用 Go 的强类型和高性能特性，帮助开发者轻松将外部系统集成到 AI 应用中。\n\n## 环境准备\n\n- **操作系统**：支持 Linux、macOS、Windows\n- **Go 版本**：要求 Go 1.18 或更高版本\n- **依赖管理**：项目使用 Go Modules 进行依赖管理\n\n## 安装步骤\n\n在您的 Go 项目目录中，执行以下命令安装 go-mcp：\n\n```bash\ngo get github.com\u002FThinkInAIXYZ\u002Fgo-mcp\n```\n\n> **提示**：如果下载速度较慢，可配置国内 GOPROXY 加速：\n> ```bash\n> export GOPROXY=https:\u002F\u002Fgoproxy.cn,direct\n> ```\n\n## 基本使用\n\ngo-mcp 支持快速构建 MCP 服务端和客户端。以下是两个最基础的使用示例。\n\n### 1. 构建 MCP 服务端 (Server)\n\n以下示例创建一个基于 SSE (Server-Sent Events) 传输的服务端，并注册一个查询时间的工具。\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"time\"\n\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fprotocol\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fserver\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Ftransport\"\n)\n\n\u002F\u002F 定义请求结构体，利用 Tag 描述输入 schema\ntype TimeRequest struct {\n\tTimezone string `json:\"timezone\" description:\"timezone\" required:\"true\"`\n}\n\nfunc main() {\n\t\u002F\u002F 创建 SSE 传输服务端\n\ttransportServer, err := transport.NewSSEServerTransport(\"127.0.0.1:8080\")\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create transport server: %v\", err)\n\t}\n\n\t\u002F\u002F 初始化 MCP 服务端\n\tmcpServer, err := server.NewServer(transportServer)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create MCP server: %v\", err)\n\t}\n\n\t\u002F\u002F 注册工具：current_time\n\ttool, err := protocol.NewTool(\"current_time\", \"Get current time for specified timezone\", TimeRequest{})\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create tool: %v\", err)\n\t}\n\tmcpServer.RegisterTool(tool, handleTimeRequest)\n\n\t\u002F\u002F 启动服务\n\tlog.Println(\"Starting MCP server on :8080\")\n\tif err = mcpServer.Run(); err != nil {\n\t\tlog.Fatalf(\"Server failed to start: %v\", err)\n\t}\n}\n\n\u002F\u002F 工具处理函数\nfunc handleTimeRequest(ctx context.Context, req *protocol.CallToolRequest) (*protocol.CallToolResult, error) {\n\tvar timeReq TimeRequest\n\t\u002F\u002F 验证并反序列化参数\n\tif err := protocol.VerifyAndUnmarshal(req.RawArguments, &timeReq); err != nil {\n\t\treturn nil, err\n\t}\n\n\tloc, err := time.LoadLocation(timeReq.Timezone)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid timezone: %v\", err)\n\t}\n\n\treturn &protocol.CallToolResult{\n\t\tContent: []protocol.Content{\n\t\t\t&protocol.TextContent{\n\t\t\t\tType: \"text\",\n\t\t\t\tText: time.Now().In(loc).String(),\n\t\t\t},\n\t\t},\n\t}, nil\n}\n```\n\n### 2. 构建 MCP 客户端 (Client)\n\n以下示例展示如何连接上述服务端并调用已注册的工具。\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fclient\"\n\t\"github.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Ftransport\"\n)\n\nfunc main() {\n\t\u002F\u002F 创建 SSE 传输客户端\n\ttransportClient, err := transport.NewSSEClientTransport(\"http:\u002F\u002F127.0.0.1:8080\u002Fsse\")\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create transport client: %v\", err)\n\t}\n\n\t\u002F\u002F 初始化 MCP 客户端\n\tmcpClient, err := client.NewClient(transportClient)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to create MCP client: %v\", err)\n\t}\n\tdefer mcpClient.Close()\n\n\t\u002F\u002F 获取可用工具列表\n\ttools, err := mcpClient.ListTools(context.Background())\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to list tools: %v\", err)\n\t}\n\tlog.Printf(\"Available tools: %+v\", tools)\n\t\n\t\u002F\u002F 此处可继续调用 mcpClient.CallTool(...) 执行具体工具\n}\n```\n\n### 3. 集成 Gin Web 框架 (可选)\n\n如果您需要将 MCP 服务集成到现有的 Gin 项目中，可以使用 `NewSSEServerTransportAndHandler`：\n\n```go\n\u002F\u002F 片段示例\nsseTransport, mcpHandler, err := transport.NewSSEServerTransportAndHandler(\"\u002Fmessage\")\n\u002F\u002F ... 初始化 mcpServer ...\n\nr := gin.Default()\n\u002F\u002F 绑定 SSE 端点\nr.GET(\"\u002Fsse\", func(ctx *gin.Context) {\n\tmcpHandler.HandleSSE().ServeHTTP(ctx.Writer, ctx.Request)\n})\n\u002F\u002F 绑定消息端点\nr.POST(\"\u002Fmessage\", func(ctx *gin.Context) {\n\tmcpHandler.HandleMessage().ServeHTTP(ctx.Writer, ctx.Request)\n})\n\nr.Run(\":8080\")\n```","某电商平台的后端团队正致力于将现有的 Go 语言库存管理系统与大模型应用对接，以实现通过自然语言查询实时库存和自动补货。\n\n### 没有 go-mcp 时\n- **协议适配成本高**：团队需手动解析 JSON-RPC 消息并维护复杂的状态机来符合 MCP 规范，开发周期长达数周。\n- **类型安全隐患大**：由于缺乏强类型约束，外部系统与 AI 交互时的数据结构错误频发，导致运行时崩溃难以排查。\n- **并发性能瓶颈**：自研的通信层难以高效处理高并发请求，在促销高峰期经常出现响应延迟甚至超时。\n- **部署依赖繁琐**：动态语言特性导致生产环境需要携带大量依赖库，容器镜像体积大且启动缓慢。\n\n### 使用 go-mcp 后\n- **开箱即用集成**：直接调用 go-mcp 提供的标准 API 和 `http.Handler`，三天内即可完成库存系统与 AI 的双向通信对接。\n- **编译期错误拦截**：利用 Go 的强类型系统，所有数据交互在编译阶段即可验证，彻底消除了运行时格式错误。\n- **高性能并发支撑**：依托 Go 原生协程机制，go-mcp 轻松承载万级并发查询，确保大促期间库存反馈毫秒级响应。\n- **极简静态部署**：得益于静态编译特性，最终服务仅包含单个二进制文件，无外部依赖，部署效率提升 80%。\n\ngo-mcp 让 Go 开发者能以最低成本、最高性能将传统后端系统无缝接入 AI 生态，真正实现业务逻辑与大模型的流畅对话。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FThinkInAIXYZ_go-mcp_bdfdb674.png","ThinkInAIXYZ","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FThinkInAIXYZ_070605fa.jpg","",null,"https:\u002F\u002Fthinkinai.xyz","https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ",[79,83,87],{"name":80,"color":81,"percentage":82},"Go","#00ADD8",97.5,{"name":84,"color":85,"percentage":86},"Shell","#89e051",1.6,{"name":88,"color":89,"percentage":90},"Makefile","#427819",0.8,667,107,"2026-04-11T02:25:08","MIT","Linux, macOS, Windows","未说明",{"notes":98,"python":99,"dependencies":100},"该工具是基于 Go 语言开发的 MCP SDK，无需 Python 环境。利用 Go 的静态编译特性，部署简单，无复杂的依赖管理需求。支持多种传输协议（HTTP SSE\u002FPOST, Streamable HTTP, Stdio）。","不适用",[101],"Go 1.18+",[14,13],"2026-03-27T02:49:30.150509","2026-04-12T20:19:23.787462",[106,111,116,121,126,131,136],{"id":107,"question_zh":108,"answer_zh":109,"source_url":110},30979,"遇到 \"mcp client ping server fail: context canceled\" 警告是什么原因？","该问题已在 v0.1.11 和 v0.1.12 版本中修复。建议升级 go-mcp 到最新版本（v0.1.12 或更高）以解决此问题。相关修复 PR 为 #116 和 #119。","https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\u002F113",{"id":112,"question_zh":113,"answer_zh":114,"source_url":115},30980,"使用 SSE 模式时，客户端断开连接后服务端为何一直报 \"ping failed: lack session\" 警告？","这是因为 SSE Server 虽然删除了 sessionStore，但未在 Server 层面清除 sessionID2session 的映射。临时解决方案是在 Ping 失败后手动删除对应的 key：\nif _, err := server.Ping(setSessionIDToCtx(ctx, key), protocol.NewPingRequest()); err != nil {\n    server.logger.Warnf(\"sessionID=%s ping failed: %v\", key, err)\n    server.sessionID2session.Delete(key)\n}\n长期方案是等待新版协议实现，在 transport 层连接断开时回调 server 层同步删除 sessionID。","https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\u002F64",{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},30981,"在 Docker Swarm 集群配合 Nginx 部署时出现 \"upstream timed out\" 或 \"lack session\" 错误如何解决？","1. 配置 Docker Swarm 的服务端点模式为 DNS 轮询：设置 endpoint_mode = dnsrr。\n2. 在 Nginx 配置中使用 ip_hash 确保同一 IP 请求转发到同一后端实例，并关闭缓冲以支持长连接：\nupstream app_cluster {\n    ip_hash;\n    server app:9090;\n}\nlocation \u002Fsse {\n    proxy_pass http:\u002F\u002Fapp_cluster;\n    proxy_read_timeout 86400s;\n    proxy_send_timeout 86400s;\n    proxy_buffering off;\n    chunked_transfer_encoding on;\n    proxy_set_header Content-Type text\u002Fevent-stream;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection \"upgrade\";\n}\n3. 建议升级到 go-mcp 最新版本，该版本优化了部分断连场景的处理。","https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\u002F147",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},30982,"如何自定义 MCP Tool 执行的超时时间？","go-mcp 没有提供全局超时参数，因为不同 Tool 执行时间差异较大。推荐方式为每个 Tool 单独设置：\n1. 如果是客户端：在调用 calltool 时传入带有 timeout 的 context (context.WithTimeout)，超时后会发送 CancelledNotification 取消请求。\n2. 如果是服务端：在注册 Tool 函数时对传入的 ctx 设置 timeout，或者实现一个统一的 Middleware，在所有 Tool 注册时传入该 Middleware 来统一处理超时逻辑。","https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\u002F171",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},30983,"stdio client transport 如何读取并打印子进程的 stderr 输出？","框架设计建议在 stdioClientTransport 内部直接读取 stderr 并通过 logger 打印，而不是暴露给用户。用户可以通过传入自定义的 logger 实例来决定输出目的地。如果确实需要外部访问，可以将类型改为 StdioClientTransport 以便进行类型转换获取 stderr 流，但这可能会暴露内部细节。","https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\u002F105",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},30984,"如何在 MCP Server 中实现全局日志、鉴权或监控等横切关注点（类似 Middleware 机制）？","可以通过实现统一的 Middleware 来解决。在注册 Tool 时，将自定义的 Middleware 传入，从而拦截所有请求和响应。这使得开发者无需手动包装每个 handler 函数，即可实现日志记录（时间、方法、参数、结果）、身份验证、指标收集、链路追踪和错误恢复等功能。具体实现可参考在注册 tool func 时传入带有超时或其他逻辑的 middleware 的模式。","https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\u002F181",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},30985,"MCP Server 返回的参数默认值（default）在 go-mcp 中无法识别怎么办？","需要在 go-mcp 的 Property 结构体中添加 Default 字段以支持解析默认值。修改 protocol\u002Fschema_generate.go 中的结构体定义：\ntype Property struct {\n    \u002F\u002F ... 其他字段\n    Default json.RawMessage `json:\"default,omitempty\"`\n}\n添加后，AI 客户端即可读取参数的默认值，避免重复向用户询问。","https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fissues\u002F192",[142,147,152,157,162,167,172,177,182,187,192,197,202,207,212,217,222,227,232,237],{"id":143,"version":144,"summary_zh":145,"released_at":146},222852,"v0.2.25","## 变更内容\n* 修复：在无状态模式下忽略 Session ID 头，由 @amiryona-groundcover 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F197 中实现\n\n## 新贡献者\n* @amiryona-groundcover 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F197 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.24...v0.2.25","2026-04-06T12:45:53",{"id":148,"version":149,"summary_zh":150,"released_at":151},222853,"v0.2.24","## 变更内容\n* 更新：客户端添加 HTTP 头，由 @luopengift 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F194 中完成\n\n## 新贡献者\n* @luopengift 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F194 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.23...v0.2.24","2025-10-10T12:20:12",{"id":153,"version":154,"summary_zh":155,"released_at":156},222854,"v0.2.23","## 变更内容\n* 功能：模式新增默认值，由 @jesse-engineer 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F193 中实现。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.22...v0.2.23","2025-09-18T12:52:42",{"id":158,"version":159,"summary_zh":160,"released_at":161},222855,"v0.2.22","## 变更内容\n* 功能\u002F添加工具过滤支持，由 @lengyue1084 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F191 中实现\n\n## 新贡献者\n* @lengyue1084 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F191 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.21...v0.2.22","2025-09-08T05:57:22",{"id":163,"version":164,"summary_zh":165,"released_at":166},222856,"v0.2.21","## 变更内容\n* 功能：由 @jesse-engineer 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F188 中优化了通道关闭判断。\n* 功能：由 @jesse-engineer 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F189 中为可流式传输的 HTTP 服务器心跳添加了取消功能。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.20...v0.2.21","2025-08-24T07:15:23",{"id":168,"version":169,"summary_zh":170,"released_at":171},222857,"v0.2.20","## 变更内容\n* 修复：@jesse-engineer 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F185 中修复了 lint 错误\n* 工具 outputSchema：@uuclove1992 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F187 中实现\n\n## 新贡献者\n* @uuclove1992 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F187 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.19...v0.2.20","2025-08-09T08:00:52",{"id":173,"version":174,"summary_zh":175,"released_at":176},222858,"v0.2.19","## 变更内容\n* 新增：全局中间件，由 @ProgrammerPlus1998 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F183 中实现\n\n## 新贡献者\n* @ProgrammerPlus1998 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F183 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.18...v0.2.19","2025-07-27T07:28:35",{"id":178,"version":179,"summary_zh":180,"released_at":181},222859,"v0.2.18","## 变更内容\n* 功能新增：由 @jesse-engineer 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F184 中优化了列表工具的解析功能。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.17...v0.2.18","2025-07-23T12:00:47",{"id":183,"version":184,"summary_zh":185,"released_at":186},222860,"v0.2.17","## 变更内容\n* 由 @orijacobs 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F179 中修复了不支持的协议版本消息中的拼写错误\n* 由 @yosizelensky 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F180 中修复了协议版本协商的初始化问题\n\n## 新贡献者\n* @orijacobs 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F179 中完成了首次贡献\n* @yosizelensky 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F180 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.16...v0.2.17","2025-07-09T05:12:12",{"id":188,"version":189,"summary_zh":190,"released_at":191},222861,"v0.2.16","## 变更内容\n* docs: 由 @jesse-engineer 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F177 中更新了 README 文件\n* feat: 由 @chenmingyong0423 在 https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F174 中添加了 ResourceLink 类型及反序列化支持\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.15...v0.2.16","2025-07-01T05:03:44",{"id":193,"version":194,"summary_zh":195,"released_at":196},222862,"v0.2.15","## What's Changed\r\n* Feat\u002Foptimization log by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F173\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.14...v0.2.15","2025-06-17T09:25:28",{"id":198,"version":199,"summary_zh":200,"released_at":201},222863,"v0.2.14","## What's Changed\r\n* refactor: unify method receivers on ResourceTemplate to use pointer receivers by @chenmingyong0423 in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F168\r\n* feat: optimization protocol struct by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F169\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.13...v0.2.14","2025-05-28T08:34:54",{"id":203,"version":204,"summary_zh":205,"released_at":206},222864,"v0.2.13","## What's Changed\r\n* docs: add traditional Vietnamese support documentation on Readme by @huytxx in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F165\r\n* feat: add auth tool by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F167\r\n\r\n## New Contributors\r\n* @huytxx made their first contribution in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F165\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.12...v0.2.13","2025-05-26T16:53:26",{"id":208,"version":209,"summary_zh":210,"released_at":211},222865,"v0.2.12","## What's Changed\r\n* docs: add Traditional Chinese support to documentation and README by @appleboy in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F163\r\n* feat: add receive interrupt by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F166\r\n\r\n## New Contributors\r\n* @appleboy made their first contribution in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F163\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.11...v0.2.12","2025-05-24T08:39:33",{"id":213,"version":214,"summary_zh":215,"released_at":216},222866,"v0.2.11","## What's Changed\r\n* feat: optimization code by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F159\r\n* docs: update readme by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F160\r\n* feat: optimization progress notify handle by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F161\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.10...v0.2.11","2025-05-18T09:49:30",{"id":218,"version":219,"summary_zh":220,"released_at":221},222867,"v0.2.10","## What's Changed\r\n* Feat\u002Freceive stderr by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F157\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.9...v0.2.10","2025-05-18T03:48:08",{"id":223,"version":224,"summary_zh":225,"released_at":226},222868,"v0.2.9","## What's Changed\r\n* feat: GetSessionIDFromCtx by @lariel-fernandes in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F155\r\n* Feat\u002Fsupport progress by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F156\r\n\r\n## New Contributors\r\n* @lariel-fernandes made their first contribution in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F155\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.8...v0.2.9","2025-05-18T03:19:06",{"id":228,"version":229,"summary_zh":230,"released_at":231},222869,"v0.2.8","## What's Changed\r\n* docs: update readme by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F154\r\n* [FEATURE] Support nested anonymous struct member in the schema by @yuvco in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F152\r\n\r\n## New Contributors\r\n* @yuvco made their first contribution in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F152\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.7...v0.2.8","2025-05-17T07:04:17",{"id":233,"version":234,"summary_zh":235,"released_at":236},222870,"v0.2.7","## What's Changed\r\n* feat: implement rate limiting for server and tools by @muzig in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F125\r\n* feat: add notifications\u002Fcancelled by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F151\r\n\r\n## New Contributors\r\n* @muzig made their first contribution in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F125\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.6...v0.2.7","2025-05-15T04:27:46",{"id":238,"version":239,"summary_zh":240,"released_at":241},222871,"v0.2.6","## What's Changed\r\n* feat: sse client add retry option by @jesse-engineer in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F149\r\n* Feat cursor by @qiangmzsx in https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fpull\u002F135\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002FThinkInAIXYZ\u002Fgo-mcp\u002Fcompare\u002Fv0.2.5...v0.2.6","2025-05-14T12:20:30"]