Brown Courses MCP Server
Click on "Deploy 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., "@Brown Courses MCP Server Search for linear algebra courses this fall"
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.
Brown Courses@Brown MCP Server
MCP server for Brown University's course catalog (cab.brown.edu). Search courses, get details, check schedule conflicts — all through Claude. No API keys or auth needed.
Tools
Tool | What it does |
| Find courses by keyword, department, instructor, or semester. |
| Full details: description, prereqs, instructor, seats, Critical Review link. |
| Check multiple courses for time conflicts. |
| List common Brown department codes. |
Typical flow: search to find courses → course_detail for the ones you're interested in → schedule_check to make sure they don't conflict.
Related MCP server: University Course Catalog MCP Server
Setup
cd brown-courses-mcp
uv sync # or: pip install -e .Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"brown-courses": {
"command": "uv",
"args": ["run", "--directory", "/path/to/brown-courses-mcp", "python", "server.py"]
}
}
}Claude Code
claude mcp add brown-courses -- uv run --directory /path/to/brown-courses-mcp python server.pyAPI
Both endpoints are Brown-hosted, unauthenticated, and return JSON:
POST https://cab.brown.edu/api/?page=fose&route=search
POST https://cab.brown.edu/api/?page=fose&route=detailsSearch request body:
{
"other": {"srcdb": "202520"},
"criteria": [
{"field": "keyword", "value": "linear algebra"},
{"field": "is_canc", "value": "N"}
]
}Details request body:
{
"srcdb": "202520",
"group": "code:MATH 1530"
}Term codes
Code | Meaning |
| Fall |
| Winter |
| Spring |
| Summer |
| Any term |
Notes
No authentication required for read-only course data (descriptions, times, instructors, enrollment counts).
The details endpoint returns HTML fragments for some fields (instructor info, seats, suggested courses) — the server parses these into clean text.
Term codes go back to at least 2016 in the CAB system.
schedule_checkuses the structuredmeetingTimesJSON for conflict detection, not the human-readablemeetsstring.
Credits
Pattern inspired by kenmham/DiningMCP.
Available Tools
5 toolsbatch_course_detailsA
Get details for multiple courses at once (parallel fetch). Much faster than calling course_detail repeatedly.
Args: codes: List of course codes, e.g. ["MATH 1530", "CSCI 0200", "ECON 1110"]. semester: "fall", "spring", "winter", "summer", or "any". Empty = current term. year: 4-digit year, e.g. "2026". Empty = current year.
Inputs: codes (required), year, semester. Returns: result
course_detailA
Get full details for a specific course: description, prerequisites, instructor info, meeting times, seats, Critical Review link, and more.
Args: code: Course code, e.g. "MATH 0520", "CSCI 0200", "BIOL 0500". semester: "fall", "spring", "winter", "summer", or "any". Empty = current term. year: 4-digit year, e.g. "2026". Empty = current year.
Inputs: code (required), year, semester. Returns: result
departmentsA
List common Brown department codes for use with the search tool. Not exhaustive — use keyword search if you don't see your department.
Inputs: no named parameters. Returns: result
schedule_checkA
Check meeting times for multiple courses to spot conflicts.
Args: codes: List of course codes, e.g. ["MATH 1530", "CSCI 0200", "BIOL 0500"]. semester: "fall", "spring", "winter", "summer", or "any". Empty = current term. year: 4-digit year. Empty = current year.
Inputs: codes (required), year, semester. Returns: result
searchA
Search Brown's course catalog (Courses@Brown / CAB).
Returns a compact list of matching courses with codes, titles, instructors, meeting times, and seat availability.
Args: keyword: Free-text search, e.g. "linear algebra", "MATH 1530", "machine learning". department: Department code, e.g. "MATH", "CSCI", "BIOL", "ENGN". instructor: Instructor last name, e.g. "smith". semester: "fall", "spring", "winter", "summer", or "any". Empty = current term. year: 4-digit year, e.g. "2026". Empty = current year.
Inputs: year, keyword, semester, department, +1 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: departments lists codes, search returns compact course lists, course_detail provides full details, batch_course_details handles multiple codes efficiently, and schedule_check identifies conflicts. There is no ambiguity about which tool to use for a given task.
All tool names use lowercase with underscores, which is consistent, but the grammatical pattern varies (nouns like 'departments' and 'course_detail', verbs like 'search', and a compound like 'schedule_check'). This is mostly consistent but not a uniform verb_noun pattern.
With 5 tools, the server is well-scoped for a course catalog domain. Each tool provides a necessary function without unnecessary overlap or bloat, fitting well within the ideal 3-15 range.
The server covers all core browsing needs: searching, retrieving full course details, batch retrieval, and schedule conflict checking. The inclusion of department listing and filtering parameters ensures users can navigate the catalog effectively, with no obvious gaps.
Maintenance
Related MCP Connectors
Unofficial Wentworth (WIT) course catalog and student schedule. Needs a WIT sign-in.
Unofficial NTNU course data: search, timetables, grades, course info, and exam logistics.
Read-only access to Epivo's live course catalogue for AI agents.
Academic literature search, retrieval, and private library management on top of OpenAlex.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables searching and retrieving course details, schedules, prerequisites, and instructor information from the CMU course catalog via the ScottyLabs API.92MIT
- FlicenseNot gradedqualityDmaintenanceProvides intelligent access to a university course catalog with full-text search, prerequisite tracking, instructor lookups, and course comparison prompts.-
- AlicenseAqualityBmaintenanceEnables searching and retrieving course listings, departments, and syllabi from National Chengchi University's public course API using natural language.31MIT
- AlicenseAqualityBmaintenanceExposes USC's public course catalog API to AI agents, enabling natural-language queries about courses, GE requirements, schedules, and fees with optional filters for days, times, and open sections.161MIT