mcpField
C
Cruncher Mcp

Cruncher Mcp

本地服务
github.com科研与教育123 周前更新

关于 Cruncher Mcp

Cruncher 是面向 AI 客户端及 MCP 实现学习者的轻量科学计算器 MCP 服务。它提供数学、统计和单位换算工具,并利用 Node.js 功能实现输入验证与计算超时控制。

主要功能

  1. 01基本运算与表达式求值
  2. 02三角函数、对数与数论
  3. 03统计和百分比计算
  4. 0480 多种单位换算
  5. 05科学常数与可选记忆功能
  6. 06分级工具集与计算超时控制

适用场景

  1. 01求解公式和科学表达式
  2. 02用统计方法分析数值数据
  3. 03转换支持的计量单位
  4. 04了解纯 JavaScript 的 MCP 实现

MCP 相关

通过 stdio 向 MCP 客户端提供独立的计算工具。它使用原生 JavaScript 实现 MCP 与 JSON-RPC 处理,不依赖官方 SDK。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cruncher": {
"command": "npx",
"args": [
"-y",
"@slbdn/cruncher-mcp"
],
"env": {
"CRUNCHER_TOOL_SET": "<CRUNCHER_TOOL_SET>",
"CRUNCHER_TIMEOUT": "<CRUNCHER_TIMEOUT>"
}
}
}
}
启动命令npx -y @slbdn/cruncher-mcp
需要配置的环境变量
CRUNCHER_TOOL_SETTool exposure tier: 'minimal' (5 tools), 'standard' (34 tools, default), or 'full' (43 tools)
CRUNCHER_TIMEOUTWorker thread timeout in milliseconds for heavy calculations (default: 3000, range: 100-60000)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@slbdn/cruncher-mcp1.2.29

工具

34

收录的工具列表 · 更新于 3 周前

参数类型必填说明
anumber是
bnumber是

详细介绍

Cruncher:科学计算器 MCP 服务

Version Node.js Version License: MIT Tests Status

这是一款功能强大的科学计算器,可供你的 AI 助手使用,并以 Model Context Protocol (MCP) 服务的形式构建。Cruncher 让兼容的 AI 客户端(如 Claude Desktop)通过简单、安全且标准化的接口,执行复杂的数学计算、处理内存、进行统计分析并访问科学常数。

🌟 纯粹承诺(零依赖)

Cruncher 是一款极具教育意义、极其轻量的工具。它无需引入任何庞大的外部库(没有 mathjs、没有 zod、没有 @modelcontextprotocol/sdk),就能实现强大的功能。一切都由 Node.js 原生能力处理:

  • 安全的表达式求值:Cruncher 不依赖 mathjs 或危险的 eval(),而是使用 new Function(),并通过严格的白名单 Regex 进行保护,确保只有数字和数学运算符能够通过。
  • 输入验证:它没有使用 Zod 等庞大的架构库,而是通过自定义的递归验证函数,直接依据 JSON Schemas 严格验证 AI 输入。
  • 超时保护:它不依赖复杂的进程管理器,而是利用 Node.js 的 worker_threads 启动计算。如果 AI 请求计算一个包含数百万次循环的阶乘,主线程会在严格的超时期限(默认 3 秒)后轻松终止工作线程。此超时可通过 CRUNCHER_TIMEOUT 环境变量(以毫秒为单位)配置,确保服务即使在计算负载繁重时也能保持响应。
  • 浮点精度:它不使用 decimal.js,而是通过底层的动态整数缩放逻辑解决经典的 JS 数学错误(0.1 + 0.2 = 0.30000000000000004)。

📚 MCP 教育指南

对于希望深入了解 Model Context Protocol (MCP) 的开发者来说,本项目是绝佳的学习资源。由于它刻意避免使用官方的 @modelcontextprotocol/sdk,因此 MCP 协议、JSON-RPC 消息处理、输入验证和错误格式化的完整实现,都以纯 JavaScript 呈现。

