项目简介
本项目 'mcp-calculator-go' 是一个使用 Go 语言开发的简单计算器,它实现了 Model Context Protocol (MCP) 服务器,可以作为 MCP 服务器的基础示例进行学习和参考。
主要功能点
- 提供计算工具 (Tool): 名为 'calculate' 的工具,支持加法 ('add')、减法 ('sub')、乘法 ('mul')、除法 ('div') 四种基本算术运算。
- 提供 Prompt 模板 (Prompt): 名为 'calc' 的 Prompt 模板,同样支持上述四种算术运算,可以返回包含用户指令和计算结果的 Prompt 消息。
- 基于 MCP 协议: 实现了 MCP 协议,可以与任何兼容 MCP 协议的客户端进行通信。
- 使用 'mcp-go' 库: 基于 'mcp-go' 库构建,简化了 MCP 服务器的开发。
安装步骤
-
安装依赖: 项目使用 'Taskfile' 管理依赖和构建,请先确保安装了 'task' 工具。然后执行以下命令安装依赖:
task deps task enum或者,如果您没有安装 'task',可以手动执行以下命令:
go install github.com/abice/go-enum@latest go generate ./... -
构建可执行文件: 执行以下命令编译项目,生成名为 'mcp-calculator-go' 的可执行文件:
task build或者
go build -o mcp-calculator-go
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令才能连接。以下是针对不同 MCP 客户端的配置示例,您需要将 '/path/to/mcp-calculator-go' 替换为您实际的可执行文件路径。
针对 VS Code 和通用 MCP 客户端 (JSON 配置):
{ "mcpServers": { "calculator-go": { "command": "/path/to/mcp-calculator-go", "args": [], "disabled": false, "autoApprove": [] } } }
- 'server name': 'calculator-go' (服务器名称,客户端用于标识和引用)
- 'command': '/path/to/mcp-calculator-go' (MCP 服务器可执行文件的路径)
- 'args': '[]' (启动参数,本例中无需参数)
- 'disabled': 'false' (是否禁用,'false' 表示启用)
- 'autoApprove': '[]' (自动批准的请求列表,本例中无需配置)
针对 Zed 编辑器 (JSON 配置):
"context_servers": { "calculator-go": { "command": { "path": "/path/to/mcp-calculator-go", "args": [], "env": {} }, "settings": {} } }
- 'server name': 'calculator-go' (服务器名称,客户端用于标识和引用)
- 'command':
- 'path': '/path/to/mcp-calculator-go' (MCP 服务器可执行文件的路径)
- 'args': '[]' (启动参数,本例中无需参数)
- 'env': '{}' (环境变量,本例中无需配置)
- 'settings': '{}' (服务器设置,本例中无需配置)
基本使用方法
-
启动 MCP 服务器: 在终端中运行编译生成的可执行文件 'mcp-calculator-go'。服务器将通过标准输入/输出 (stdio) 与客户端通信。
-
配置 MCP 客户端: 根据您使用的 MCP 客户端(如 VS Code, Zed 等),按照上述 "服务器配置" 部分的说明进行配置,确保客户端能够连接到 'mcp-calculator-go' 服务器。
-
调用工具或 Prompt: 在 MCP 客户端中,您可以发送请求调用 'calculate' 工具或 'calc' Prompt,并传递必要的参数 ( 'op', 'x', 'y') 来执行计算操作。具体的调用方式取决于您使用的 MCP 客户端的功能和界面。
例如,客户端可以发送 JSON-RPC 请求调用 'calculate' 工具,参数如下:
{ "jsonrpc": "2.0", "method": "call_tool", "params": { "tool_name": "calculate", "arguments": { "op": "add", "x": 10, "y": 5 } }, "id": 1 }或者调用 'calc' Prompt,参数相同。服务器将返回计算结果。
信息
分类
AI与计算