cmucourses-connector
The MCP server is deployed on Cloudflare Workers, but this is an implementation/deployment detail rather than a target service the server provides integration for.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cmucourses-connectorFind intro CS courses with no prerequisites for fall semester"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.tsfor the deferred design.
Tools
Tool | What it does |
| Keyword + filter search (department, level, units, semester); paginated 10/page |
| Full details for one course by ID (optionally with schedules) |
| Batch details for several courses |
| Prereqs (with AND/OR relation groups) + postreqs for a course |
| Offered lectures/sections for course(s): days, times, instructors, locations |
| Courses/semesters an instructor teaches |
| Resolve a partial name/ID to matching courses (lightweight lookup) |
| Resolve a partial instructor name |
| Gen-ed-eligible courses for a school (SCS/CIT/MCS/Dietrich) |
| Final-exam day/time/location (bundled per-semester snapshot) |
| 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/mcpDrive 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/mcpStress test (mixed tools, live backend):
node scripts/stress.mjs http://127.0.0.1:8787/mcp 50 200Deploy (Cloudflare Workers)
npx wrangler login # one-time, uses your Cloudflare account
npx wrangler deploy # -> https://cmucourses-connector.<your-subdomain>.workers.devThe 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
Settings → Connectors → Add custom connector.
Paste the URL above (note the
/mcppath).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 promptsThis server cannot be installed
Maintenance
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
- Flicense-qualityCmaintenanceMCP server for querying a university course catalog. Enables searching courses, checking prerequisites, and looking up instructors via natural language.Last updated
- AlicenseAqualityCmaintenanceEnables searching and retrieving course details, schedules, prerequisites, and instructor information from the CMU course catalog via the ScottyLabs API.Last updated92MIT
- Flicense-qualityCmaintenanceMCP server that exposes a university course catalog to LLMs, enabling course search, prerequisite lookup, instructor details, and department directory through natural language.Last updated
- Alicense-qualityCmaintenanceA remote MCP server for querying Canvas LMS courses, assignments, and grades. Enables natural language interaction with Canvas data via MCP clients like Claude Desktop.Last updated23MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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