阅读 cruncher.js,可以清晰、直观地了解 MCP 服务如何通过 stdio 通信、解析传入的请求(initialize、tools/list、tools/call),并向 AI 客户端响应,从而揭开 SDK 通常隐藏起来的“魔法”。

什么是 Model Context Protocol?

Model Context Protocol (MCP) 是一项开放标准,让 AI 应用能够安全地连接外部数据源和工具。你可以把它看作面向 AI 的通用 API。将 Cruncher 实现为 MCP 服务后,任何理解 MCP 的 AI 都能立即获得强大的内置计算器能力,无需定制集成。

✨ 功能

Cruncher 提供一套全面的计算器功能,完全从零构建,不依赖繁重的依赖项:

  • 稳健的架构:
    • 零依赖:完全依赖 Node.js 标准库。
    • 严格的输入验证:自定义架构验证器可防止 AI 幻觉和无效数据。
    • 无限循环防护:使用 Node.js worker_threads,并设置严格的 3 秒超时,防止复杂计算导致服务冻结。
    • 精准的十进制运算:采用整数缩放方法,避免经典的 JS 浮点数错误(例如 0.1 + 0.2 === 0.3)。
  • 分级工具开放:提供三个级别(minimal、默认的 standard 和 full),以优化上下文令牌用量。
  • 基本算术:加法、减法、乘法、除法、取模。
  • 表达式求值:安全计算完整的纯文本数学表达式(例如 (5 + 3) * 10 / 2)。
  • 幂和根:乘方(a^b)、平方根。
  • 数论:阶乘(n!)。
  • 三角函数:正弦、余弦、正切、反正弦(asin)、反余弦(acos)和反正切(atan)(支持角度和弧度)。
  • 对数:常用对数和自然对数(ln)。
  • 统计函数:对数字数组求和、平均值、中位数、最小值、最大值、范围、计数、方差和标准差。
  • 百分比函数:求百分比、百分比变化和反向百分比计算。
  • 单位转换:涵盖 8 个类别的 80 多种转换(长度、重量、温度、面积、体积、时间、速度、digital_storage)。
  • 便捷函数:绝对值。
  • 常量:轻松获取数学常量(pi、e、tau、phi、sqrt2、euler_mascheroni)、物理常量(c、g、G、h、k、R)和化学常量(NA、e_charge、m_e、m_p)。
  • 存储器函数:M+、M-、MR(存储器读取)和 MC(存储器清除)——仅限 full 级别。

🚀 安装与使用

只需几分钟,即可让 Cruncher 在 Claude Desktop 中运行。

第 1 步:准备工作

确保系统已安装 Node.js(版本 18.0.0 或更新版本)。可从 nodejs.org 下载。

第 1 步:通过 npm 快速开始

推荐:通过 npm 安装并直接使用:

npx @slbdn/cruncher-mcp

这会自动下载并运行最新版本。

第 2 步:配置 Claude Desktop

推荐:使用 npm 包以自动更新:

{
  "mcpServers": {
    "cruncher": {
      "command": "npx",
      "args": ["-y", "@slbdn/cruncher-mcp"]
    }
  }
}
第 3 步:手动下载文件(替代方式)

如果你更倾向于手动下载文件:

  1. 直接从 GitHub 下载 cruncher.js 文件。

  2. 将其放在固定位置(例如 C:\mcp-servers\cruncher.js 或 /home/user/mcp-servers/cruncher.js)。

  3. 找到 Claude Desktop 配置文件:

    • Windows:%APPDATA%\Claude\claude_desktop_config.json
    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  4. 添加 MCP 服务配置,并将其指向已下载的文件:

    {
      "mcpServers": {
        "cruncher": {
          "command": "node",
          "args": ["C:/Users/YOUR_USERNAME/mcp-servers/cruncher.js"],
          "env": {
            "CRUNCHER_TOOL_SET": "standard"
          }
        }
      }
    }
    

    **macOS/Linux 用户须知:**请使用 POSIX 风格的路径,例如 "/home/YOUR_USERNAME/mcp-servers/cruncher.js"。确保 node 可执行文件位于系统 PATH 中。

