Installable bundle for colleagues using Cursor Desktop or the Agents window. Includes the production MCP server config and the nine PAUL workflow skills for employer and instructor authoring.
No — but it saves you steps. The PAUL MCP servers already expose their guided
workflows as MCP prompts (instructor_onboarding, instructor_curriculum_workflow,
and friends live on paul-concept), so connecting the servers from
Settings → MCP Access is
enough to do the whole job in Cursor.
What the plugin adds:
| MCP config only | With this plugin | |
|---|---|---|
| PAUL tools | ✅ | ✅ |
| Guided workflows (MCP prompts) | ✅ | ✅ |
| Step-scoped authoring skills with reference docs | ❌ | ✅ |
| Setup effort | Per-server config | One install |
| ID | Purpose |
|---|---|
paul-canvas |
Canvas LMS — courses, modules, external pages |
paul-concept |
Concept lessons and sprint tutorials |
paul-skills |
Employer competency profiles |
paul-learner |
Learner adaptive paths and evidence |
All four use mcp-remote against PAUL production endpoints
(mcp-*.conceptlearning.app) with OAuth 2.1 via
paul.conceptlearning.app. No shared API tokens —
each user authorizes their own account, and role-gating follows the active role they
pick on the consent screen.
Why the
mcp-remotebridge? Cursor can also reach these servers natively withurl+authand nonpxprocess. The bundle ships the bridge because it also works for background/cloud agents and for non-Cursor clients. To go native, see the Cursor tab on MCP Access.
Employer workflow
| Skill | Use when |
|---|---|
employer-profile-author |
Create or refine a draft competency profile from a role title or JD |
employer-concept-gap-resolver |
Fill missing PAUL concepts that block profile authoring |
employer-profile-publisher |
Review readiness and publish an approved profile |
Instructor workflow
| Skill | Use when |
|---|---|
instructor-onboarding |
Start here as a new instructor — job description all the way to a published course |
instructor-curriculum-workflow |
Start here with a profile already published — orchestrates the four steps below in order |
instructor-curriculum-scoper |
Narrow a broad profile into one time-bounded course (e.g. 16 weeks / 7 sprints) |
instructor-curriculum-author |
Draft the sprint-by-sprint tutorial pathway |
instructor-content-gap-resolver |
Generate missing tutorials or concept lessons |
instructor-curriculum-publisher |
Review readiness and publish curriculum artifacts |
Invoke skills in Agent chat with /skill-name, or just describe the goal and let the
agent pick — each skill's description is written for exactly that.
- PAUL account — invitation-only beta. Request access at
paul.conceptlearning.app or email
tanderson@edtechforlearning.org. Without an account this plugin does nothing: every tool call is OAuth-gated. - Node.js 18+ —
mcp-remoteruns vianpx. - Cursor — recent build with MCP and skills support.
Open Customize in the Cursor sidebar, search for PAUL Learning Platform, and install. Cursor picks up both the MCP servers and the skills.
For Cursor Teams/Enterprise, add this repository as a team marketplace source in the team dashboard instead — that also lets you set the plugin to Default On or Required so new instructors get it without asking.
Clone this repository, then symlink it into Cursor's local plugins directory:
git clone https://github.com/EdTechForLearning/paul-cursor-plugin.git
mkdir -p ~/.cursor/plugins/local
ln -sf "$(pwd)/paul-cursor-plugin" ~/.cursor/plugins/local/paul-cursor-pluginThen restart Cursor (or Developer: Reload Window), confirm PAUL Learning
Platform under Settings → Plugins, and enable the four paul-* servers under
Settings → Tools & MCP.
MCP config — copy the personalized snippet from
Settings → MCP Access (Cursor
tab) into ~/.cursor/mcp.json, or use the one-click + paul-… buttons there. The
live snippet is better than this repo's mcp.json because it lists only the servers
your roles actually unlock.
Skills (optional) — copy the skill folders into ~/.cursor/skills/:
cp -R skills/* ~/.cursor/skills/Restart Cursor after either step.
The first time an agent calls a PAUL MCP tool:
- Your browser opens to PAUL.
- Log in if needed.
- On the consent screen, choose your active role (Learner, Instructor, or Employer).
- Click Approve and connect.
Pick the role that matches what you're doing: Instructor for concept/canvas,
Employer for skills, Learner for learner. A 403 insufficient_role later means
you authorized as the wrong role — revoke and reconnect. Admins can reach all four
servers with a single approval as Admin.
Revoke sessions anytime at Settings → MCP Access.
MCP connectivity
Use the PAUL Learner MCP server to list job profiles I can target.
Employer skill
/employer-profile-author
Create a job profile for an AI Product Engineer.
Instructor skill
/instructor-onboarding
I have a job description and want to build a course from it.
- Getting started as an instructor: paul.conceptlearning.app/onboarding
- Your personal MCP config and connected sessions: paul.conceptlearning.app/settings/mcp-access
If you have a project-local .cursor/mcp.json that defines the same paul-* server
names as this plugin, the project config wins. To confirm which one Cursor is
actually using, check Output → MCP Logs for the hostname, or temporarily rename
the project file and reload.
This bundle is generated from the PAUL workspace, where the agent skills have their
canonical home. The copies in skills/ are real files rather than symlinks so the
plugin stays self-contained once installed, and a sync check enforces that they stay
byte-identical to their sources on every change.
Please don't send skill edits here — they'd be overwritten on the next sync. Open an
issue instead, or email tanderson@edtechforlearning.org.
Apache License 2.0 — see LICENSE and NOTICE.
The license covers this plugin bundle only: the manifest, mcp.json, and the
agent skills. The PAUL MCP services it connects to (mcp-*.conceptlearning.app) are
a separate, closed work — mcp.json contains network addresses, not code, and
nothing here grants rights to the server implementations. Apache 2.0 is permissive
and carries no copyleft obligation, so publishing this bundle imposes no disclosure
requirement on any other part of the PAUL workspace.
The plugin is inert without a PAUL account: every tool call is OAuth-gated and
role-checked server-side. The client_id in mcp.json is a public OAuth client with
an empty secret by design — PKCE, not secrecy, is what protects the flow.
| Symptom | Fix |
|---|---|
| MCP servers missing after install | Restart Cursor; check Settings → Tools & MCP |
| Browser doesn't open on first call | Ensure npx mcp-remote works in a terminal; check MCP Logs in the Output panel |
| 401 / unauthorized | Re-authorize via a new agent prompt, or revoke and reconnect at MCP Access |
403 insufficient_role |
You approved as the wrong active role — revoke that session and reconnect |
EADDRINUSE on a callback port |
A stale mcp-remote process; or switch Cursor to the native url + auth config, which doesn't use per-server callback ports |
| Skills not found | Confirm folders are under ~/.cursor/skills/ or the plugin skills/ directory; try /employer-profile-author explicitly |
| Unsure if MCP comes from plugin or project | Check Output → MCP Logs for the hostname, or temporarily rename .cursor/mcp.json and reload |
| Plugin missing in Settings | Verify the symlink target: readlink ~/.cursor/plugins/local/paul-cursor-plugin |
| Canvas tools fail | Connect your Canvas token at Settings → Canvas |
paul-cursor-plugin/
├── .cursor-plugin/
│ └── plugin.json # Cursor plugin manifest
├── assets/
│ └── logo.svg # marketplace icon
├── mcp.json # Production MCP server config (4 servers)
├── skills/ # Nine PAUL workflow skills (+ references)
├── LICENSE # Apache License 2.0
├── NOTICE # Attribution + scope of the license
└── README.md # This file