Skip to content

v0.8.0 — full parity with Skilljar's official MCP server

Choose a tag to compare

@kurtseifried kurtseifried released this 28 Aug 00:20
· 25 commits to main since this release
c42be60

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_courses has none at all; page_cursor and page_size are additive extensions here.
  • Capability profiles. Destructive tools ship present-and-off. The default parity profile grants only read capabilities; PII erasure and password tools need full named 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 use authorization_code with 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-skilljar

Configure 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.