第 4 步:开始计算!
  1. 保存配置文件,并完全退出 Claude Desktop 应用。
  2. 重启 Claude Desktop。它会自动连接到 Cruncher 服务。
  3. 开始提问!
OpenWebUI(原 Ollama WebUI)

OpenWebUI 原生支持连接 stdio MCP 服务。

选项 A:使用 npm 包

  1. 前往 管理面板 > 设置 > 工具 > MCP 服务。
  2. 点击 添加服务。
  3. 将其命名为“Cruncher”,选择 Command 并输入 npx,将 Args 设置为 @slbdn/cruncher-mcp。

选项 B:使用已下载的文件

  1. 前往 管理面板 > 设置 > 工具 > MCP 服务。
  2. 点击 添加服务。
  3. 将其命名为“Cruncher”,选择 stdio,使用 node 作为命令,并将 /path/to/cruncher.js 作为参数。
Cursor IDE

你可以让 Cursor 内置的 AI 执行数学运算并计算哈希值。

选项 A:使用 npm 包

  1. 打开 Cursor 设置(齿轮图标)> 功能 > MCP 服务。
  2. 点击 + 添加新的 MCP 服务。
  3. 将类型设为 command,名称设为 cruncher,命令设为 npx @slbdn/cruncher-mcp。

选项 B:使用已下载的文件

  1. 打开 Cursor 设置(齿轮图标)> 功能 > MCP 服务。
  2. 点击 + 添加新的 MCP 服务。
  3. 将类型设为 command,名称设为 cruncher,命令设为 node /path/to/cruncher.js。
Cline(VS Code 扩展)

如果你在 VS Code 中使用 Cline 进行 Agent 式编码,请打开 MCP 配置文件(cline_mcp_settings.json)并添加:

选项 A:使用 npm 包

{
  "mcpServers": {
    "cruncher": {
      "command": "npx",
      "args": ["-y", "@slbdn/cruncher-mcp"]
    }
  }
}

选项 B:使用已下载的文件

{
  "mcpServers": {
    "cruncher": {
      "command": "node",
      "args": ["/path/to/cruncher.js"],
      "env": {
        "CRUNCHER_TOOL_SET": "standard"
      }
    }
  }
}
Goose(终端 Agent)

Goose 是一款轻量级、基于终端的 AI 助手,全面支持 MCP。

选项 A:使用 npm 包

  1. 编辑 ~/.goose/config.yaml(或本地项目配置)。
  2. 添加新的服务条目:
mcpServers:
  cruncher:
    command: npx
    args:
      - -y
      - "@slbdn/cruncher-mcp"

选项 B:使用已下载的文件

  1. 编辑 ~/.goose/config.yaml(或本地项目配置)。
  2. 添加新的服务条目:
mcpServers:
  cruncher:
    command: node
    args:
      - "/path/to/cruncher.js"
    env:
      CRUNCHER_TOOL_SET: "standard"
  1. 重启 Goose。现在,你可以直接让 Goose 执行 evaluate_expression 或 median 等计算。
Zed Editor(AI 面板)

Zed 内置的 AI 面板支持 MCP 连接。

选项 A:使用 npm 包

  1. 打开 设置 → AI → MCP 服务。
  2. 点击 添加服务并填写:
    • 名称:cruncher
    • 命令:npx
    • Args:@slbdn/cruncher-mcp
  3. 保存。现在,Zed AI 可以调用 Cruncher 进行精确的算术运算和统计。

选项 B:使用已下载的文件

  1. 打开 设置 → AI → MCP 服务。
  2. 点击 添加服务并填写:
    • 名称:cruncher
    • 命令:node
    • Args:/absolute/path/to/cruncher.js
    • Env(可选):CRUNCHER_TOOL_SET=standard
  3. 保存。现在,Zed AI 可以调用 Cruncher 进行精确的算术运算和统计。
