Skip to main content
Glama
Brown Courses MCP Server

Brown Courses MCP Server

by Hwzw

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

search

Find courses by keyword, department, instructor, or semester.

course_detail

Full details: description, prereqs, instructor, seats, Critical Review link.

schedule_check

Check multiple courses for time conflicts.

departments

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.py

API

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=details

Search 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

YYYY10

Fall

YYYY15

Winter

YYYY20

Spring

YYYY00

Summer

999999

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_check uses the structured meetingTimes JSON for conflict detection, not the human-readable meets string.

Credits

Pattern inspired by kenmham/DiningMCP.

Available Tools

5 tools
batch_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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.5/5.0

    Scored across 5 tools

    Disambiguation5/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness5/5

    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

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers