M

MCP数学MacOS工具

@rohinigaonkar/mcp-math-macos
0 Stars 61 次浏览 rohinigaonkar 更新于 2026-08-23

使用模型控制协议实现一个数学代理,执行数学计算并将结果以视觉形式在Keynote中呈现,从而实现在幻灯片中绘制形状和添加文本的功能。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

MCP 简介;在 MacOS 上的 Keynote 中绘图和添加文本

该项目实现了一个使用模型控制协议 (MCP) 的数学代理,该代理可以在 macOS 的 Keynote 中执行数学计算并以可视化方式呈现结果。代理可以在 Keynote 幻灯片上绘制形状和添加文本,使其对于创建数学演示文稿非常有用。

功能

  • 数学运算(加法、减法、乘法、除法等)
  • 高级数学函数(阶乘、对数、三角函数)
  • ASCII 值计算和指数和运算
  • 在 Keynote 中的可视化展示:
    • 绘制矩形
    • 向幻灯片中添加文本
    • 自动幻灯片管理

先决条件

  • Python 3.x
  • macOS(用于 Keynote 集成)
  • 系统中安装了 Keynote
  • Google Gemini API 密钥

安装

  1. 克隆仓库:
git clone <your-repository-url>
cd keynote-drawing-text
  1. 安装所需依赖项:
pip install -r requirements.txt
  1. 在项目根目录下创建一个 .env 文件,并添加您的 Gemini API 密钥:
GEMINI_API_KEY=your_api_key_here

项目结构

  • mcp-server.py:包含具有数学工具和 Keynote 集成的服务器实现
  • mcp-client.py:实现与 LLM 通信并管理工作流的客户端
  • requirements.txt:列出所有 Python 依赖项

使用方法

客户端脚本 (mcp-client.py) 会自动处理 MCP 服务器的启动和通信。您只需要运行带有查询参数的客户端:

python mcp-client.py "Your mathematical query here"

例如:

python mcp-client.py "Find the ASCII values of characters in INDIA and then return sum of exponentials of those values"

如果没有提供查询参数,脚本将使用上面示例中提到的默认查询。

客户端将执行以下操作:

  1. 自动在后台启动 MCP 服务器
  2. 打开 Keynote 并创建新文档
  3. 执行请求的数学运算
  4. 在幻灯片上绘制一个矩形
  5. 将结果作为文本添加到矩形内

注意:MCP 服务器由客户端脚本内部管理,因此无需手动启动。服务器处理所有的数学运算和 Keynote 交互,而客户端则管理与语言模型的通信并协调整个工作流程。

可用的数学工具

  • 基本运算:

    • 加法 (add)
    • 减法 (subtract)
    • 乘法 (multiply)
    • 除法 (divide)
    • 幂运算 (power)
    • 平方根 (sqrt)
    • 立方根 (cbrt)
  • 高级运算:

    • 阶乘 (factorial)
    • 自然对数 (log)
    • 余数 (remainder)
    • 三角函数 (sin, cos, tan)
    • 斐波那契数列 (fibonacci_numbers)
    • ASCII 值计算 (strings_to_chars_to_int)
    • 指数和 (int_list_to_exponential_sum)

Keynote 集成

项目包括用于 Keynote 集成的工具:

  • mac_open_keynote:打开 Keynote 并创建新文档
  • mac_draw_rectangle:在当前幻灯片上绘制矩形
  • mac_add_text_in_keynote:向当前幻灯片添加文本

错误处理

系统包括全面的错误处理功能:

  • API 通信问题
  • 无效的数学运算
  • Keynote 集成问题
  • LLM 响应的超时处理

工具

  • 框架的 Model Control Protocol (MCP)
  • 语言模型使用 Google Gemini
  • 演示平台使用 Apple Keynote

贡献

欢迎贡献!请随时提交 Pull Request。