mcpField
P
Practera MCP Server

Practera MCP Server

Remote
github.com/intersectiveScience & Education2Updated 22w ago
Repository

About Practera MCP Server

Practera MCP Server lets AI agents work with learning projects through Practera's GraphQL API and local project brief data, and run tests across Practera repositories. It serves project administrators, learners, reviewers, and developers, covering authoring, submissions, and reviews.

Key features

  1. 01Create and manage learning content
  2. 02Import and export project structures
  3. 03Submit assessments and view feedback
  4. 04Manage pending reviews
  5. 05Search project briefs by skill
  6. 06Run tests across repositories

Use cases

  1. 01Adapt existing projects for new audiences
  2. 02Generate assessments and add questions
  3. 03Submit learner work or review submissions
  4. 04Run repository tests from Cursor

MCP support

It provides Practera tools, resources, and prompts to MCP clients over stdio or SSE, connecting to the GraphQL API and a local project brief catalog.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://your-lambda-url.lambda-url.us-east-1.on.aws/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

Details

From the project README

Practera MCP Server

An MCP (Model Context Protocol) server that gives AI agents direct access to Practera's GraphQL API and local project brief data. Connect Cursor, Claude Desktop, or any MCP client to author learning programs, manage assessments, submit work as a learner, conduct reviews, and run test suites across the Practera monorepo.

Why Practera MCP?

With this MCP server, an agent can:

  • Analyse and restructure existing projects for different audiences or grade levels
  • Generate assessment blueprints and create questions automatically
  • Import/export programs between institutions or LMS data formats
  • Submit assessments and manage review workflows
  • Search a library of 5400+ experiential learning project briefs by skill
  • Run test suites across all Practera repos directly from Cursor

Quick Start (Cursor — local dev)

  1. Clone this repo alongside the other Practera repos.
  2. Install dependencies: npm install
  3. Add .cursor/mcp.json to any Practera repo (see Cursor Configuration).
  4. Reload the Cursor MCP panel — the practera server will appear.

No separate server process needed. Cursor spawns the MCP server via stdio automatically.

Transports

stdio (Cursor local — recommended)

Cursor spawns the server as a subprocess. No separate npm run dev needed.

# For manual testing / debugging
npm run dev:stdio
SSE (remote / shared)

An HTTP server with Server-Sent Events — use when multiple clients share one instance.

npm run dev        # → http://localhost:3000/sse

Connect an MCP client to http://localhost:3000/sse.

Cursor Configuration

Create .cursor/mcp.json in your repo (or add to ~/.cursor/mcp.json for all workspaces):

{
  "mcpServers": {
    "practera": {
      "command": "node",
      "args": [
        "/absolute/path/to/practera-mcp-server/dist/stdio.js"
      ],
      "env": {
        "PRACTERA_REGION": "local",
        "AUTH_EMAIL": "[email protected]",
        "GRAPHQL_URL": "http://localhost:8000",
        "WORKSPACE_ROOT": "/absolute/path/to/practera-workspace"
      }
    }
  }
}

Run npm run build in practera-mcp-server after any source changes to rebuild dist/stdio.js.

For production regions, omit AUTH_EMAIL/GRAPHQL_URL and pass apikey in each tool call instead.

Authentication

API Key (production)

Pass apikey in each tool call. The key is forwarded as the apikey HTTP header to the GraphQL API.

devLogin (local/stage only)

Omit apikey and set AUTH_EMAIL (or pass email per tool call). The server calls the devLogin GraphQL mutation to obtain a JWT automatically. Only works with region=local or region=stage.

Available Tools

