AI Access
Let an AI assistant search courses for you.
BadgerBase runs an MCP (Model Context Protocol) server that lets an AI assistant search the UW–Madison course catalog on your behalf, using the same data and filters the site itself uses. It requires your BadgerBase account, and you approve access before anything connects.
https://mcp.badgerbase.app/mcpThe three tools
The server exposes three tools. search_courses searches the catalog and historic GPA data. get_course returns one course in full — description, prerequisites, and every section with its seats, instructors and meeting times. my_subscriptions lists the courses and sections you’re watching. Search now reaches the section-level filters too — professor ratings, open seats, and the times you’re free — so it can answer things like “an open COMP SCI course with a well-rated professor that fits my Tuesday afternoon.”
| Filter | Meaning |
|---|---|
| search_param | Free text over course designation, title, and instructor name. |
| subject_code | Exact subject match, e.g. COMP SCI. |
| level | Elementary, Intermediate, or Advanced. Comma-separate to match any. |
| min_gpa | Minimum cumulative GPA earned by past students, on a 0–4 scale. |
| status | OPEN, WAITLISTED, or CLOSED. Comma-separate to match any. |
| min_credits / max_credits | Credit range for the course. |
| general_education | An exact gen-ed code, e.g. QR-A — not a yes/no flag. |
| ethnic_studies / humanities / social_science / natural_science | Breadth requirement flags. |
| min_professor_rating | RateMyProfessor rating of the section's instructors, 1–5. |
| max_professor_difficulty | Difficulty ceiling, 1–5 — nothing harder than this. |
| min_professor_ratings_count | Only sections whose instructors have at least this many ratings, so one review can't decide it. |
| min_would_take_again_percent | Would-take-again percentage, 0–100. |
| min_open_seats | Sections with at least this many seats currently open. |
| free_monday … free_friday | When you're free that day, e.g. "13:00-17:00,18:00-20:00". See the note below — the semantics are stricter than they look. |
| sort | cumulative_gpa or recent_gpa, highest first. |
| limit | Results per page. Defaults to 10, capped at 25. |
| page | 1-based page number, for paging through results. |
Takes a designation like COMP SCI 400. Some designations cover several different courses — topics courses and seminars share a code — so it answers with the list of variants and you pick one by title.
Takes no arguments and reads only your own subscriptions. It cannot subscribe or unsubscribe you — nothing the AI does here can change what you’re watching.
These are the blocks you are free, not the times you want class. A course matches only if one of its sections has every meeting inside your blocks — and a section meeting on a day you didn’t mention is excluded outright. So asking for “morning classes” by giving only free_monday will also drop everything that meets Tuesday through Friday. Give every day you could attend.
The two permissions
The consent screen asks for these separately. courses:read covers searching and course detail. subscriptions:read covers seeing what you’re watching. A connection granted only the first is refused if it asks for your subscriptions, so you can approve search without handing over your watchlist.
Connect it in Claude
In Claude, go to Settings and find the Connectors section, then choose Add custom connector.
Enter https://mcp.badgerbase.app/mcp as the connector URL and save it.
Claude opens BadgerBase sign-in. Use your existing account, or create one if you don't have one yet.
You'll land on a consent screen naming the client and exactly what it can do. Approve to finish connecting, or decline to stop here.
This works with any MCP client that supports Streamable HTTP with OAuth, not just Claude. The exact menu names differ by client, but the shape is the same: add a custom connector, give it the server URL above, sign in, and approve. After you sign in, BadgerBase shows a consent screen naming the client that's requesting access and exactly what it can do.
Things to try asking
“Find open COMP SCI courses with a class GPA above 3.3”
“Which QR-A courses still have seats?”
“Compare intermediate STAT courses by GPA”
“What are the meeting times and instructors for COMP SCI 400?”
“Has a seat opened in any section I'm watching?”
“Of the courses I'm watching, which has the highest average GPA?”