内容
# 桥接 MCP
一个用于通过简单的查询语言 **MathQL** 探索数学对象集合的 MCP 服务器。
## 安装
`bridge-mcp` 尚未在 PyPI 上发布;直接从 GitHub 安装当前版本:
pip install git+https://github.com/IMFM-SI/bridge-mcp.git
这将安装 `bridge-mcp` 命令以及一个小的数学对象数据库,因此服务器无需进一步设置即可运行。使用 MCP 客户端注册 `bridge-mcp` 命令。
## 与 Claude Desktop 一起使用
要将 MCP Bridge 添加到 Claude Desktop,您需要编辑其 JSON 配置文件:
* **MacOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`,
* **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
在 `mcpServers` 部分,您需要添加以下内容:
```json
{
"mcpServers": {
"bridge-mcp": { "command": "⟨absolute-path⟩/bridge-mcp" }
}
}
```
其中 `⟨absolute-path⟩` 取决于 `bridge-mcp` 命令的安装位置:
1. 如果您使用 `pip` 安装了 Bridge MCP,那么 `which bridge-mcp` 应该会告诉您可执行文件的绝对路径。
2. 如果您克隆了存储库并希望测试开发版本,请安装在存储库中的绝对路径采用以下形式:`⟨absolute-path-to-bridge-mcp-repository⟩/.venv/bin/bridge-mcp`.
您需要重启 Claude Desktop 以使设置生效。
## MathQL
MathQL 是一种小型、typed 的查询语言,用于询问有关数学对象集合的数学问题。查询命名一个或多个 *domains* 对象,给出对象必须满足的 *condition*,并列出要 *return* 的内容。它是类型检查的,并编译为 SQL,然后在存储对象的数据库上运行。查询作为 JSON 通过 `query` 工具提交;条件和排序以熟悉的表达式语法编写 — 算术、比较、`&&`/`||`/`!`、`defined`/`undefined`,以及列表和元组字面量。例如,五个顶点的树:
```json
{
"domains": [["g", "Graph8"]],
"output": ["g.graph6", "g.degree_sequence"],
"condition": "g.num_vertices == 5 && g.is_tree"
}
```
除了查询外,服务器还提供进一步处理查询结果的工具。图以其 `graph6` 字符串返回,这是一种紧凑的编码方式;将该字符串传递给 `edge_list` 工具会返回图的顶点和边,而其他工具则提供邻居、最短路径、最大团、适当着色等。一个典型的会话查询感兴趣的对象,然后使用这些工具检查它们。
## 数据库
### 小图
数据库包含所有不超过 8 个顶点的非同构简单图(共 13,598 个),每个图都附有部分不变量的注解 — 其中包括顶点数和边数、度数序列、色数和自同构计数。每个不变量都可以在条件中查询和在输出中返回;图本身以 graph6 编码存储。单个域是 `Graph8` — 调用 `describe` 工具获取完整的字段列表。数据库使用 nauty 和 networkx 生成(参见 `scripts/generate_graphs.py`)。
## 可用工具
### 基于 `networkx` 的图工具
这些工具补充了数据库:数据库记录了一个不变量的值(例如团数),而这些工具返回了一个见证(一个实际的最大团)。它们还构建图(从边列表或邻接矩阵)、比较图和绘制图。
这不是完整的列表 — 有关完整的当前集合,请从正在运行的服务器(例如使用 `mcp dev`)列出工具或在 `src/bridge_mcp/graph/tools.py` 中阅读它们的文档字符串。以下是几个示例:`edge_list`、`invariants`、`optimal_coloring`、`is_isomorphic`、`draw`。
## 开发和贡献
有关如何获取软件包的开发版本以及如何贡献新数据库的信息,请参见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。