学习项目:MCP服务器(学习规定)
这个仓库提供了一个小型的MCP(模型上下文协议)服务器,该服务器通过stdio传输方式,为使用LLM(大型语言模型)客户端的用户提供大学学习规定(Studienordnungen)作为工具。服务器会返回所请求学习项目的完整Markdown文档。
这个README文件说明了如何在本地运行服务器,并使用随附的工具对其进行测试 test_client.py并将其通过stdio传输方式连接到Claude Desktop(或其他支持MCP的桌面级大型语言模型客户端)。
快速事实
- 服务器入口点:
mcp_spo_server.py - 配置:
config.json(默认文档目录:data/) - 测试客户端:
test_client.py - 传输:stdio(适用于Claude Desktop的“自定义MCP”/“stdio”集成)
- Python:建议使用3.10+版本
1) 安装依赖项
创建一个虚拟环境并安装所需的软件包:
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt如果你不想使用虚拟环境,你可以全局安装包,但不建议这样做。
2) 验证数据目录
服务器从(指定位置)读取Markdown文件 data/ 默认目录。每个文件应是一个完整的Markdown格式的《学习条例》(Studienordnung) scan_study_programs() 该函数将自动检测所有Markdown文件并创建用于查找的键。
如果你的文件在另一个目录中,请更新 config.json:
{
"mcp_server": {
"studienordnungen": {
"command": "python3",
"args": [
"/path/to/project/mcp_spo_server.py"
]
},
}
}3) 在本地运行MCP服务器(标准输入输出)
使用 Python 启动服务器(如果你使用了虚拟环境,请确保已激活):
python3 mcp_spo_server.py服务器使用stdio传输方式,并将等待MCP客户端通过stdin/stdout进行连接。
4) 使用随附的测试客户端进行本地测试
该存储库包含一个简单的测试客户端 test_client.py 该程序作为子进程启动服务器,并执行一些基本检查。
运行非交互式测试:
python3 test_client.py运行交互式客户端以手动尝试命令:
python3 test_client.py --interactive交互模式下的命令:
list— 列出可用的学习项目get— 获取特定学习项目的完整学习条例(Studienordnung)quit— 退出
这是在将服务器连接到Claude Desktop之前验证服务器的好方法。
5) 连接到Claude桌面(自定义MCP/stdio)
Claude Desktop支持通过标准输入输出(stdio)连接到自定义的MCP服务器。基本思路是配置Claude Desktop以运行 python3 mcp_spo_server.py 作为MCP服务器进程,并通过标准输入/输出与其进行通信。
步骤(高级别):
- 打开Claude桌面版,查找“集成”或“自定义MCP”设置。
- 创建一个新的MCP集成,并选择stdio传输方式(或等效的可运行本地进程的选项)。
- 配置命令以运行您的服务器,例如:
- 命令: python3 - 参数: mcp_spo_server.py - 工作目录:仓库根目录(即 mcp_spo_server.py (位于)
- 确保环境使用的是安装了所需依赖项的相同Python环境(如果需要,请在命令中激活您的虚拟环境,或者提供Python可执行文件的完整路径,例如)。
/full/path/to/.venv/bin/python)。
- 保存集成设置并启动它。Claude Desktop 应该会初始化 MCP 连接并调用
list_tools()发现可用的工具。
- 一旦连接成功,您就可以调用该工具
list_available_studiengaenge查看可用程序,或get_spo_for_studiengang带着论点/理由{"studiengang": "Informatik"}(或您偏好的程序)。
示例JSON工具调用(用于使用MCP客户端API的LLM):
{
"tool": "get_spo_for_studiengang",
"arguments": {"studiengang": "Wirtschaftsinformatik"}
}服务器将返回一个 TextContent 包含完整Markdown文档的对象(前面带有结构化标题,帮助模型解析表格和学期信息)。
