内容
# EML-MCP
EML 数学符号的 MCP 服务器。
`eml_mcp_server.py` 是一个单文件 MCP 服务器,专注于符号 EML、纯模式 EML、SymPy 比较,以及从后续代数结构论文中得出的紧凑的广义 EML 家族工具集。
## 为什么这个项目得以实现
EML 方法论文启发我开发了一个新的 MCP 服务器,以便我可以测试 EML 方法。
后续关于 EML 背后代数结构的论文激励我开发第二层工具:用于探索广义 EML 家族、其隐藏的阿贝尔群结构、其建设性恢复链以及开放的无常数生成器问题的紧凑 MCP 函数。
## 包含内容
服务器暴露了 thirteen 个 MCP 工具:
- `eml_compile`
- `eml_eval`
- `eml_simplify`
- `eml_stability_check`
- `eml_fit`
- `sympy_eval`
- `sympy_simplify`
- `eml_family_library`
- `eml_extract_group_structure`
- `eml_recover_core_family`
- `eml_generate_from_addition_formula`
- `eml_constant_free_scan`
- `eml_explore_family`
## 实用模式和纯模式
EML 路线支持两种编译风格:
- **实用模式** — 默认模式,设计用于紧凑树和高效评估
- **纯模式** — 一种可选模式,将数字常数重写为由 distinguished 常数 `1` 和 `eml(...)` 运算符构建的 EML 树
纯模式旨在进行纸质结构检查和实验。变量仍表示为变量,但数字常数被重写为纯 EML 样式常数构造。
支持 `pure` 标志的 EML 工具是:
- `eml_compile`
- `eml_eval`
- `eml_simplify`
- `eml_stability_check`
- `eml_fit`
## 广义 EML 家族工具
`eml_family_*` 工具是基于后续论文中的广义运算符视图的精选结构工具。它们故意简洁,并与内置家族库一起工作,而不是尝试证明任意用户定义的运算符。
### 内置家族
- `original_eml`
- `cosine_arccos`
- `arccot_cot`
- `tanh_artanh`
- `elliptic_pair`
- `involutive_piecewise`
### 家族工具的作用
- `eml_family_library` — 列出内置家族目录或检查一个家族
- `eml_extract_group_structure` — 暴露中性元素、逆映射和诱导阿贝尔群律
- `eml_recover_core_family` — 显示六步建设性恢复链
- `eml_generate_from_addition_formula` — 报告家族特定的加法公式和派生运算
- `eml_constant_free_scan` — 总结开放的无常数生成器问题和精选候选者
- `eml_explore_family` — 返回一个家族的聚合视图
## 主要文件
- `eml_mcp_server.py` — 单文件 MCP 服务器,直接示例和测试框架
- `docs/FUNCTION_CATALOG.md` — 工具目录和参数概述
- `docs/ARCHITECTURE.md` — 组件级设计
- `docs/METHOD.md` — 数学和计算方法
- `docs/TEST.md` — 如何运行 MCP 测试和从 Python 调用服务器
- `SKILLS.md` — 人类和 LLM 的实用使用指南
## 运行模式
```bash
python3 eml_mcp_server.py server
python3 eml_mcp_server.py test
python3 eml_mcp_server.py examples
python3 eml_mcp_server.py all
```
## 半复杂但可读的示例
### 示例 1:通过两条路线识别
```text
sin(x)**2 + cos(x)**2
```
- 使用 `eml_compile` 编译为 EML
- 使用 `eml_simplify` 简化生成的树
- 使用 `sympy_simplify` 确认相同的身份
### 示例 2:检查纯模式下的常数
```text
pi + e + 1/2
```
使用带有 `pure: true` 的 `eml_compile` 检查常数如何重写为 EML 树,其常数叶减少到 distinguished 常数 `1`。
### 示例 3:评估熟悉的几何形式
```text
sqrt(a^2 + b^2)
```
使用 `eml_eval` 和 `sympy_eval` 带有绑定,如 `a=5`、`b=12`,以确认两条路线都给出 `13`。
### 示例 4:检查轻度分支风险案例
```text
sin(x) + log(x)
```
使用 `eml_compile` 和 `eml_stability_check` 在区域 `x in [0.2, 2.0]` 上,查看对数如何影响数值风险配置文件。
### 示例 5:检查内置家族库
使用 `eml_family_library` 列出精选的广义 EML 家族,然后按名称请求一个,如 `original_eml` 或 `tanh_artanh`。
### 示例 6:结构性地检查一个家族
使用 `eml_explore_family` 和内置家族名称,查看:
- 运算符公式
- 诱导群结构
- 恢复链
- 加法公式
- 派生运算
### 示例 7:从数据中拟合紧凑律
对小型且可解释的数据集使用 `eml_fit`,例如 `y = log(x)` 在 `x = [0.5, 1.0, 2.0, 4.0]` 处采样,并比较最佳候选家族。
## 需求
脚本使用:
- Python 3.10+
- `numpy`
- `sympy`
- `scipy`
- `mcp` 用于 `server` 和 `test` 模式
## MCP 传输
服务器在 stdio 上使用官方 MCP Python SDK,这使得从 Python 子进程和 LLM 工具包装器进行测试变得容易。
## 参考
- Andrzej Odrzywołek,*从单个运算符导出所有基本函数*(EML 方法)
https://arxiv.org/html/2603.21852v2
- Tomasz Stachowiak,*Odrzywołek 的 EML 运算符背后的代数结构*
https://arxiv.org/abs/2604.23893