LM Studio(本地大模型 + MCP)

LM Studio 完全离线运行大模型,现在也内置了 MCP 客户端。

选项 A:使用 npm 包

  1. 在 LM Studio 中打开 设置 → MCP。
  2. 点击 添加服务并提供:
    • 可执行文件:npx
    • 参数:@slbdn/cruncher-mcp
  3. 确认。你的私有模型现在可以将数学运算交给 Cruncher 处理,全程不会产生任何网络流量。

选项 B:使用已下载的文件

  1. 在 LM Studio 中打开 设置 → MCP。
  2. 点击 添加服务并提供:
    • 可执行文件:node
    • 参数:/absolute/path/to/cruncher.js
    • 环境变量(可选):CRUNCHER_TOOL_SET=standard
  3. 确认。你的私有模型(例如 Llama 3、DeepSeek-V2)现在可以将数学运算交给 Cruncher 处理,全程不会产生任何网络流量。
LibreChat 配置

如果你使用 LibreChat,可以将以下配置添加到 librechat.yaml 文件中:

选项 A:使用 npm 软件包

  cruncher:
    type: stdio
    command: npx
    args:
      - -y
      - "@slbdn/cruncher-mcp"

选项 B:使用已下载的文件

  cruncher:
    type: stdio
    command: node
    args:
      - "/opt/mcp/cruncher.js"
    env:
      CRUNCHER_TIMEOUT: "5000"

Claude 示例问题

“正弦值为 0.5 的角度是多少度?”

“计算这些数字的平均值、中位数和极差:[15, 22, 8, 41, 19, 30]”

“2 的 10 次方是多少?”

“[10, 12, 8, 14, 6] 的标准差是多少?”

“240 的 15% 是多少?”

“一只股票的价格从 $50 涨到 $75。百分比变化是多少?”

“测试成绩 [85, 92, 78, 90, 88] 的方差是多少?”

“计算 [3, 7, 2, 9, 1] 中数值的极差”

“计算表达式:sin(pi/4) + sqrt(16) + log10(100)”

“10 的阶乘是多少?”

“17 除以 5 的余数是多少?”

完整版示例(使用 CRUNCHER_TOOL_SET=full):

“将 99 存入内存,加上 5,然后取回总数。”

“[10, 20, 30, 40, 50] 的第 75 百分位数是多少?”

“将 11010 从二进制转换为十进制。”

“批量计算:144 的平方根,加上 10,然后平方。”

“将三角函数切换到弧度模式。”

“清除结果缓存并显示缓存统计信息。”

“取回内存中的内容,然后减去 15 并存储结果。”

“[23, 45, 12, 67, 89, 34, 56, 78, 90, 11] 的第 95 百分位数是多少?”

“将 0xFF 从十六进制转换为二进制。”


📋 可用工具

Cruncher 将其函数作为独立的 MCP 工具提供。以下是完整列表:

