Skip to main content

tutor-contrib-openedxmcp

PyPI CI License: AGPL-3.0

Tutor plugin that stands up the Open edX Admin MCP for staff/superusers:

  1. Installs the openedx-mcp Django app into the LMS/CMS image (the REST facade at /api/mcp/ and /api/mcp/cms/).
  2. Runs a standalone openedxmcp container — a FastMCP streamable-http server that proxies to that facade, fronted by Caddy at mcp.<LMS_HOST>.

The MCP server holds no secrets: each request carries its own MCP key, forwarded to the facade as X-MCP-Key. Authorization is enforced by the facade (is_staff/is_superuser, live). No Hasura, no external stack. Ulmo.

Architecture

Claude / MCP client ──(Bearer key)──▶ openedxmcp container (FastMCP proxy)
                                         │  X-MCP-Key
                             ┌───────────┴───────────┐
                       LMS /api/mcp/           CMS /api/mcp/cms/
                    (people, enroll,          (course authoring,
                     analytics, certs,          modulestore)
                     reports, retire)

Install

pip install tutor-contrib-openedxmcp
tutor plugins enable openedxmcp

# point at the Django app (PyPI, git URL, or a mounted local path)
tutor config save --set OPENEDXMCP_PIP_REQUIREMENT=openedx-mcp

tutor images build openedx openedxmcp    # rebuild LMS/CMS w/ the app; build MCP server
tutor local launch                        # or: tutor k8s launch
tutor local do init                        # migrations -> MCPKey tables

Then mint a key in Django admin (Open edX Admin MCP → MCP keys) and connect a client to https://mcp.<LMS_HOST>/mcp. The key-creation banner prints ready-to- paste connect steps. Full connect/security/tool docs live in the openedx-mcp README.

Config

Key Default Meaning
OPENEDXMCP_IMAGE openedxmcp:latest MCP server image tag
OPENEDXMCP_ENDPOINT mcp.{{ LMS_HOST }} public MCP host
OPENEDXMCP_PORT 8080 server port
OPENEDXMCP_LMS_BASE_URL http://lms:8000 in-cluster LMS upstream
OPENEDXMCP_CMS_BASE_URL http://cms:8000 in-cluster CMS upstream
OPENEDXMCP_PUBLIC_URL https://{{ ENDPOINT }}/mcp shown in the Django key page (injected into LMS/CMS as OPENEDX_MCP_PUBLIC_URL)
OPENEDXMCP_PIP_REQUIREMENT openedx-mcp the Django app to install

What ships

  • Docker image build context (templates/openedxmcp/build/…) — the FastMCP proxy.
  • Patches: caddyfile (route /mcp*), docker-compose services (+ healthcheck), k8s deployment/service (+ readiness/liveness on /health), openedx-common-settings (injects OPENEDX_MCP_PUBLIC_URL), openedx-dockerfile-post-python-requirements (pip-installs the app).

The MCP server exposes an unauthenticated /health for probes.

Develop

pip install ruff build
ruff check tutoropenedxmcp
python -m build .          # CI asserts the wheel ships templates/

See CHANGELOG.md · CONTRIBUTING.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tutor_contrib_openedxmcp-0.1.5.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tutor_contrib_openedxmcp-0.1.5-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file tutor_contrib_openedxmcp-0.1.5.tar.gz.

File metadata

  • Download URL: tutor_contrib_openedxmcp-0.1.5.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for tutor_contrib_openedxmcp-0.1.5.tar.gz
Algorithm Hash digest
SHA256 3840028faa5c700fd76b9d696d8bc4df55997c66743c7008a9404afaec211d7e
MD5 d6e24575216deec2350e0be1c220bc73
BLAKE2b-256 5da8c718105e2093e5c2b5bb0044b189bf15e3037aee909c46f3947cf2a42fe0

See more details on using hashes here.

Provenance

The following attestation bundles were made for tutor_contrib_openedxmcp-0.1.5.tar.gz:

Publisher: publish.yml on blend-ed/tutor-contrib-openedxmcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tutor_contrib_openedxmcp-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for tutor_contrib_openedxmcp-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ab9b1058dca2b4e7271ddb55d350637d4026cb107572efe85acd71dd2f758baf
MD5 00d9e763120897dfb861efe2f33d60e7
BLAKE2b-256 7b91afe1a529809ec7805ecb41ce8c05346ee23e41670a2717afa4f5b0e7640d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tutor_contrib_openedxmcp-0.1.5-py3-none-any.whl:

Publisher: publish.yml on blend-ed/tutor-contrib-openedxmcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.7

2 files

0.1.6

2 files

This release

0.1.5 This release

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page