GAP的MCP
GAP(组、算法、编程)包的模型上下文协议(MCP)服务器实现。
概述
该项目提供了一个统一的MCP服务器,将GAP包函数作为MCP客户端(如Claude Desktop、Cherry Studio、Cline等)可以调用的工具公开。
特性
- 统一服务器:单个MCP服务器,带有指定GAP包中的工具
- 动态工具加载:自动从使用AutoDoc记录的GAP包中提取工具
- 软件包特定配置:通过以下方式自定义每个包的工具过滤
mcp_for_gap/files/config.yml - 命名空间工具:不同包中的工具带有前缀,以避免命名冲突
建筑
config.yml → extract_tools.py → JSON files → mcp_server.py → MCP Clients
↓ ↓
path-to/mcp_for_gap/files/packages/ GAP Session
├── CAP.json
├── LinearAlgebraForCAP.json
└── ModulePresentationsForCAP.json安装
- 确保GAP已安装并在PATH中可用
- 安装Python mcp包:
pip install mcp配置
1.配置GAP包(config.yml)
在文件中指定 config.yml 导出哪些GAP包以及包含/排除哪些工具:
packages:
- name: LinearAlgebraForCAP
tools:
- MatrixCategory
- VectorSpaceObject
- VectorSpaceMorphism
- name: ModulePresentationsForCAP
tools:
- all
exclude_tools_with_subwords:
- INSTALL
extract_mcp_schema_for:
- LinearAlgebraForCAP
- ModulePresentationsForCAP2.提取工具
运行提取脚本以生成JSON工具定义:
python3 extract_tools.py这将在中创建JSON文件 mcp_for_gap/files/packages/ 目录。
3.配置MCP客户端
将统一服务器添加到MCP客户端配置中。服务器将自动从所有GAP包中加载工具。
适用于克劳德桌面
编辑您的Claude Desktop配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
添加以下配置:
{
"mcpServers": {
"gap": {
"command": "python3",
"args": [
"/absolute/path/to/mcp_for_gap/mcp_server.py"
]
}
}
}对于其他MCP客户端
使用相同的命令和参数模式。服务器通过stdio进行通信,并与任何兼容MCP的客户端协同工作。
重要:替换 /absolute/path/to/mcp_for_gap/mcp_server.py 使用克隆目录的实际绝对路径。
用法
运行服务器
只需运行服务器(它将自动加载所有包):
python3 mcp_server.py服务器将:
- 从中的所有JSON文件加载工具
mcp_for_gap/files/packages - 创建GAP会话
- 启动MCP服务器监听stdio
与MCP客户端一起使用
配置后,这些工具将在您的MCP客户端中可用。工具名称以包缩写作为前缀,以避免冲突。前缀由包名称中的大写字母组成:
- CAP模块演示文稿 →
MPFCAP_前缀 - 线性代数ForCAP →
LAFCAP_前缀 - CAP →
CAP_前缀
工具名称示例:
- 呼叫
GAP_EvalCode执行任意GAP代码 - 呼叫
MPFCAP_FreeLeftPresentation创建自由左演示文稿 - 呼叫
MPFCAP_AsLeftPresentation将矩阵转换为左视图 - 呼叫
LAFCAP_Dimension求向量空间对象的维数
Claude Desktop中的示例用法:
Use the GAP_EvalCode tool to compute the symmetric group S4:
code: "SymmetricGroup(4);"文件结构
mcp_server.py-加载所有包并共享一个GAP会话的MCP服务器extract_tools.py-从GAP包文档中提取工具定义gapwrapper.py-GAP进程的Python包装器files/config.yml-包和工具过滤的YAML配置。files/GAP.json-Json文件来运行任意GAP代码。files/packages/-用户提取的JSON工具定义
运作原理
- 工具提取:
extract_tools.py解析GAP包XML文档并提取函数签名、描述和参数类型。 - 工具筛选:每个包都可以有自定义排除规则来过滤内部或实用程序函数。
- 统一服务器:
mcp_server.py创建一个MCP服务器,从中指定的所有包中加载工具mcp_for_gap/files/config.yml,在它们前面加上包缩写(由包名称中的大写字母组成),以避免命名冲突。 - 共享GAP会话:所有工具都使用相同的GAP流程实例,使其高效,并允许在函数调用之间共享状态。
- GAP执行:当调用工具时,服务器使用原始函数名构造GAP命令,并通过共享
gapwrapper,将结果返回给客户端。
发展
添加新包
- 将包添加到
mcp_for_gap/files/config.yml:
- name: YourPackage
tools:
- all
exclude_tools_with_subwords:
- InternalFunction- 运行提取:
python3 extract_tools.py- 重新启动MCP客户端-新工具将自动加载
直接测试GAP集成:
from gapwrapper import GAP
gap = GAP()
print(gap("SymmetricGroup(4);"))测试工具加载:
from mcp_server import load_all_tools
tools = load_all_tools()
print(f"Loaded {len(tools)} tools")许可证
国际学生中心
贡献
欢迎投稿!请随时提交拉取请求或未决问题。
