使用说明
mcp装置
通过以下方式提供确定性单位转换的MCP服务器 品脱.LLM猜测单位转换——此服务器使其精确。
这有什么作用
在上显示5个工具、3个资源和2个提示 模型上下文协议任何MCP客户端(Claude Code、Claude Desktop、Cursor)都可以转换单位、检查维度兼容性、解析数量字符串和简化表达式——所有这些都由Pint的400多个单位注册表而不是LLM算法支持。
运作原理
A. FastMCP 服务器包装Pint UnitRegistry 并通过MCP原语将其公开:
- 工具 —
convert,check_compatibility,parse_quantity,list_compatible_units,simplify - 资源 —
units://systems,units://systems/{system},units://dimensions - 提示 —
convert_document(提取并转换文本中的所有数量),check_calculations(验证尺寸一致性)
默认情况下,服务器通过stdio(适用于Claude Code/Claude Desktop)或Streamable HTTP运行 fastmcp run (用于远程/容器化部署)。
快速启动
先决条件
- Python 3.12+
- 紫外线
安装并运行
git clone https://github.com/quantumleeps/mcp-units.git
cd mcp-units
uv sync
添加到克劳德代码
claude mcp add --transport stdio mcp-units -- \
uv run --directory /path/to/mcp-units mcp-units
添加到克劳德桌面
增添 claude_desktop_config.json:
{
"mcpServers": {
"mcp-units": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-units", "mcp-units"]
}
}
}
通过HTTP运行
uv run fastmcp run src/mcp_units/server.py --transport http --port 8000
码头工人
docker build -t mcp-units .
docker run -p 8000:8000 mcp-units
测试
uv sync --all-extras
uv run pytest
评估
让法学硕士访问单位转换工具真的能提高其在物理问题上的准确性吗?
对70个SciBench大学级物理问题进行了评估,这些问题需要2种以上的单元类型,涉及6个Claude模型(共840次运行)。最新型号Opus 4.6的涨幅最大(+8.6pp,70.0%)→ 78.6%),这表明,其广泛的知识和精细的工具使用相结合,使其能够利用单位转换作为可靠的增强。4.5-Sonnet是一个强大的推理者和工具使用者,也有所改进(+2.9pp)。较旧的3.7-Sonnet回归(-2.9pp)——分析表明,它有时会将中间转换结果视为最终答案,或者在重复的工具调用中旋转而不收敛,这与不太成熟的工具使用能力是一致的。令人惊讶的是4.5-Haiku:与4.5-Sonnet同一代,具有出色的推理能力和工具使用能力,但下降了(-1.4pp)。对于较小的模型,该工具似乎是一种分心而不是增强——该模型具有使用它的复杂性,但并不总是能够判断何时有用。每个模型只有70个问题和一次运行,这些每个模型的增量带来了真正的不确定性——特别是4.5-Haiku的结果可能反映了噪声,而不是有意义的模式。
下一步行动
- 单位归一化 --模特写
cm3但平特需要cm^3.轻便normalize_unit()预处理器加上更好的工具描述和格式指导将消除eval中观察到的12个解析失败。 - 表达式计算 --模型有时会传递数学表达式(
-1.602e-19 * 1.33e-39 / ...)作为值参数convert().Pint拒绝这些,因为它期望浮动。接受和评估简单的算术表达式将使该工具能够处理中间计算。 - 偏移单元处理 --平特加薪
OffsetUnitCalculusError在复合表达式中表示°C和°F。这parse_quantity该工具需要对温度偏移进行特殊处理。 - 问题集更大 --70个问题展示了评估框架,但限制了每个模型增量的统计置信度。单个模型内的运行间差异也是未知的。扩展到200多个问题,每个问题进行多次运行,可以量化这两种影响。
运行eval
uv sync --group eval
uv run python -m eval.runner # run all 6 models × 2 conditions (requires ANTHROPIC_API_KEY)
uv run python -m eval.visualize # generate charts from results
uv run python -m eval.analyze # print detailed analysis
项目结构
mcp-units/
src/mcp_units/
server.py # FastMCP instance — tools, resources, prompts
registry.py # Pint UnitRegistry + compatible units workaround
models.py # Result dataclasses for structured tool output
eval/
runner.py # Async eval runner — baseline vs tool-augmented
problems.py # SciBench problem loading (70 problems, 2+ unit types)
scorer.py # Answer extraction + 5% tolerance scoring
mcp_tools.py # FastMCP Client wrapper for tool execution
results.py # RunResult dataclass + JSON persistence
visualize.py # Grouped bar chart + error histograms
analyze.py # 16-section detailed analysis
tests/
test_tools.py # 18 Pint logic tests
test_server.py # 17 MCP Client integration tests
Dockerfile # HTTP transport for containerized deployment
贡献
PR欢迎。跑 pre-commit install 克隆后,确保 uv run pytest 提交前通过。
许可证
麻省理工学院