工具名称描述参数
基本算术
evaluate_expression计算纯文本数学表达式(例如 (5 + 3) * 10 / 2)。expression(字符串)
add将两个数字相加(a + b)。a(数字),b(数字)
subtract用第一个数字减去第二个数字(a - b)。a(数字),b(数字)
multiply将两个数字相乘(a * b)。a(数字),b(数字)
divide用第一个数字除以第二个数字(a / b)。a(数字),b(数字)
modulo计算余数(a mod b)。a(数字),b(数字)
幂与根
power计算 a 的 b 次幂(a^b)。base(数字),exponent(数字)
sqrt计算一个值的平方根。value(数字)
数论
factorial计算非负整数的阶乘(n!)。n(数字,非负整数)
单位换算
convert_unit在常见单位之间进行换算。8 个类别,80 多种单位。value(数字),category(字符串),from(字符串),to(字符串)
进制转换(完整版)
convert_base在 2、8、10、16 进制之间进行转换。value(字符串),from_base(2、8、10、16),to_base(2、8、10、16)
三角函数
sine计算角度的正弦值。angle(数字),unit(度/弧度,可选)
cosine计算角度的余弦值。angle(数字),unit(度/弧度,可选)
tangent计算角度的正切值。angle(数字),unit(度/弧度,可选)
asin计算一个值的反正弦(arcsine)。返回角度。value(数字),unit(度/弧度,可选)
acos计算一个值的反余弦(arccosine)。返回角度。value(数字),unit(度/弧度,可选)
atan计算一个值的反正切(arctangent)。返回角度。value(数字),unit(度/弧度,可选)
对数
logarithm计算一个值的常用对数(以 10 为底)。value(数字)
natural_log计算一个值的自然对数(以 e 为底)。value(数字)
统计函数
sum计算数字数组的总和。numbers(数字数组)
avg计算数字数组的平均值。numbers(数字数组)
median计算数字数组的中位数。numbers(数字数组)
min查找数字数组中的最小值。numbers(数字数组)
max查找数字数组中的最大值。numbers(数字数组)
count统计数组中的元素数量。numbers(数字数组)
range计算数组的极差(最大值 - 最小值)。numbers(数字数组)
percentile计算给定百分位数(0-100)对应的值。完整版本。numbers(数字数组),percentile(数字,0-100)
variance计算数组的方差。可计算样本方差(n-1)或总体方差(n)。numbers(数字数组),population(布尔值,可选)
std_dev计算标准差。可计算样本标准差(n-1)或总体标准差(n)。numbers(数字数组),population(布尔值,可选)
percentage_ofX 是 Y 的百分之几?例如,200 的 15% = 30。percent(数字),total(数字)
percentage_change计算从 A 到 B 的百分比变化。例如,50→80 = 60%。from(数字),to(数字)
percentage_reverseX 是哪个数的 Y%?例如,30 是 200 的 15%。value(数字),percent(数字)
其他
absolute计算一个数字的绝对值。value(数字)
常量
get_constant返回数学、物理或化学常量的值。name("pi"、"e"、"tau"、"phi"、"sqrt2"、"euler_mascheroni"、"c"、"g"、"G"、"h"、"k"、"R"、"NA"、"e_charge"、"m_e"、"m_p")
记忆功能(完整版本)
memory_clear清除计算器记忆(MC)。(无参数)
memory_recall调取记忆中存储的值(MR)。(无参数)
memory_add将一个值加到当前记忆中(M+)。value(数字)
memory_subtract从当前记忆中减去一个值(M-)。value(数字)
角度模式(标准版)
set_angle_mode设置全局角度模式(默认:度)。unit("degrees" 或 "radians")
get_angle_mode获取当前角度模式。(无参数)
管理工具(完整版本)
batch按顺序执行多个工具调用。operations(包含 {tool, arguments} 的数组)
cache_clear清除计算缓存。(无参数)
cache_info显示缓存统计信息。(无参数)

⚙️ 配置

环境变量
变量默认值描述
CRUNCHER_TIMEOUT3000工作线程执行超时时间(ms)。范围为 100-60000
CRUNCHER_TOOL_SETstandard控制工具的开放范围:minimal(5 个)、standard(34 个,默认值)、full(43 个)
工具层级 - 完整参考

Cruncher 通过环境变量 CRUNCHER_TOOL_SET 提供 3 个层级。每个层级都严格包含前一个层级的全部内容。

层级概览
层级工具数使用场景
Minimal(5 个)仅核心算术轻量级计算器、简单数学 Agent
Standard(34 个 - 默认)所有 Minimal 工具 + 三角函数、统计、常量、单位转换通用 AI 助手数学计算
Full(43 个)所有 Standard 工具 + 内存、批处理、缓存、进制转换、高级统计高级用户、多步骤工作流
Minimal 层级(5 个工具)

