大学学习规定MCP服务器

一个通过stdio传输向LLM客户端提供大学学习规定(Studienordnungen)Markdown文档的MCP服务器。

  • by lpre1dt
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 lpre1dt/spo-mcp

使用说明

学习项目: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 <name> — 获取特定学习项目的完整学习条例(Studienordnung)
  • quit — 退出

这是在将服务器连接到Claude Desktop之前验证服务器的好方法。

5) 连接到Claude桌面(自定义MCP/stdio)

Claude Desktop支持通过标准输入输出(stdio)连接到自定义的MCP服务器。基本思路是配置Claude Desktop以运行 python3 mcp_spo_server.py 作为MCP服务器进程,并通过标准输入/输出与其进行通信。

步骤(高级别):

  1. 打开Claude桌面版,查找“集成”或“自定义MCP”设置。

  2. 创建一个新的MCP集成,并选择stdio传输方式(或等效的可运行本地进程的选项)。

  3. 配置命令以运行您的服务器,例如:

    • 命令: python3
    • 参数: mcp_spo_server.py
    • 工作目录:仓库根目录(即 mcp_spo_server.py (位于)
  4. 确保环境使用的是安装了所需依赖项的相同Python环境(如果需要,请在命令中激活您的虚拟环境,或者提供Python可执行文件的完整路径,例如)。 /full/path/to/.venv/bin/python)。

  5. 保存集成设置并启动它。Claude Desktop 应该会初始化 MCP 连接并调用 list_tools() 发现可用的工具。

  6. 一旦连接成功,您就可以调用该工具 list_available_studiengaenge 查看可用程序,或 get_spo_for_studiengang 带着论点/理由 {"studiengang": "Informatik"} (或您偏好的程序)。

示例JSON工具调用(用于使用MCP客户端API的LLM):

{
  "tool": "get_spo_for_studiengang",
  "arguments": {"studiengang": "Wirtschaftsinformatik"}
}

服务器将返回一个 TextContent 包含完整Markdown文档的对象(前面带有结构化标题,帮助模型解析表格和学期信息)。