教育元数据SPARQL服务器

基于Python实现的MEM本体MCP服务器,提供SPARQL查询和德国教育课程数据管理功能。

  • by vgoehler
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 vgoehler/py-mem-mcp

使用说明

py mem mcp

MEM(教育媒体元数据)本体MCP服务器的Python实现, 建造于 FastMCP 并用 诗歌.

这是对 MEM-MCP 在Python中。

特性

服务器公开了以下MCP工具:

工具 说明
sparql_query 对MEM三元组存储执行任意SPARQL SELECT查询
list_bundeslaender 列出本体中可用的所有德国联邦州
list_schulfaecher 列出给定州的所有学校科目
list_schularten 列出给定州的所有学校类型
find_lehrplaene 查找按州、学科、学校类型或年级筛选的课程
get_lehrplan_tree 获取Lehrplan的层次结构(深度受限)
get_children 获取特定节点的直接子节点
search 按关键字在Lehrplan节点上进行全文搜索

项目结构

py-mem-mcp/
├── pyproject.toml          # Poetry project definition
├── Dockerfile              # Multi-stage Docker image
├── docker-compose.yml
├── .env.example            # Required environment variables
├── src/
│   └── py_mem_mcp/
│       ├── config.py       # Environment variable helpers
│       ├── sparql.py       # SparqlClient class
│       ├── bundesland.py   # BundeslandRegistry class
│       ├── graphs.py       # GraphRegistry class
│       ├── server.py       # FastMCP server entry point
│       └── tools/
│           ├── query.py    # sparql_query tool
│           ├── listing.py  # list_* tools
│           ├── lehrplan.py # find/get Lehrplan tools
│           └── search.py   # search tool
└── tests/                  # pytest unit tests

安装

# Install dependencies
poetry install

# Copy and edit the environment file
cp .env.example .env

配置

所有配置都是通过环境变量(从加载 .env).

变量 描述 必填
SPARQL_ENDPOINT SPARQL端点URL ✔
GRAPH_ONTOLOGY 本体图URI ✔
GRAPH_SCHULART scholart图URI ✔
GRAPH_SCHULFACH 图形URI。✔
GRAPH_STATE_<CODE> 状态的图形URI(例如。 GRAPH_STATE_SN) 可选
PORT HTTP端口(默认值: 3000) 可选

运行服务器

直接通过Poetry运行服务器。确保在中设置所需的环境变量 .env 在开始之前。

# Development
poetry run py-mem-mcp

# Or directly
poetry run python -m py_mem_mcp.server

使用Docker运行

提供了一个Dockerfile和docker-compose.yml来在容器中运行服务器。确保在中设置所需的环境变量 .env 在建造之前。 您还应该根据需要设置docker compose网络。我修改了它,使其适用于我的n8n实例,但你可以根据需要进行调整。

cp .env.example .env   # edit as needed
docker compose up -d --build

服务器将在以下时间可用 http://localhost:3000/mcp.

MCP客户端配置

{
  "mcpServers": {
    "mem-ontology": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

运行测试

poetry run pytest

州代码

代码 州
BW 巴登-符腾堡州
BY 拜仁
BE 柏林
BB 勃兰登堡
HB 不来梅
HH 汉堡
他 黑森州
MV 梅克伦堡-前波美拉尼亚
NI 下萨克森州
西北 北威州
RP 莱茵-普法尔茨
SL 萨尔州
SN 萨克森
ST 萨克森-安哈尔特
SH 石勒苏益格-荷尔斯泰因州
TH 图林根

目前,课程数据可用于 由, 序列号,以及 角色扮演.

许可证

CC0-1.0