StudioMeyer Academy

io.studiomeyerPublished by studiomeyer.iov0.6.0Updated Nov 3, 2026

Live Academy learning and search. OAuth adds scoped personal tools. Explicit --offline snapshot.

The publisher's own server: StudioMeyer Crew

VerifiedStreamable HTTPWeb executableProductivity & WorkflowKnowledge & Memory

Overview

StudioMeyer Academy's hosted MCP server (mcp.studiomeyer.academy), published by studiomeyer.io; OAuth sign-in required; Streamable HTTP; 29 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Publisher
studiomeyer.io
Endpoint
mcp.studiomeyer.academy
Last checked

Installation

In SourceWeft

  1. Open StudioMeyer Academy in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.studiomeyer%2Facademy/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "studiomeyer-academy": {
      "type": "http",
      "url": "https://mcp.studiomeyer.academy/mcp"
    }
  }
}

README

mcp-academy

Implementation version: 0.6.0. No publication or deployment is implied. StudioMeyer Academy in your AI client. Public learning paths, lessons, library content and search are read live from Academy. German is the default; English and Spanish are supported.

Connect without signing in:

text
https://mcp.studiomeyer.academy/mcp?access=free

Connect with OAuth for personal learning, notes, quizzes, purchased content and credits:

text
https://mcp.studiomeyer.academy/mcp

The protected endpoint returns 401 with OAuth discovery. Public clients use PKCE S256 and no client secret. The person selects learn:read, learn:write and, optionally, credits:spend. Spending is unchecked by default. Each credit operation also needs the service-declared quote consent (consent.userConfirmed, consent.quoteId, consent.maximumCredits) and a unique idempotencyKey; show the current quote first. Stored spending approvals remain Academy business rules. academy_my_access describes the actual grant.

Agent integration instructions: AGENTS.md. Agent Plugins 1.0.0: plugin.json and mcp.json. The plugin uses the standard remote Streamable HTTP transport and the existing OAuth-protected endpoint; no credentials are embedded.

Where authorization-server metadata advertises agent_auth, an agent can register anonymously and later be claimed by the intended human. Anonymous access has no personal scopes: learn:read exposes private Academy records and is never anonymous. The claim verifies the intended email in the same browser, requires the code supplied by the agent and lets the person select learning permissions. Spending is absent and requires a separate ordinary OAuth connection. The free endpoint above remains available without any registration.

Local MCP clients

Requires Node.js 20 or newer. The hosted Docker image uses Node.js 22.

Build the current implementation from source:

bash
git clone https://github.com/studiomeyer-io/mcp-academy.gitcd mcp-academynpm cinpm run buildnode dist/index.js

Version 0.6.0 is available as [email protected]. Run npx -y [email protected] for the live public stdio connection described below, or use the source installation above.

Default stdio is live and public. It requires network access to Academy. For Claude Desktop, Cursor or another stdio client:

json
{  "mcpServers": {    "academy": {      "command": "node",      "args": ["/absolute/path/to/mcp-academy/dist/index.js"]    }  }}

Start with academy_start. Tool names, result schemas, public/account visibility, annotations, required scopes and deprecated aliases come from the live operation registry. Personal tools are absent from the free tool list and cannot be invoked directly without permission. Old learning and quiz names remain available only as the aliases declared by that registry for the compatibility version. Certificates, XP, rankings and arena remain dormant.

For the preserved historical curriculum snapshot, explicitly opt in:

bash
node dist/index.js --offline# Alternative: ACADEMY_OFFLINE=1 node dist/index.js

The offline library is read-only, can be outdated and needs no network or account. Its old level names describe that snapshot, not today's live Academy. ACADEMY_API_KEY no longer grants personal access; existing configurations receive a migration notice. Use the hosted OAuth connection for personal tools.

Live documentation

MCP resources:

  • academy://docs/quickstart
  • academy://docs/errors
  • academy://docs/package-format

