Skip to main content
Glama
SamEthanMathew

cmucourses-connector

CMU Courses — Claude Connector

A remote MCP connector that gives Claude live, structured access to CMU Courses public data so it can help students plan schedules with accurate course info: courses, units, descriptions, prerequisites/corequisites/crosslists, requisite trees, offered schedules (times, instructors, locations), instructor teaching history, gen-eds, and final-exam times.

  • Read-only wrapper of the existing CMU Courses public API — it does not modify or run any part of the CMU Courses codebase.

  • Stateless, authless, deployed to Cloudflare Workers (Streamable HTTP, MCP).

  • Backend: https://course.apis.scottylabs.org (the live ScottyLabs course backend).

FCE (course evaluations / workload / ratings) is not included in this version. That data is sign-in-gated behind Clerk, and a remote connector can't reach a user's browser session. See src/auth/authProvider.ts for the deferred design.

Tools

Tool

What it does

search_courses

Keyword + filter search (department, level, units, semester); paginated 10/page

get_course

Full details for one course by ID (optionally with schedules)

get_courses

Batch details for several courses

get_requisites

Prereqs (with AND/OR relation groups) + postreqs for a course

get_course_schedules

Offered lectures/sections for course(s): days, times, instructors, locations

get_instructor_schedules

Courses/semesters an instructor teaches

find_courses

Resolve a partial name/ID to matching courses (lightweight lookup)

find_instructors

Resolve a partial instructor name

get_geneds

Gen-ed-eligible courses for a school (SCS/CIT/MCS/Dietrich)

get_finals

Final-exam day/time/location (bundled per-semester snapshot)

list_departments

Department name ↔ short name ↔ number-prefix map

Related MCP server: scottylabs-mcp

Develop

npm install
npm run typecheck        # tsc --noEmit
npm test                 # unit tests (mocked backend) — 38 tests
npm run test:integration # live contract tests against the real backend
npm run dev              # wrangler dev on http://127.0.0.1:8787/mcp

Drive it locally with the MCP Inspector:

npm run inspector        # then connect to http://127.0.0.1:8787/mcp (transport: Streamable HTTP)

Or with Claude Code:

claude mcp add --transport http cmucourses http://127.0.0.1:8787/mcp

Stress test (mixed tools, live backend):

node scripts/stress.mjs http://127.0.0.1:8787/mcp 50 200

Deploy (Cloudflare Workers)

npx wrangler login          # one-time, uses your Cloudflare account
npx wrangler deploy         # -> https://cmucourses-connector.<your-subdomain>.workers.dev

The backend URL is set in wrangler.jsonc (vars.CMU_COURSES_BACKEND_URL) and can be overridden per environment. An optional KV cache for the large /courses/all and /instructors lists is documented (commented) in wrangler.jsonc; the connector also caches these in-isolate by default, so KV is optional.

Register in Claude

Live deployment: https://cmucourses-connector.samethanmathew.workers.dev/mcp

  1. Settings → Connectors → Add custom connector.

  2. Paste the URL above (note the /mcp path).

  3. No login is required (public data). The tools appear immediately.

Maintaining the finals snapshot

src/reference/finals.snapshot.json is a per-semester copy of the CMU Courses finals data (currently Fall 2025). When the semester changes, replace it from cmucourses/apps/frontend/src/components/finals/finals.json and update SEMESTER_LABEL in src/tools/finals.ts.

Layout

src/
  index.ts              Worker entry + createServer()
  mcp/                  Minimal MCP server (JSON-RPC) + Streamable-HTTP transport
  backend/              CMU Courses API client (encoding, normalization, retries, cache)
  tools/                One module per tool group
  reference/            Departments, gened schools, day map, finals snapshot
  auth/                 Deferred FCE seam (not wired in v1)
test/                   Unit + live integration/contract tests
scripts/stress.mjs      Concurrency load test
docs/EVALS.md           Golden-answer eval prompts
F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Remote MCP connector for eBay, Shopify, Best Buy & Etsy marketplace data via the Commerce API

  • Read-only MCP server for ClassQuill, a tutoring-business-management platform.

  • Remote MCP connector for App Store + Google Play data via StoreBridge API. No auth required.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SamEthanMathew/cmucourses-connector'

If you have feedback or need assistance with the MCP directory API, please join our Discord server