当前位置: 首页 > ds >正文

Go语言Stdio传输MCP Server示例【Cline、Roo Code】

Go语言 Stdio 传输 MCP Server 示例

AI 应用开发正处于加速发展阶段,新技术和新方法不断涌现。Model Context Protocol (MCP) 作为一个开放标准,正在改变 AI 应用与数据源和工具集成的方式。

Go-MCP 是一个 MCP 协议的 GO 实现,此 SDK 采用清晰的分层架构设计,确保代码模块化、可扩展性和可维护性。通过深入了解这一架构,开发者可以更好地利用 Go-MCP 的所有功能,甚至根据自己的需求进行定制和扩展。

https://github.com/ThinkInAIXYZ/go-mcp

Go-MCP 的架构可以抽象为三个主要层次:

  1. 传输层(Transport Layer):处理底层通信,支持不同的传输协议;
  2. 协议层(Protocol Layer):实现所有 MCP 协议数据结构定义;
  3. 用户层(User Layer):包括服务器和客户端实现,提供面向用户的 API。

这种分层设计使各层彼此解耦,允许独立演化和替换,同时保持整体功能一致性。

Jack码原理说明

Jack码是一种基于北京时间的编码方式,具体规则如下:

  1. 获取当前北京时间,格式为 yyyyMMddHHmm,如 202505050829,类型为 int64。
  2. 将该时间值加上常数 1314520
  3. 对结果进行 Base64 编码,得到最终的 Jack码。

示例:

  • 当前北京时间:2025年5月5日08时29分 → 202505050829

  • 加上常数:202505050829 + 1314520 = 202506865349

  • Base64 编码:MjAyNTA2ODY1MzQ5

(以上内容是作者为了练习开发一个自定义MCP服务临时想出的概念,仅供娱乐)

代码实现

go mod init jack_stdio_server

main.go

package mainimport ("context""encoding/base64""fmt""strconv""time""github.com/ThinkInAIXYZ/go-mcp/protocol""github.com/ThinkInAIXYZ/go-mcp/server""github.com/ThinkInAIXYZ/go-mcp/transport"
)type JackRequest struct{}type JackResponse struct {JackCode string `json:"jack_code"`RawValue int64  `json:"raw_value"`BaseTime int64  `json:"base_time"`
}func handleJackRequest(ctx context.Context, req *protocol.CallToolRequest) (*protocol.CallToolResult, error) {// 解析参数(如有)// 获取当前北京时间now := time.Now().In(time.FixedZone("CST", 8*3600))base := now.Format("200601021504")baseInt, err := strconv.Atoi(base)if err != nil {return nil, err}jackValue := baseInt + 1314520jackStr := strconv.Itoa(jackValue)jackCode := base64.StdEncoding.EncodeToString([]byte(jackStr))// 构造文本内容content := &protocol.TextContent{Type: "text",Text: fmt.Sprintf("Jack码: %s\n原始值: %s\n基准时间: %s", jackCode, jackStr, base),}// 返回结果,Content 字段为 Content 接口切片return &protocol.CallToolResult{Content: []protocol.Content{content},IsError: false,}, nil
}func main() {transportServer := transport.NewStdioServerTransport()mcpServer, _ := server.NewServer(transportServer)tool, _ := protocol.NewTool("get_jack_code", "获取当前Jack码", JackRequest{})mcpServer.RegisterTool(tool, handleJackRequest)mcpServer.Run()
}

go.mod

module jack_stdio_servergo 1.24.1require github.com/ThinkInAIXYZ/go-mcp v0.2.2require (github.com/google/uuid v1.6.0 // indirectgithub.com/orcaman/concurrent-map/v2 v2.0.1 // indirectgithub.com/tidwall/gjson v1.18.0 // indirectgithub.com/tidwall/match v1.1.1 // indirectgithub.com/tidwall/pretty v1.2.0 // indirectgithub.com/yosida95/uritemplate/v3 v3.0.2 // indirect
)

然后编译

go mod tidy
go build

Cline (Roo Code)配置mcp Json文件(Windows)

{"mcpServers": {"jack_stdio": {"command": "./jack_stdio_server.exe","args": [],"env": {},"disabled": false,"autoApprove": [],"alwaysAllow": []}}
}

如果mcp服务文件不在项目目录下的话请写完整路径,如C:\\mcpServer\\jack_stdio_server.exe

配置好后提问AI:

当前的jack码是多少?

AI:

image-20250509135204515

http://www.xdnf.cn/news/5034.html

相关文章:

  • 《循序渐进linux》
  • 应急响应基础模拟靶机-security1
  • Vue Router 3 使用详解:从零构建嵌套路由页面
  • MySQL 与 Elasticsearch 数据一致性方案
  • Java反射 八股版
  • 三个线程 a、b、c 并发运行,b,c 需要 a 线程的数据如何解决
  • 虚假AI工具通过Facebook广告传播新型Noodlophile窃密木马
  • 具身智能时代的机器人导航和操作仿真器综述
  • MySQL 8.0(主从复制)
  • Linux 内核中的 security_sk_free:安全模块与 Socket 释放机制解析
  • 02_线性模型(回归线性模型)
  • 图像匹配导航定位技术 第 10 章
  • 创始人 IP 的破局之道:从技术突围到生态重构的时代启示|创客匠人评述
  • Skype已停服!
  • 文件包含2
  • 人工智能基础知识笔记八:数据预处理
  • 【K8S系列】Kubernetes常用 命令
  • Java学习手册:单体架构到微服务演进
  • PCA降维
  • Linux 文件目录管理常用命令
  • 如何减少极狐GitLab 容器镜像库存储?
  • 基于卷积神经网络和Pyqt5的猫狗识别小程序
  • Femap许可使用数据分析
  • NestJS 框架深度解析
  • 《让歌声跨越山海:Flutter借助Agora SDK实现高质量连麦合唱》
  • 力扣题解:21.合并两个有序链表(C语言)
  • 对遗传算法思想的理解与实例详解
  • Redis 主从复制集群搭建教程
  • 基于vue框架的电子商城m8qu8(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 构筑芯片行业的“安全硅甲”