算术计算服务

Calculator MCP Server 是一个后端服务,通过模型上下文协议(MCP)为AI模型(特别是大型语言模型)提供算术计算能力,确保数值查询的准确性和可靠性。

  • by functicons
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 functicons/calculator-mcp-server

使用说明

计算器MCP服务器

计算器MCP服务器是一种后端服务,旨在通过模型上下文协议(MCP)为人工智能模型,特别是大型语言模型(LLM)提供算术计算能力。它允许LLM卸载数学计算,确保数值查询的准确性和可靠性。 例如,当用户询问LLM“3.8-3.11的结果是什么?”时,LLM将使用“3.8-3.11”调用服务器先执行计算,然后回答用户。

此服务器建立在官方 MCP Python SDK 并实现了一个名为 calculator_tool 其接受基于字符串的算术表达式并返回计算的数值结果。

服务器打包为Docker镜像。

特性

  • 符合MCP标准: 遵守模型上下文协议以实现无缝集成。
  • 精确计算: 为基本算术运算(+、-、*、/)提供精确的结果。
  • 安全评估: 使用安全方法解析和计算数学表达式,防止任意代码执行。
  • 标准化API: 通过展示功能 tools/call MCP方法。
  • 码头化: 包含一个Dockerfile,便于容器化、部署和测试。
  • 全面的错误处理: 返回无效输入或计算问题的结构化JSON-RPC错误。

先决条件

  • 码头工人
  • bash (用于运行辅助脚本)
  • Python 3.12(用于理解代码,如果使用Docker进行所有操作,则不严格用于运行)

设置和安装

1.克隆存储库(如果适用)

如果此项目位于Git存储库中,请克隆它:

git clone <repository-url>
cd calculator-mcp-server

2.构建Docker镜像(可选-由以下人员处理 run-tests.sh 和 start-mcp-server.sh 如果需要)

您可以手动构建映像:

./build-image.sh

然而, ./run-tests.sh 如果映像不存在,或者您想在测试前确保它是最新的,它将自动构建映像。同样地, start-mcp-server.sh 可能会包含这一点。

3.运行服务器

要启动服务器,请执行以下操作:

./start-mcp-server.sh

此脚本将确保映像已构建,在Docker容器中启动服务器,并检查其状态。默认情况下,服务器在端口8000上侦听。

用法

计算器MCP服务器通过MCP公开其功能。MCP客户端(例如LLM主机应用程序)将按如下方式与其交互:

  1. 初始化连接: 客户端与服务器(在Docker中运行)建立连接。

  2. 工具发现(可选但推荐): 客户端发送 tools/list 请求。

  3. 工具调用: 客户端发送 tools/call 请求使用 calculator_tool.

    请求:

    {
        "jsonrpc": "2.0",
        "method": "tools/call",
        "params": {
            "name": "calculator_tool",
            "arguments": {
                "expression": "10 * (2 + 3) - 5 / 2"
            }
        },
        "id": "request-id-123"
    }
    

    成功响应:

    {
        "jsonrpc": "2.0",
        "result": {
            "value": 47.5
        },
        "id": "request-id-123"
    }
    

测试与 test-mcp-client.sh

提供了一个简单的CLI客户端脚本来测试正在运行的服务器。确保服务器正在通过运行 ./start-mcp-server.sh.

./test-mcp-client.sh list"
./test-mcp-client.sh call "2+2"

运行测试

单元测试在Docker容器中运行。如有必要,该脚本将处理图像的构建。

./run-tests.sh

此脚本首先调用 ./build-image.sh 确保Docker镜像是最新的,然后执行 pytest 在一个新的容器实例中。

停止服务器(Docker)

如果您使用启动服务器 ./start-mcp-server.sh,您可以通过以下方式阻止它:

./stop-mcp-server.sh

贡献

请参阅 developer_guide.md.