高精度计算微服务

一个34位高精度计算微服务,可集成到任何LLM工作流中,提供REST API和MCP服务器支持,确保计算的安全性和确定性。

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

使用说明

计算器MCP

一个高精度的34位计算器微服务,您可以将其放入任何LLM工作流程中。同时公开REST API 和 一 主控程序 服务器,以便代理可以安全、确定地评估表达式。
简体中文 | 日本语


我为什么需要这个?

众所周知,大型语言模型在精确算术方面很差——它们可能会产生数字事实的幻觉或返回不精确的结果。 计算器MCP 为您的代理提供一个确定性的、34位精度的预言机,确保每次计算都是值得信赖和可重复的。


支持的表达式

计算器MCP理解标准算术以及一组集中的科学函数和常数。

类别 语法/示例
加法/减法 1 + 2 - 3
乘法/除法 4 * 5 / 2
电源 2 ** 10 → 1024
括号和一元+/- -(1 + 2) * 3
常量 pi, e
三角函数 sin(pi/6), cos(pi/3), tan(pi/4)
反向三角函数 asin(0.5), acos(1), atan(1)
对数 log(8, 2) (底座可选; log(10) =ln)
根与力量 sqrt(2), pow 通过 **
指数型 exp(1)
绝对值 abs(-3.5)

所有计算均返回34位精度 result 弦。


特性

  • 使用Python的34位十进制算术 decimal
  • 标准数学函数:trig、log、power等。
  • REST端点: POST /evaluate, GET /healthz
  • MCP功能 calc.evaluate 准备好进行函数调用/工具调用
  • YAML驱动的测试套件和100%类型化的代码库

快速开始

先决条件

安装 uv 一次(如果你没有):

pip install uv

安装

git clone https://github.com/your-org/calculator-mcp.git
cd calculator-mcp
uv pip install -r requirements.txt   # creates .venv automatically

运行REST API

uv run python -m uvicorn app.main:app --reload --port 8000
# Swagger UI: http://127.0.0.1:8000/docs

运行MCP服务器(HTTP)

uv run python -m uvicorn server.main:app --reload --port 9000

注:有关直接工具集成(例如在Cursor中),请参阅 stdio 服务器说明如下。


与大型语言模型(LLM)集成

该项目包括一个完整的、可运行的示例,说明如何使用模型上下文协议(MCP)将计算器与LLM驱动的代理集成。

代理人使用官方 mcp Python库,用于根据自然语言查询动态发现和调用计算器的函数。

运作原理

该示例遵循官方MCP stdio 客户端模式:

  1. stdio_server.py:通过标准输入/输出进行通信的轻量级MCP服务器。它导入并公开核心 calculate 功能。
  2. examples/smart_calculator_agent.py:启动的客户端代理 stdio_server.py 作为一个子流程。它使用OpenAI的GPT-4来解释用户查询和官方 mcp 库在需要时调用计算器工具。

这种分离确保了核心计算器逻辑独立于服务器实现(它可以通过HTTP或 stdio).

运行示例

  1. 设置您的OpenAI API密钥:

    创建一个 .env 在项目的根目录中创建文件并添加密钥:

    OPENAI_API_KEY="sk-..."
    
  2. 运行代理:

    使用 uv 运行客户端脚本。客户端将自动启动 stdio 服务器。

    uv run python examples/smart_calculator_agent.py
    

示例代码(smart_calculator_agent.py)

该代理的完整源代码可在 examples 目录。它演示了如何启动 stdio 服务器并和LLM交互。

查看代理源代码(smart_calculator_agent.py)


与MCP兼容的工具(如游标)一起使用

您可以通过创建一个 .cursor/mcp.json 项目根目录中的文件。这个文件告诉Cursor如何找到工具并与之通信。

方法1:连接到正在运行的HTTP服务器(推荐)

此方法适用于您正在运行MCP服务器并希望从Cursor连接到它的情况。

  1. 启动MCP服务器:首先,确保符合规范的JSON-RPC服务器正在运行。

    uv run python -m uvicorn server.main:app --reload --port 9000
    
  2. 配置光标:

    • 在您的项目中,创建一个名为 .cursor/mcp.json.
    • 添加以下JSON配置。此消息会告诉Cursor您的服务器在指定的URL上可用,并使用标准MCP协议。
    {
      "mcpServers": {
        "calculator": {
          "url": "http://127.0.0.1:9000"
        }
      }
    }
    
    • 保存文件。游标将自动检测到它,并发送 tools/list 向服务器发出请求,并 calc.evaluate AI可用的工具。

方法2:作为本地标准工具运行

如果您不想管理单独的服务器进程,这种替代方法很有用。游标将使用标准输入/输出按需启动和停止工具。

  1. 配置光标:
    • 在您的项目中,创建一个名为 .cursor/mcp.json.
    • 将以下JSON配置添加到文件中:
    {
      "mcpServers": {
        "calculator": {
          "command": "uv",
          "args": ["run", "python", "stdio_server.py"],
          "cwd": "${workspaceFolder}"
        }
      }
    }
    
    • 保存文件。游标将运行 stdio_server.py 在后台编写脚本 calculate AI可用的功能。

测试

uv run pytest -q

许可证

麻省理工学院