These read Academy's machine documents at request time. The service output schema describes result. Each MCP tool wraps it in an honest success/error envelope schema with type: object and oneOf. locale and idempotencyKey are MCP transport fields: locale goes into the bridge envelope, and the key becomes the HTTP Idempotency-Key header; neither is added to strict service input. Tool results carry the same {success,result,errors,messages,request_id} envelope as REST in structuredContent and text, with isError set for failures. Errors include stable code, slug, message, hint and documentation_url fields. Unknown tool names and arguments that violate the published schema are JSON-RPC -32602 errors with an English protocol message and the localized Academy envelope in error.data. Execution failures, missing content and paywalls remain isError results. OAuth endpoints retain their standard OAuth error format.

Hosted configuration

Run the HTTP service behind the existing reverse proxy, bound to loopback:

bash
npm cinpm run buildnpm run db:schemanpm run start:http

db:schema must point at the intended Academy database. On databases containing real data, take a verified backup before applying the additive migration. The runner checks the configured host and current_database() and supports fresh schema v4 and the additive v2 to v3 to v4 and v3 to v4 transitions. It never runs Prisma migrations or removes tables. No deployment or publication is implied by these commands.

EnvironmentPurpose
ACADEMY_BASE_URLTrusted Academy origin; defaults to https://studiomeyer.academy. Only HTTPS or loopback HTTP is accepted.
ACADEMY_MCP_DATABASE_URLAcademy's shared database containing academy_mcp_* OAuth tables.
ACADEMY_MCP_SERVICE_TOKENAdditional service authorization for personal execute calls. It never substitutes for the user's access token.
ACADEMY_MCP_BASE_URLPublic issuer URL, https://mcp.studiomeyer.academy.
ACADEMY_MCP_HOST / ACADEMY_MCP_PORTBind address and port; defaults 127.0.0.1:3116.
SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROMExisting magic-link mail configuration.
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETOptional Google login.
DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRETOptional Discord login.
ACADEMY_AGENT_ASSERTION_SECRETDedicated persistent random signing secret, at least 32 random bytes encoded as base64url. Enables the anonymous registration/claim profile; do not reuse other service credentials.
ACADEMY_MCP_TRUSTED_IP_HEADERExisting reverse-proxy IP policy; configure only with a verified trusted proxy.

A personal call sends the real user Bearer plus X-Academy-Service-Authorization: Bearer <service token> to /api/academy/execute. Public calls send neither. Academy independently checks audience, scopes, revocation and blocking against the same database. The MCP and REST resources are distinct: https://mcp.studiomeyer.academy/mcp and https://studiomeyer.academy/v1.

Verification

bash
npm run buildnpm testnpm run smoke:platform# With only the isolated test database configured:npm run test:auth-dbnpm run test:migration-dbnpm run test:agent-identity-dbnpm run test:agent-protocol

The DB tests require exactly 127.0.0.1:3431/academy_rebuild and use synthetic example.com identities. They cover real transactions, restart, parallel redemption, refresh replay, narrowing, audience checks, revocation, browser binding and consent. Mail is replaced with a test transport. The SDK tests include a 52-operation index fixture imported from the actual Academy registry and real legacy-input normalization fixtures, with source hashes recorded in tests/root-fixture-provenance.json. They cover object-union credit results and personal zero-scope access. The SDK tests use a local mock Academy API; they do not claim a completed cross-repository integration or live deployment.

npm run smoke and npm run smoke:platform both run the current live-default/explicit-offline CLI harness. npm run smoke:legacy retains the older historical harness; its implicit-offline, all-authenticated hosted and API-key expectations describe the previous product.

The server code is MIT licensed. Content licensing comes from Academy's content/package metadata; this package does not establish new rights for Academy content.

Implementation details, integration evidence and deployment boundaries: agent platform contract.

Optional focused docs entry

The hosted service provides https://mcp.studiomeyer.academy/mcp?access=docs as an optional anonymous Streamable HTTP entry with exactly search and fetch. It does not change the existing ?access=free entry, personal OAuth entry or declared legacy aliases. Academy discovery adds docs_remote separately; public_remote continues to point at ?access=free.

Docs mode rejects every other tool name with the existing JSON-RPC -32602 / not_found error before execution. Search IDs can be passed to fetch, with the same public content/envelope as free mode. The existing three documentation resources remain available. Docs requests use the shared anonymous free/docs IP budget and never forward personal credentials.

