D2L Brightspace MCP服务器
MCP(模型上下文协议)服务器,为AI助手提供与D2L Brightspace LMS交互的工具。
我不宽恕在任何违反用户大学学术行为准则的活动中使用此服务器。
特性
- 自动身份验证 -使用
D2L_USERNAME和D2L_PASSWORD用于自动登录或基于浏览器的SSO的env变量 - 持久会话存储 -登录一次,使用数小时
- 12工具 用于访问作业、成绩、日历、公告、课程内容
- 文件下载 具有自动文本提取功能(docx、txt等)
- LLM优化响应 -干净、令牌高效的输出
- 多种运输方式 -HTTP/SSE(默认)或stdio用于远程访问
安装
1.克隆存储库
git clone https://github.com/joshuasoup/d2l-mcp.git
cd d2l-mcp2.安装依赖项并构建
npm install
npm run build这将自动安装Chromium以实现浏览器自动化并构建项目。
设置
1.配置环境变量
复制示例环境文件并添加您的凭据:
cp .env.example .env然后编辑 .env 并添加您的D2L凭据:
D2L_HOST=learn.ul.ie
D2L_USERNAME=your-username
D2L_PASSWORD=your-password
D2L_COURSE_ID=your-course-id2.首次认证
您可以通过两种方式进行身份验证:
选项A:使用环境变量(自动)
如果您已添加 D2L_USERNAME 和 D2L_PASSWORD 你的 .env 文件,服务器将使用这些凭据自动登录。
选项B:使用浏览器(交互式)
npm run auth
# or
d2l-mcp-auth这将打开一个浏览器窗口,您可以在其中登录Brightspace。您的会话已保存到 ~/.d2l-session/.
如果两者都有 D2L_USERNAME 和 D2L_PASSWORD 设置在您的 .env 文件,服务器将使用这些凭据自动登录。否则,它将使用保存的浏览器会话或提示进行交互式登录。
3.配置poke mcp
首选https://poke.com/settings/connections/integrations/new并输入您的服务器URL(如果您在本地执行此操作,请将localhost:3000端口转发)
4.运行服务器
默认情况下,服务器在端口3000上以HTTP模式运行:
d2l-mcp
# or
npm start服务器将于启动 http://localhost:3000/mcp。客户端可以通过以下方式连接:
- 发布
/mcp-发送JSON-RPC消息 - 获取
/mcp-为服务器到客户端的消息建立SSE流 - 删除
/mcp-终止会话
HTTP模式支持多个并发客户端,每个客户端都有自己的会话ID。
要使用stdio传输(用于Claude Desktop),请设置环境变量:
MCP_TRANSPORT=stdio d2l-mcp可用工具
作业
| 工具 | 说明 |
|---|---|
get_assignments | 列出所有作业,并注明截止日期和说明 |
get_assignment | 获取特定任务的完整详细信息 |
get_assignment_submissions | 获取您的提交、成绩和反馈 |
课程内容
| 工具 | 说明 |
|---|---|
get_course_content | 获取完整的课程大纲/结构 |
get_course_topic | 获取特定主题/讲座的详细信息 |
get_course_modules | 获取课程的主要部分/模块 |
get_course_module | 获取特定模块中的内容 |
成绩和日历
| 工具 | 说明 |
|---|---|
get_my_grades | 通过分数和反馈获得所有成绩 |
get_upcoming_due_dates | 获取日历事件和截止日期 |
其他
| 工具 | 说明 |
|---|---|
get_announcements | 从讲师那里获取课程公告 |
get_my_courses | 列出您注册的所有课程 |
download_file | 从课程文件中下载和提取内容 |
示例提示
一旦连接到Poke,你可以问这样的问题:
- “本周有什么作业要交?”
- “显示我的成绩”
- “发布了哪些公告?”
- “下载周报模板”
- “这门课的教学大纲是什么?”
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
D2L_HOST | 您的Brightspace主机名 | brightspace.carleton.ca |
D2L_USERNAME | 您用于自动登录的D2L用户名(可选) | 无 |
D2L_PASSWORD | 您用于自动登录的D2L密码(可选) | 无 |
D2L_COURSE_ID | 默认课程ID(可选) | 无 |
MCP_TRANSPORT | 运输方式: stdio, http,或 https | http |
MCP_PORT | HTTP服务器端口(仅在以下情况下使用 MCP_TRANSPORT=http) | 3000 |
设置 D2L_COURSE_ID 允许您在工具调用中省略课程ID。
运输方式
- 超文本传输协议 或 超文本传输安全协议 (默认):用于web客户端或远程访问的HTTP/SSE传输。使用MCP SDK中的StreamableHTTPServerTransport。
- 标准:标准输入/输出传输,由Claude Desktop和其他MCP客户端使用。集
MCP_TRANSPORT=stdio使用此模式。
会话管理
- 令牌到期:身份验证令牌将在约1小时后过期,但会使用保存的浏览器会话自动刷新
- 会话到期:浏览器会话在大约24小时不活动后过期
- 重新验证:运行
d2l-mcp-auth如果您的会话到期 - 自动身份验证 将d2l用户名和密码添加到.env以进行自动身份验证
发展
# Run tests
npm test
# Run integration tests (requires auth)
npm run test:integration
# Watch mode
npm run test:watch许可证
麻省理工学院
鸣谢
本项目基于以下原创作品 穆奇普将军. 此版本包括其他功能和修改。
