blackboard-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BLACKBOARD_URL | No | Instance origin, overriding stored config | |
| BLACKBOARD_COOKIE | No | Session cookie for non-interactive login | |
| BLACKBOARD_MCP_HOME | No | State directory, default ~/.blackboard-mcp | ~/.blackboard-mcp |
| BLACKBOARD_MCP_LOG_LEVEL | No | Log level: silent, error, warn, info, or debug | |
| BLACKBOARD_MCP_PAGE_SIZE | No | Default list page size, default 50 | 50 |
| BLACKBOARD_MCP_ALLOW_WRITES | No | Set to '1' to permit write operations | 0 |
| BLACKBOARD_MCP_DOWNLOAD_DIR | No | Where files are saved | |
| BLACKBOARD_MCP_MAX_DOWNLOAD_BYTES | No | Per-file ceiling, default 100 MB | 104857600 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bb_whoamiA | Returns the signed-in Blackboard user (name, username, student id, email, institution roles) and the configured instance. Use this to confirm authentication is working before other calls. |
| bb_session_statusA | Reports how much longer the stored Blackboard session is valid, when it was captured, and which cookies it holds. Call this when other tools start failing with session errors. |
| bb_list_coursesA | Lists the courses the signed-in user is enrolled in, with course id, name, term, role and last-access date. The returned |
| bb_get_courseA | Full detail for one course: name, code, term, availability window, Ultra/Classic mode, and the tools enabled in it. |
| bb_list_termsB | Lists academic terms defined on the instance, with their date ranges. |
| bb_list_rosterA | Lists the people enrolled in a course with their roles. Useful for finding an instructor to contact, or identifying group members. |
| bb_browse_courseA | Walks the full content outline of a course recursively and returns every item with its folder path, type, and any attached file. This is the primary way to discover what material a course contains. Use maxDepth/maxNodes to bound very large courses. |
| bb_list_contentA | Lists the immediate children of a course folder or lesson, or the top level of the course when no folder is given. Prefer bb_browse_course unless you specifically want one level. |
| bb_get_contentA | Full detail for one content item: its rendered body text, attached file metadata, external link target, due date, and any files embedded in the body HTML. Use this to actually read an announcement-style document or assignment brief. |
| bb_search_contentA | Searches content item titles and body text for a query string, in one course or across every enrolled course. Use this when the user asks where something is ("where are the lecture slides on transformers?"). Searching all courses walks each tree, so prefer a single courseId when you know it. |
| bb_list_filesA | Walks a course and lists every readable document: attached files, attachments, files embedded in page bodies, and content items that link to Google Slides, Docs or Sheets. Returns name, type, size and the contentId needed to fetch each one. |
| bb_read_fileA | Downloads a file attached to a content item and extracts its text. Also resolves content items that merely LINK to a Google Slides/Docs/Sheets document (common for lecture decks) by fetching the provider export, so reading works the same either way. PDFs are returned a page-window at a time (use fromPage to continue), so a long document will not flood the context. Handles PDF, HTML, and plain-text/code/CSV; Office formats download but cannot be extracted. This is the tool to use to actually read lecture notes or a handout. |
| bb_download_fileA | Downloads a file from a content item and saves it locally without extracting text. Use this for Office documents, images, archives, or anything the user wants to keep. Also handles content items that link to Google Slides/Docs/Sheets, fetching the export (pptx/docx/xlsx/pdf). Returns the saved path. |
| bb_download_course_filesA | Walks a course and downloads every attached file to a local folder, organised by course. Use for archiving a course or grabbing all slides at once. Respects the configured size limit per file and skips files already on disk. |
| bb_download_submissionA | Downloads the files the student submitted with an assignment attempt. Use bb_get_grade_detail first to find the attemptId and columnId. |
| bb_list_gradesA | Lists grades for one course, or across every enrolled course when courseId is omitted. Shows each graded item, the score out of its total, and its status. Cross-course mode uses Blackboard's batch API so it costs roughly one request rather than one per course. |
| bb_get_grade_detailA | Everything about one gradebook item: the score, rubric/points, due date, every attempt with its timestamp and status, the student's submitted text, and the instructor's written feedback. This is where feedback lives. The grade list does not carry it. |
| bb_grade_summaryA | Computes, per course, how many items are graded, the running points total, and the average percentage. Use this for "how am I doing overall?" questions rather than listing every item. |
| bb_todoA | The student to-do list: everything overdue, due today, and coming up, across all courses, in one call. This is the right tool for "what do I have due?", "am I behind?", or "what should I work on?". Grouped by urgency and sorted by date. |
| bb_calendarA | Lists calendar entries in a date range: class sessions, instructor-created events, and assignment due dates. Covers all courses by default. Use bb_todo instead when the question is specifically about assignment deadlines. |
| bb_course_scheduleA | Lists the recurring class meetings configured for a course (day, time, room). Empty for courses whose instructor never set one up. |
| bb_announcementsA | Lists course announcements with their full text, newest first. Covers every enrolled course by default (via the batch API), or one course when courseId is given. Use this for "what did my instructors post?" or catching up after time away. |
| bb_activity_streamA | The Ultra activity stream: recent grade postings, new content, announcements and due-date reminders across all courses, newest first. A good single call for "what changed recently?". |
| bb_list_conversationsA | Lists the message threads (Blackboard "conversations") in a course, and optionally the messages inside one thread. |
| bb_list_discussionsA | Reads a discussion forum: its top-level posts, and the replies to one post when messageId is given. Find the forumId from a "discussion" item in bb_browse_course (its contentDetail carries conferenceId/id). |
| bb_attendanceA | Lists the attendance records recorded for the signed-in user in a course (present/absent/late/excused per session), when the instructor uses Blackboard attendance. |
| bb_unread_countsA | Unread message counts across every course in a single call, plus the overall messages summary. Cheap. Use it to decide whether reading messages is worth it before calling bb_list_conversations. |
| bb_raw_requestA | Escape hatch: issues a request against any Blackboard API path using the stored session, and returns the raw JSON. Use this when no dedicated tool covers what you need. The Ultra internal API (/learn/api/v1/...) exposes far more than this server models. Call bb_list_endpoints first to see what is already wrapped. |
| bb_batch_requestA | Fans out up to 20 GET reads in a single round trip using Blackboard's own batch endpoint. Paths are version-relative, e.g. "v1/courses/_12345_1/groups". Much cheaper than repeated bb_raw_request calls when gathering the same data across many courses. |
| bb_list_endpointsA | Shows every Blackboard API endpoint this server knows, with the operation name and its path template, plus any local overrides. Useful for discovering what to pass to bb_raw_request. |
| bb_mark_reviewedA | Marks a reviewable content item as reviewed (the "Mark Reviewed" button in Ultra). Requires writes to be enabled with BLACKBOARD_MCP_ALLOW_WRITES=1; this server is read-only by default. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| whats_due | Summarise everything due soon across all Blackboard courses, grouped by urgency. |
| course_briefing | Build a full picture of one course: structure, deadlines, grades and recent activity. |
| study_pack | Find and read all course material on a topic, then synthesise it into study notes. |
| catch_up | Everything that changed on Blackboard recently: posts, grades, new material, deadlines. |
| grade_report | Current standing across all courses, with feedback on what to prioritise. |
| find_material | Locate a specific file, reading, or slide deck across all Blackboard courses. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| me | The signed-in user and the configured instance. |
| courses | Every course the signed-in user is enrolled in, with ids and terms. |