brightspace
Building a MCP server for Purdue students to connect their Brightspace accounts
claude mcp add --transport stdio pranav-vijayananth-brightspace-mcp-server python /absolute/path/to/brightspace-mcp-server/mcp_server.py \ --env PURDUE_PASSWORD="your_purdue_password" \ --env PURDUE_USERNAME="your_purdue_username"
How to use
This MCP server provides controlled access to your Purdue Brightspace data through Claude Desktop. Built with Playwright, it logs into Brightspace, handles Purdue Duo Mobile 2FA, and exposes data via the MCP interface so Claude can respond to natural language queries about your courses, assignments, and grades. At the moment, the project focuses on course list extraction and authentication flow, with ongoing development for assignments and grade tracking. Once running, you can ask Claude questions like, "What courses am I taking?" and Claude will route the request through the Brightspace MCP server to fetch your enrolled courses. The server is designed to be used with Claude Desktop by adding a configured tool named brightspace, which points Claude to the local MCP server you run with Python.
To verify the integration, you can use the built-in hello tool and later expand to additional tools (e.g., get_courses). The server authentication uses your local environment credentials, stored securely in a .env file, and prompts for Duo Mobile verification during the login flow. As features mature, more tools will be added to retrieve assignments, grades, and other Brightspace data, all while respecting your privacy and Purdue's terms of service.
How to install
Prerequisites
- Python 3.12 installed
- macOS (recommended; other platforms may work with Playwright, but testing shown on macOS)
- Claude Desktop installed
- Purdue Career Account with Brightspace access
- Duo Mobile app configured for your account
Step 1: Clone the repository
git clone https://github.com/your-username/brightspace-mcp-server.git
cd brightspace-mcp-server
Step 2: Set up a Python virtual environment and install dependencies
# Create a Python 3.12 virtual environment
python3 -m venv venv
# Activate the virtual environment
# macOS/Linux
source venv/bin/activate
# Windows
venv\Scripts\activate
# Install dependencies (assumes setup.py handles setup tasks)
pip install -r requirements.txt
Step 3: Configure credentials Create a .env file in the project root with your Brightspace credentials:
PURDUE_USERNAME=your_purdue_username
PURDUE_PASSWORD=your_purdue_password
⚠️ Do not commit this file to version control. It is included in .gitignore.
Step 4: Run the MCP server locally
# Start the server (example; ensure the path to mcp_server.py is correct in mcp_config)
python mcp_server.py
Step 5: Configure Claude Desktop (once the server is running)
- Open Claude Desktop > File > Settings > Developer > Edit Config
- Add a configuration pointing to the local MCP server, e.g.:
{
"mcpServers": {
"brightspace": {
"command": "/absolute/path/to/brightspace-mcp-server/venv/bin/python",
"args": [
"/absolute/path/to/brightspace-mcp-server/mcp_server.py"
]
}
}
}
- Replace /absolute/path/to/ with your actual project path. Save and restart Claude Desktop.
Step 6: Test the integration
- In Claude Desktop, try:
- "What tools do you have available?"
- "Can you use the hello tool?"
Notes: The setup script in the repository (setup.py) can automate creating a Python 3.12 virtual environment and installing dependencies. If you prefer, you can manually set up a venv and install requirements before running the MCP server.
Additional notes
Tips and caveats:
- The scraper relies on Playwright and may require updating CSS selectors if Brightspace UI changes; if a failure occurs, re-run the authentication flow to refresh the session.
- Duo Mobile prompts appear during automated login; ensure you have access to approve promptly.
- Environment variables are read from a .env file; keep it secure and never commit it to git.
- The current MCP tool set centers on basic data retrieval (e.g., course lists) with expansion planned for assignments and grades as development progresses.
- Absolute paths are required in Claude Desktop configurations to ensure the server is correctly located by the tool.
- If you encounter issues, check Claude Desktop logs and verify Python version is 3.12.
Related MCP Servers
mcp-vegalite
MCP server from isaacwasserman/mcp-vegalite-server
github-chat
A Model Context Protocol (MCP) for analyzing and querying GitHub repositories using the GitHub Chat API.
nautex
MCP server for guiding Coding Agents via end-to-end requirements to implementation plan pipeline
pagerduty
PagerDuty's official local MCP (Model Context Protocol) server which provides tools to interact with your PagerDuty account directly from your MCP-enabled client.
futu-stock
mcp server for futuniuniu stock
mcp -boilerplate
Boilerplate using one of the 'better' ways to build MCP Servers. Written using FastMCP