MCP文本镜像
一个用Go编写的小型MCP(模型上下文协议)服务。它镜像(反转)UTF-8文本,同时保留字形簇。
此存储库实现了一个最小的MCP服务器和一个 mirror 该工具帮助我/我们学习MCP基础知识,并构建至少与VS Code的Copilot兼容的东西(通过 stdio 运输)。
\[!提示\] 关于这个项目的日文文章:“【Golang】最简单的MCP Server 的Go 安装@奇塔
特性
- 反转UTF-8文本的MCP工具
- Unicode字形簇-安全(处理表情符号、组合标记、ZWJ序列)
stdio运输 仅(未实现HTTP/SSE传输)
先决条件
- 需要Go 1.25或更高版本(请参阅 go.mod).
- 走 1.25 已于2025-08年发布。
golangci-lint(可选;make test运行lint)make(可选;用于构建和测试自动化)- 支持的MCP客户端
stdio运输
快速开始
此应用程序旨在通过MCP使用VS Code的Copilot扩展。任何支持MCP的兼容客户端 stdio 例如,Claude Desktop的交通工具也应该可以使用。
构建与测试
- 构建:
make build
# or
go build -o text-mirror .- 测试和棉绒:
make test
# or
golangci-lint run --fix
go test -cover -race ./...使用VS代码(复制品)
VS Code中的MCP支持通常从1.102及更高版本开始提供。
- 构建
text-mirror作为可执行二进制文件(如上所述)并复制其绝对路径。
- 例如。, /home/user/go/bin/text-mirror
- 在VS Code的MCP配置文件中注册为MCP服务器。
- 打开VS Code的命令面板(F1 或 Ctrl+Shift+P)并搜索:
- MCP: Open User Configuration
- 编辑生成的 mcp.json 如下(仅举最小示例):
{
"servers": {
"text-mirror": {
"command": "/full/path/to/text-mirror",
"env": {
"MCP_TEXT_MIRROR_DEBUG_LOG": "/full/path/to/text-mirror.log"
}
}
}
}- 如果 mcp.json 已经有其他服务器,只需添加 text-mirror 进入下 servers. - command 是必需的。 - 替换 /full/path/to/text-mirror 以及构建二进制文件的实际路径。 - 如果 type 省略,VS Code假定 "stdio" 默认情况下,本地服务器。所以不需要在这里具体说明。 - env 是可选的。 - 如果 MCP_TEXT_MIRROR_DEBUG_LOG 如果存在,它将启用对指定日志文件的调试日志记录。 - 替换 /full/path/to/text-mirror.log 使用所需的日志文件路径。 - 有关配置格式的更多详细信息,请参阅 VS代码MCP文档.
- 重新启动VS代码
- 这 text-mirror MCP服务器应出现在VS代码扩展列表中(作为已安装的MCP服务器窗格)。 - 单击旁边的配置图标 text-mirror 并检查可以做什么。 - 您可以但不必在此处手动启动服务器;VS Code将在需要时自动启动。 - 有关更多详细信息,请参阅 VS代码MCP文档.
- 打电话给
mirror通过Copilot聊天工具。
- 在Copilot Chat中,选择一个支持MCP的“Agent”模型。
- 如果模型支持MCP工具,则会出现“工具”图标。
- 这 mirror 工具现在应该可用了。您可以要求Copilot使用它:
> 使用文本镜像反转此文本:🙂🙃🙂👩💻👨💻123
或
> Use the mirror tool to reverse "你好
运作原理
如果MCP服务器在本地运行,那么像VS Code MCP/Claude Desktop这样的MCP客户端会以一种非常类似Unix的方式与它通信。
- MCP客户端启动
text-mirror二进制作为子进程(生成MCP服务器)。 - MCP服务器通过stdio监听工具调用。
- MCP客户端向服务器发送指令数据(JSON-RPC) [标准输入]().
- 服务器处理请求,反转文本,并通过stdout将结果发送回。
- MCP客户端接收响应并将其显示给用户。
开发说明
- 边缘情况下的测试和100%的测试覆盖率
- Linting通过
golangci-lint - 测试包括表驱动的案例,用于组合标记、ZWJ序列、标志和长字符串,以练习棘手的Unicode行为。
.editorconfig为了保持格式的一致性(Go文件的制表符、其他文件的空格、LF结尾、UTF-8字符集)。
贡献
这个项目主要是一个学习资源,但欢迎贡献(修复、测试、文档)。
许可证
- MIT许可证。看 许可证 了解详情。
