v0.8.0 — full parity with Skilljar's official MCP server
First release. Full parity with Skilljar's official MCP server — all 73 of its tools, plus three of our own for server management.
Parity is asserted by tests/test_parity.py, not claimed: the registered tool set is diffed against a registry captured from the live official server, and the test fails if anything is missing.
What it is
A Python library (csa_skilljar) and a local stdio MCP server over Skilljar's REST APIs. It reproduces the official server's tool surface exactly — same names, same arguments — and adds what that server lacks:
- Pagination on every listing that supports it. The official
list_courseshas none at all;page_cursorandpage_sizeare additive extensions here. - Capability profiles. Destructive tools ship present-and-off. The default
parityprofile grants only read capabilities; PII erasure and password tools needfullnamed explicitly. - A local scope pre-check. An impossible call is refused before any network traffic, naming the exact missing OAuth scope.
client_credentials, so no browser. The hosted server is remote and must useauthorization_codewith a consent flow and a token cache. Running locally removes all of that — no redirect URI, no token file on disk.
Install
pipx install csa-skilljarConfigure with CSA_SKILLJAR_V2_CLIENT_ID and CSA_SKILLJAR_V2_CLIENT_SECRET from a Skilljar Dashboard API client, then call check_access first — it is built to work when nothing else does.
scripts/mcp-launch.sh reads credentials from a .env file if you would rather your MCP client configuration held no secret.
What is not proven
No write tool has ever run against a real Skilljar organization. Every write is implemented and tested against an in-memory double, and its semantics are pinned by the captured official registry — but tests/integration/ is enforced read-only, and will stay that way until there is somewhere safe to write.
That blocks confidence, not delivery. It is stated here rather than left to be discovered.
Status
Development Status :: 3 - Alpha. Python 3.10–3.14. Apache-2.0.
Full per-block detail, including the traps this reproduces deliberately and the ones it refuses to reproduce, is in CHANGELOG.md.
Use Skilljar's official MCP server if it covers what you need — it is a good first-party server and they are actively investing in v2. This exists for the gaps.