所有工具都在工作线程中运行,并受超时保护。

#工具描述
1evaluate_expression计算数学表达式字符串
2add加法(a + b)
3subtract减法(a - b)
4multiply乘法(a × b)
5divide除法(a ÷ b)
Standard 层级(34 个工具 - 包含全部 5 个 Minimal 工具)
#工具类别
6sqrt平方根
7power求幂(a^b)
8absolute绝对值
9modulo余数(a mod b)
10factorial阶乘(n!)
11logarithm常用对数
12natural_log自然对数(ln)
13get_constant获取物理/数学常量
14-16sine、cosine、tangent三角函数
17-19asin、acos、atan反三角函数
20set_angle_mode切换角度/弧度(全局)
21get_angle_mode查看当前角度模式
22-25sum、avg、min、max基本统计
26count统计元素数量
27variance方差(样本或总体)
28std_dev标准差(样本或总体)
29percentage_of求 Y 的 X%
30percentage_change求 A→B 的百分比变化
31percentage_reverseX 是多少的 Y%?
32median中位数
33range极差(最大值 - 最小值)
34convert_unit80 多种单位转换,8 个类别
Full 层级(43 个工具 - 包含全部 34 个 Standard 工具)
#工具类别
35percentile第 N 百分位数对应的值
36convert_base2/8/10/16 进制转换
37memory_add加到累计总值
38memory_subtract从累计总值中减去
39memory_recall获取当前内存值
40memory_clear将内存重置为零
41batch一次调用最多执行 50 个操作
42cache_clear清除结果缓存
43cache_info显示缓存统计信息
工具名称模糊匹配

如果 LLM 调用了不存在的工具,Cruncher 会使用 Levenshtein 距离查找最接近的匹配项并给出建议:

拼写错误建议匹配类型
factfactorial前缀匹配
facfactorial前缀匹配
sinnsine1 个字符拼写错误
squrtsqrt字符顺序颠倒
addddadd多余字母
dividdivide缺少后缀
totally_wrong(无)差异过大 - 无建议

响应格式:

{
  "error": {
    "code": -32601,
    "message": "Tool 'fact' not found. Did you mean 'factorial'?"
  }
}
Extended evaluate_expression Built-ins

除基本算术运算外,evaluate_expression 还原生支持以下函数:

函数说明示例结果
sin(x)正弦(弧度制,在表达式中始终使用弧度)sin(pi / 2)1
cos(x)余弦(弧度制,在表达式中始终使用弧度)cos(pi)-1
tan(x)正切(弧度制)tan(pi / 4)~1
asin(x)反正弦(结果为弧度)asin(1)π/2
acos(x)反余弦(结果为弧度)acos(0)π/2
atan(x)反正切(结果为弧度)atan(1)π/4
sqrt(x)平方根sqrt(144)12
log10(x)以 10 为底的对数log10(1000)3
ln(x)自然对数(以 e 为底)ln(e)1
log(x, b)任意底数的对数log(8, 2)3
abs(x)绝对值abs(-5)5
round(x)四舍五入到最接近的整数round(3.7)4
floor(x)向下取整floor(3.9)3
ceil(x)向上取整ceil(3.1)4
min(a,b,...)最小值min(3, 1, 4)1
max(a,b,...)最大值max(3, 1, 4)4

可自由组合:sin(pi/6) + sqrt(16) + log10(100) = 6.5

改进的错误消息

现在,定义域错误会指出问题所在:

  • sqrt(-1) → "检查以下情况:sqrt(负数)、log(负数/零)、asin/acos 超出 [-1,1]"
  • 1/0 → "检查是否除以零或溢出"
  • asin(5) → "asin/acos 超出 [-1,1]"
表达式中的常量

现在可以在 evaluate_expression 中直接使用数学和物理常量名称:

