an open-source education platform

MCP — Eduskript via claude.ai, Cursor & Claude Code

Eduskript exposes a Model Context Protocol server so you can author content in natural language from your AI tooling. You point claude.ai (or Cursor, or Claude Code) at your Eduskript instance, sign in once in a browser tab, and the AI gains scoped access to your skripts.

The server is per-teacher scoped: your token can only read and edit content you author or co-author. Other teachers' content is invisible.

What you can do

The server exposes tools across discovery, reading, creating, updating, organizing, and version history.

ToolWhat it does
get_eduskript_contextPlatform overview, markdown syntax reference, and your AI preferences — call once per session
list_my_skriptsList the skripts you author
list_my_sitesList your sites
search_my_contentSubstring search across your authored content
resolve_page_urlLook up a page's public URL from its ID

Read

ToolWhat it does
read_skriptRead a skript's metadata and page list
read_pageRead a page's full markdown content
read_collectionRead a collection's metadata and skript list
read_site_frontpageRead your site's front page content
read_skript_frontpageRead a skript's front page content

Create

ToolWhat it does
create_skriptCreate a new skript
create_pageCreate a new page in a skript you author
create_collectionCreate a new collection

Update

ToolWhat it does
update_page_contentReplace a page's markdown body
update_page_metadataUpdate a page's title, slug, description, or publish state
update_skriptUpdate a skript's metadata or publish state
update_collectionUpdate a collection's metadata
update_site_frontpageUpdate your site's front page content
update_skript_frontpageUpdate a skript's front page content

Organize

ToolWhat it does
place_skriptMove a skript into (or out of) a collection
reorder_collection_skriptsChange the order of skripts within a collection

Versions & SEO

ToolWhat it does
list_page_versionsList a page's saved version history
restore_page_versionRestore a page to an earlier version
audit_skript_seoCheck a skript's pages for SEO issues

Destructive actions (delete, manage co-authors) stay in the dashboard.

  1. Open https://claude.ai, click your avatar → SettingsConnectors (or Integrations, depending on your plan).
  2. Click Add custom connector.
  3. Paste https://eduskript.org/api/mcp/mcp as the server URL and give it a name like "Eduskript".
  4. Claude opens an OAuth tab. Sign in to your Eduskript account.
  5. On the consent screen, click Allow.
  6. The tab redirects back; the connector is now available in your chats.

Custom connectors are available on Claude Pro, Max, Team, and Enterprise plans.

Setup — Claude Code

claude mcp add --transport http eduskript https://eduskript.org/api/mcp/mcp

Claude Code opens a browser tab for the OAuth flow; sign in and click Allow. After that, the tools are available in any Claude Code session.

Setup — Cursor

In Cursor, open Settings → MCP and add a server:

{
  "eduskript": {
    "url": "https://eduskript.org/api/mcp/mcp"
  }
}

The OAuth flow runs the same way as claude.ai.

Example prompts

Once connected, try:

  • "Show me all my skripts."
  • "What's in the page on quadratic functions?"
  • "Update the introduction page in my algebra skript: replace the second paragraph with a clearer explanation of completing the square."
  • "Create a new page in my SQL skript called 'JOINs', summarize the standard 4 join types with an example query for each."
  • "Search my content for 'Pythagoras' and tell me which pages mention it."
  • "Reorder my skripts so 'Intro to Python' comes first in the Programming collection."
  • "Audit my Statistics skript for SEO issues."

Revoking access

When you stop using an AI client, revoke its access:

  1. Go to Settings → Connected Apps in the dashboard.
  2. Click Revoke next to the app.

The next request from that client will return 401.

What gets logged

Eduskript logs:

  • The first 12 characters of your access token (for UI display, not auditable).
  • The token's last-used timestamp (bumped on every successful call).
  • Tool name + (truncated) arguments at the application level.

We never log full token plaintext.

Limits

  • Access tokens expire after 1 hour. The client refreshes automatically.
  • Refresh tokens expire after 30 days of inactivity.
  • Search returns at most 20 hits.
  • Streamable HTTP runs in stateless mode, so multi-step server-initiated notifications aren't available — every call is request/response.

Troubleshooting

  • OAuth tab opens but redirects to a login page repeatedly. Make sure your browser is signed into the same Eduskript account you want the AI to use.
  • 401 invalid_grant when refreshing. The refresh token has expired or was rotated by a previous request that crashed before storing the new pair. Disconnect and reconnect from the AI client.
  • "Permission denied" on a page you can edit in the dashboard. Confirm you are an author (not just viewer) on the parent skript or page in the dashboard's permissions panel.