Generic / Read-only
ToolDescription
mcp_practera_get_projectFull project tree: milestones, activities, tasks
mcp_practera_get_assessmentAssessment detail with questions and answer choices
mcp_practera_search_project_briefsSearch the local brief catalog by skill keyword
Author (admin/coordinator role required)
ToolGraphQL OperationDescription
create_experiencecreateExperienceCreate a new program inside an institution
create_milestonecreateMilestoneAdd a milestone to an experience
create_activitycreateActivityAdd an activity to a milestone
create_assessmentcreateAssessmentCreate an assessment on an activity
add_questioncreateAssessmentQuestionAdd a question to an assessment
add_task_to_activityaddTaskToActivityAdd a task (resource/link) to an activity
enroll_userenrollUserEnroll a user in an experience
import_experienceimportExperienceDataBulk-import experience content from a JSON export
export_experienceexportExperienceExport an experience structure as JSON
Student (learner)
ToolGraphQL OperationDescription
list_experiencesexperiencesList all experiences for the current user
get_milestonesproject.milestonesGet milestones and activities for a project
get_taskstasks(activityId:)Get tasks for an activity
submit_assessmentsubmitAssessmentSubmit an assessment
get_feedbacksubmission(id:)Get submission details including review feedback
Reviewer
ToolGraphQL OperationDescription
list_pending_reviewsreviews(status: "pending")List assessments awaiting review
submit_reviewsubmitReviewSubmit a completed review
Testing
ToolDescription
run_testsRun a test suite across any Practera repo — shells out to npm/cargo/docker
run_tests parameters
ParameterRequiredDescription
repoYesWhich repo: core-graphql-api, login-api, app-v2, practera, practera-mcp-server, practera-devops-center
suiteYesWhich suite (see table below)
patternNoTest file/name filter (passed as --testPathPattern for Jest targets)
workspaceRootNoAbsolute path to workspace root. Falls back to WORKSPACE_ROOT env var.
Available test suites
RepoSuiteCommand
core-graphql-apiunitnpm test (Jest, with coverage)
core-graphql-apiintegrationnpm run test:integration
core-graphql-apiparitynpm run test:parity
login-apiunitnpx vitest run tests/unit
login-apiintegrationnpx vitest run tests/integration
login-apifullnpm run test:coverage
app-v2unitnpm test -- --watch=false
practeraphpunitdocker exec practera-core ./vendor/bin/phpunit
practera-mcp-servertypechecknpm run typecheck
practera-devops-centercargocargo test

MCP Resources

Resource URIDescription
practera://project/currentCurrent project data (GraphQL)
practera://assessments/{assessmentId}Assessment by ID
practera://briefs/{briefId}Project brief from local catalog

MCP Prompts

PromptPurpose
project-analysisAnalyse project structure and learning design quality
assessment-analysisEvaluate assessment structure and question quality
skill-brief-selectionFind briefs matching a skill from the catalog
complex-brief-finderMatch briefs by skill, complexity, and timeframe

Environment Variables

VariableDescription
PORTHTTP port (default 3000 dev / 80 production)
NODE_ENVEnvironment (development, production)
GRAPHQL_URLOverride local GraphQL endpoint
PRACTERA_REGIONDefault region: local, stage, usa, aus, euk
AUTH_EMAILDefault email for devLogin (local/stage)
WORKSPACE_ROOTAbsolute path to workspace root — used by run_tests

GraphQL Regions

RegionEndpoint
localhttp://localhost:8000 (or GRAPHQL_URL)
stagehttps://core-graphql-api.p2-stage.practera.com/
usahttps://core-graphql-api.usa.practera.com/
aushttps://core-graphql-api.aus.practera.com/
eukhttps://core-graphql-api.euk.practera.com/

Build and Deploy

# Build
npm run build       # compiles TS + copies src/data → dist/

# Run SSE server (compiled)
npm start

# Run stdio (compiled — use in production Cursor config)
npm run start:stdio
AWS App Runner

The apprunner.yaml configures an App Runner service running the SSE server on port 80.

AWS Lambda (stale)

serverless.yml exists but the Lambda handler export is not currently wired up. Use App Runner for production deployment.

Roadmap

  • GraphQL read access (project, assessment)
  • Author CRUD tools (create experience, milestone, activity, assessment, questions, tasks, enroll)
  • Import/export experience JSON
  • Student tools (list, submit, feedback)
  • Reviewer tools (list pending, submit review)
  • Project brief search (5400+ briefs, skill-based)
  • stdio transport for Cursor integration
  • run_tests tool for cross-repo test execution
  • Metrics API (generate LLM-readable reports from calculateMetrics)
  • OAuth 2.1 (currently scaffolded, not active)
  • Thread auth context through MCP Resources
  • assign_reviewer, handle_review tools for reviewer workflow management
  • Media asset generation

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.