常量说明值
piπ(圆周率)3.14159...
e欧拉数2.71828...
tauτ = 2π6.28318...
phi黄金比例(φ)1.61803...
sqrt2√21.41421...
euler_mascheroni欧拉-马歇罗尼常数(γ)0.57721...
c光速(m/s)299792458
g重力加速度(m/s2)9.80665
G万有引力常数6.6743e-11
h普朗克常数(J·s)6.62607015e-34
k玻尔兹曼常数(J/K)1.380649e-23
R理想气体常数(J/mol·K)8.314462618
NA阿伏伽德罗常数(1/mol)6.02214076e23
e_charge元电荷(C)1.602176634e-19
m_e电子质量(kg)9.1093837015e-31
m_p质子质量(kg)1.67262192369e-27

示例:

2 * pi * 5       → 31.4159...
phi ^ 2          → 2.61803...
G * 1e11         → 6.6743
sqrt2 * sqrt2    → 2
e * e            → 7.38906...
c * 2            → 599584916

规则:

  • 使用显式运算符:2 * pi 有效,2pi 无效(不支持隐式乘法)
  • 常量可与科学计数法共存:1e6 和 e * 2 均可正确计算
  • 优先匹配最长的常量名称:euler_mascheroni 不会被解析成 299792458uler_mascheroni
分层工具暴露

CRUNCHER_TOOL_SET 环境变量可让你仅暴露实际需要的工具,从而优化上下文令牌用量:

层级工具数令牌预算使用场景
minimal5~160 tokens基本算术。所有复杂数学运算均通过 evaluate_expression 完成
standard34~1,150 tokens算术、三角函数、统计、百分比、常量、单位换算(默认)
full43~1,500 tokens标准工具 + 内存、进制转换、百分位数、批处理、缓存

注意:即使在 minimal 模式下,evaluate_expression 也能处理复杂数学运算;只是 sin、sqrt 等单独工具不会注册为独立的 MCP 工具调用。这样可节省高达 90% 的上下文令牌。

MCP 配置示例(claude_desktop_config.json):

{
  "mcpServers": {
    "cruncher-minimal": {
      "command": "node",
      "args": ["/path/to/cruncher.js"],
      "env": { "CRUNCHER_TOOL_SET": "minimal" }
    }
  }
}

⛏️ 工作原理(面向开发者)

Cruncher 是一个纯 Node.js JavaScript 应用,通过**标准输入/输出(stdio)**进行通信。这使它成为轻量、可移植且安全的 MCP 服务。一次工具调用的完整流程如下:

  1. 初始化:启动时,服务会监听 MCP 客户端发送的 initialize 请求,并返回其功能和版本信息(v1.2.31)。
  2. 工具发现:客户端发送 tools/list 请求,服务会返回所有可用计算器工具的完整列表及其 inputSchema,该架构定义了必需参数及其类型。
  3. 输入验证:执行任何工具之前,服务都会根据工具的 inputSchema 运行自定义的递归 validateArguments 函数。这可确保必填字段齐全、类型正确(数字、字符串、数组)、枚举值有效,并且符合最小值/最大值约束——全程无需任何外部库。
  4. Worker 线程执行:验证通过后,工具调用会交由隔离的 Node.js worker_thread 处理。这能全面保护主线程(及其 stdio 通信),避免因长时间运行或无限计算而受阻。
  5. 超时保护:可配置的计时器(CRUNCHER_TIMEOUT,默认值为 3000ms)会监控 Worker。如果 Worker 耗时过长,主线程会通过 worker.terminate() 强制终止它,并向 AI 客户端返回 -32000 错误。
  6. 安全计算与结果:Worker 使用 safeMath(整数缩放)执行处理函数,以确保小数运算安全;随后将结果发回主线程,由主线程格式化最终的 JSON-RPC 2.0 响应并写入 stdout。

🤝 贡献

欢迎贡献!如果你想添加新函数、修复 Bug 或改进文档,欢迎提交 issue 或拉取请求。

📜 许可证

本项目采用 MIT 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。