The archived registry fixture contains 52 operations, 56 MCP names including aliases and 29 public tools. The live registry snapshot checked on 2026-11-01 contains 53 operations, 29 public names and 28 personal names. Runtime tools/list remains authoritative. No tool was removed or renamed; every output schema remains self-contained.

Source: README.md at commit 3949e16

Tools

29

academy_start

Read the available learning paths and public starting links.

ParameterslocaleidempotencyKey

academy_welcome

Read the available learning paths and public starting links. (Deprecated alias for academy_start; retained for one version.)

ParameterslocaleidempotencyKey

academy_paths

List the four learning paths with confirmed original references.

ParameterslocaleidempotencyKey

academy_path

Read the current learning path, ordered steps and explicit module mapping status.

ParameterslocalepathIdrequiredidempotencyKey

academy_module

Read an existing module and its ordered published content; technical content containers are labelled.

ParameterslocalepathIdrequiredmoduleIdrequiredidempotencyKey

academy_lesson

Read a public lesson using its unambiguous level and slug.

ParametersslugrequiredlevelrequiredlocaleidempotencyKey

academy_teach

Read teaching steps drawn from the actual lesson headings and exercise.

ParametersslugrequiredlevelrequiredlocaleidempotencyKey

academy_tutor_context

Read teaching steps drawn from the actual lesson headings and exercise. (Deprecated alias for academy_teach; retained for one version.)

ParameterssluglevellocaleidempotencyKey

academy_library

Browse public library metadata, filtered by type and access.

ParameterstypelimitaccesscursorlocalepathIdidempotencyKey

academy_prompts

List approved prompts; an unpopulated catalog is empty.

ParameterslimitcursorlocaleidempotencyKey

academy_prompt

Read an approved public prompt by identifier.

ParametersidrequiredlocaleidempotencyKey

academy_playbooks

List existing public playbooks, optionally filtered by their actual category.

ParameterslimitcursorlocalecategoryidempotencyKey

academy_glossary

Browse safe public glossary concepts.

ParameterslimitcursorlocaleidempotencyKey

academy_glossary_term

Read a public glossary term without internal recipe references.

ParameterstermrequiredlocaleidempotencyKey

academy_recipes

List public free recipes, optionally filtered by their actual phase from 1 to 16.

ParameterslimitphasecursorlocaleidempotencyKey

academy_recipe

Read a public recipe; private recipes remain undiscoverable.

ParametersidrequiredlocaleidempotencyKey

academy_concepts

Browse and search public concepts.

ParameterslimitquerycursorlocaleidempotencyKey

academy_coaching

Read the coaching entry point without unconfirmed prices or durations.

ParameterslocaleidempotencyKey

academy_playbook

Read an existing public playbook.

ParametersidrequiredlocaleidempotencyKey

fetch

Fetch a public item by its exact stable identifier.

ParametersidrequiredlocaleidempotencyKey

academy_suggest

Suggest matching library items with reasons; the supplied profile is never saved.

ParameterslocaleprofilerequiredidempotencyKey

academy_premium_catalog

premiumCatalog: Academy commerce operation.

ParameterslimitcursorlocaleidempotencyKey

academy_premium_preview

premiumPreview: Academy commerce operation.

ParametersidrequiredlocaleidempotencyKey

academy_legacy_levels

Deprecated compatibility view of original numbered content levels; use paths for current learning paths.

ParameterslocaleidempotencyKey

academy_levels

Deprecated compatibility view of original numbered content levels; use paths for current learning paths. (Deprecated alias for academy_legacy_levels; retained for one version.)

ParameterslocaleidempotencyKey

academy_legacy_lessons

Deprecated compatibility listing of original lessons in one numbered level.

ParameterslevelrequiredlocaleidempotencyKey

academy_lessons

Deprecated compatibility listing of original lessons in one numbered level. (Deprecated alias for academy_legacy_lessons; retained for one version.)

ParameterslevellocaleidempotencyKey

Version history

2
  1. v0.6.0LatestNov 3, 2026
  2. v0.4.1Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Studiomeyer integrations