The Pi now runs registry.mc02.dev/schulcloud-mcp. Its compose file `!reset`s the build section docker-compose.yml declares, so no `docker compose` command there can fall back to building (Compose 2.24 or later). SCHULCLOUD_MCP_TAG pins a commit's image; unset, the Pi follows `latest`. `npm run publish-image` publishes from a development machine. It builds only a clean working tree, so a commit tag names exactly that commit's code, for amd64 and arm64, tagged `latest` and with the short commit id. On an x86 machine arm64 builds under QEMU, which the script checks for and explains rather than registering unasked. PI.md logs in to the registry, pulls and starts instead of building, and updates by publishing and pulling. Rehearsed in a scratch compose project: the image came from the registry, `up -d --build` built nothing, and the server came up healthy with its database and no published ports. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
46 lines
1.4 KiB
JSON
46 lines
1.4 KiB
JSON
{
|
|
"name": "schulcloud-mcp",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"description": "MCP server exposing the Schulcloud (HPI Schul-Cloud / SVS) API to Claude: courses, boards, lessons, tasks and file downloads.",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=22"
|
|
},
|
|
"bin": {
|
|
"schulcloud-mcp": "dist/bin/stdio.js",
|
|
"schulcloud": "dist/bin/cli.js"
|
|
},
|
|
"scripts": {
|
|
"build": "tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
"dev": "node --watch --experimental-strip-types src/bin/http.ts",
|
|
"start": "node dist/bin/http.js",
|
|
"stdio": "node dist/bin/stdio.js",
|
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
"test": "node --test --experimental-strip-types test/*.test.ts",
|
|
"probe": "node --env-file=.env scripts/probe.mjs",
|
|
"smoke": "node --env-file=.env scripts/smoke.mjs",
|
|
"session-diagnose": "node --env-file=.env scripts/session-diagnose.mjs",
|
|
"keepalive-status": "bash scripts/keepalive-status.sh",
|
|
"publish-image": "bash scripts/publish-image.sh",
|
|
"cli": "node dist/bin/cli.js"
|
|
},
|
|
"dependencies": {
|
|
"@modelcontextprotocol/sdk": "^1.20.0",
|
|
"exceljs": "^4.4.0",
|
|
"express": "^5.1.0",
|
|
"mammoth": "^1.11.0",
|
|
"pg": "^8.23.0",
|
|
"unpdf": "^1.3.2",
|
|
"unzipper": "^0.12.3",
|
|
"zod": "^3.25.76"
|
|
},
|
|
"devDependencies": {
|
|
"@types/express": "^5.0.3",
|
|
"@types/node": "^22.15.0",
|
|
"@types/pg": "^8.23.1",
|
|
"@types/unzipper": "^0.10.11",
|
|
"typescript": "^5.9.2"
|
|
}
|
|
}
|