Token导航 LogoToken导航TokenDH.com
Remote Canvas MCP logo
设计创作stdio官方级别未说明来源级核验

Remote Canvas MCP

MCP Server

wrangler

一个基于Cloudflare Workers部署的远程Canvas LMS MCP服务器,支持通过自然语言交互访问课程、作业、成绩等数据。

工具数

39

提示词数

0

GitHub Stars

0

资源数

0
教育技术TypeScriptClaude远程服务器Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

karilaa-dev

提供方

karilaa-dev

最后核验

2026/5/17 20:21

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx wrangler kv namespace create OAUTH_KV

详细介绍

Canvas LMS MCP服务器(远程)

遥控器 模型上下文协议 (MCP)服务器 Canvas LMS,部署在Cloudflare Workers上。将其连接到Claude(或任何MCP客户端),并通过自然语言与您的Canvas课程、作业、成绩等进行交互。

基于 mcp画布lms,移植为具有多用户支持的远程MCP服务器。工具是 自动同步 从上游-运行 npm run sync 再生。

特性

  • 远程MCP --在Cloudflare Workers上运行,无需本地安装
  • 多用户 --每个用户在OAuth流程中提供自己的Canvas凭据
  • 安全的凭证存储 -Canvas API代币在静止时使用AES-256-GCM加密
  • 无需外部身份验证 --用户直接输入Canvas凭据,无需第三方登录
  • 时区感知结果 --用户在设置过程中选择时区,时间戳结果包括本地 _local 伴生田
  • 只读Canvas访问 --仅显示读取Canvas数据的工具
  • 39画布工具 --课程、作业、提交、模块、页面、讨论、测验、文件、日历、对话、量规、帐户等
  • 从上游自动同步 -工具、类型和API方法是从生成的 mcp画布lms 无需手动移植

先决条件

  • A. 云耀 账户
  • Canvas LMS API令牌(每个用户提供自己的令牌)
  • Node.js和npm

设置

1.克隆并安装

git clone 
cd remote-canvas-mcp
npm install

2.创建KV命名空间

npx wrangler kv namespace create OAUTH_KV

更新 idwrangler.jsonc 在...之下 kv_namespaces 使用返回的命名空间ID。

3.更新 wrangler.jsonc

设置您的 account_id 在配置文件中(在Cloudflare仪表板中找到它)。

4.设定秘密

npx wrangler secret put COOKIE_ENCRYPTION_KEY

COOKIE_ENCRYPTION_KEY 可以是任何随机字符串(例如。 openssl rand -hex 16).它用于cookie签名和凭证加密。

5.部署

npm run deploy

您的服务器将在 https://.workers.dev/mcp.

来自Claude的连接

  1. 打开克劳德桌面或Claude.ai
  2. 首选 设置>集成>添加MCP服务器
  3. 请输入您的服务器URL: https://.workers.dev/mcp
  4. 将打开一个审批页面——输入您的 画布域 (例如。 school.instructure.com)以及 Canvas API令牌
  5. 选择用于本地时间戳字段的时区
  6. 点击 批准
  7. 完成--画布工具现在可以在您的对话中使用

生成Canvas API令牌

  1. 登录您的Canvas实例
  2. 首选 帐户>设置
  3. 滚动到 已批准的集成 然后单击 +新访问令牌
  4. 给它一个描述,然后单击 生成令牌
  5. 复制令牌(它将不再显示)

更新凭据

断开并重新连接Claude中的MCP服务器。审批页面将再次出现,允许您更新Canvas凭据和时区。

从Codex连接

这个存储库也是一个Codex插件。插件元数据位于 .codex-plugin/plugin.json,以及 .mcp.json 将Codex指向部署的远程MCP端点:

https://remote-canvas-mcp.karilaa-account.workers.dev/mcp

将此存储库作为本地Codex插件安装或加载。首次使用时,Codex将启动与Claude相同的OAuth审批流程:

  1. 在浏览器中批准MCP连接。
  2. 输入您的Canvas域,例如 school.instructure.com.
  3. 输入Canvas API令牌。
  4. 选择用于本地时间戳字段的时区。
  5. 返回Codex并使用Canvas工具。

如果部署自己的Worker,请更新 url.mcp.json 到您部署的 /mcp 安装插件之前的端点。

从自定义GPT连接

同一Worker还为ChatGPT自定义GPT编辑器公开了GPT操作REST外观。MCP端点在以下位置仍然可用 /mcp;自定义GPT操作应使用以下描述的REST API:

https://.workers.dev/actions/openapi.json

一次性OAuth客户端注册

使用现有的动态客户端注册端点为自定义GPT创建一个OAuth客户端。替换 g-YOUR-GPT-ID 在ChatGPT中保存GPT一次后:

curl -sS https://.workers.dev/register \
  -H 'Content-Type: application/json' \
  -d '{
    "client_name": "Canvas LMS Custom GPT",
    "redirect_uris": [
      "https://chat.openai.com/aip/g-YOUR-GPT-ID/oauth/callback",
      "https://chatgpt.com/aip/g-YOUR-GPT-ID/oauth/callback"
    ],
    "grant_types": ["authorization_code", "refresh_token"],
    "response_types": ["code"],
    "scope": "canvas.read",
    "token_endpoint_auth_method": "client_secret_post"
  }'

保存返回的 client_idclient_secret.

GPT操作配置

在自定义GPT编辑器中:

  1. 添加操作并从导入架构 /actions/openapi.json.
  2. 将身份验证设置为 OAuth.
  3. 使用已注册的 client_idclient_secret.
  4. 将授权URL设置为 https://.workers.dev/authorize.
  5. 将令牌URL设置为 https://.workers.dev/token.
  6. 将范围设置为 canvas.read.

当GPT首次使用操作时,ChatGPT将启动OAuth流。审批页面要求用户提供Canvas域、Canvas API令牌和时区,然后存储以KV加密的Canvas令牌。

Actions API是只读的,可在 /actions/api/*。它公开了健康、个人资料、课程、作业、即将到来的作业、仪表板卡片、课程成绩、模块、页面和文件的重点端点。

更新更改的ChatGPT回调URL

如果ChatGPT在您输入客户端ID和密码后更改了OAuth回调URL,请更新现有的OAuth客户端,而不是注册新的客户端。首先设置一个管理员令牌:

npx wrangler secret put ACTIONS_ADMIN_TOKEN

然后打开浏览器管理UI:

https://.workers.dev/admin

使用登录 ACTIONS_ADMIN_TOKEN 要创建自定义GPT OAuth客户端,请检查按名称分组的客户端,更新重定向URI,并删除一个或多个选定的客户端。UI仅将管理员令牌存储在浏览器本地存储中。

您还可以使用HTTP API更新客户端:

curl -sS https://.workers.dev/admin/oauth-clients//redirect-uris \
  -H 'Authorization: Bearer ' \
  -H 'Content-Type: application/json' \
  -d '{
    "redirect_uri": "https://chat.openai.com/aip/g-YOUR-GPT-ID/oauth/callback"
  }'

对于ChatGPT回调,管理端点同时存储 chat.openai.comchatgpt.com 同一路径的回调主机变体。您可以通过以下方式检查当前的客户注册:

curl -sS https://.workers.dev/admin/oauth-clients/ \
  -H 'Authorization: Bearer '

可用工具

仅注册只读Canvas工具。创建、更新、提交、发布、注册、开始尝试、标记项目完成或生成报告的工具不会公开。

时区感知结果保留了原始的Canvas时间戳字段,并添加了本地化的伴随字段 _local 后缀。例如, due_at 保留原始Canvas ISO时间戳 due_at_local 使用设置期间选择的时区添加。

类别工具
健康canvas_health_check
课程canvas_list_courses, canvas_get_course
作业canvas_list_assignments, canvas_get_assignment, canvas_list_assignment_groups
提交canvas_get_submission
模块canvas_list_modules, canvas_get_module, canvas_list_module_items, canvas_get_module_item
页面canvas_list_pages, canvas_get_page
讨论canvas_list_discussion_topics, canvas_get_discussion_topic, canvas_list_announcements
测验canvas_list_quizzes, canvas_get_quiz
用户canvas_get_user_profile, canvas_get_course_grades, canvas_get_user_grades
文件canvas_list_files, canvas_get_file, canvas_list_folders
日历canvas_list_calendar_events, canvas_get_upcoming_assignments, canvas_get_dashboard, canvas_get_dashboard_cards, canvas_get_syllabus
对话canvas_list_conversations, canvas_get_conversation, canvas_list_notifications
账户canvas_get_account, canvas_list_account_courses, canvas_list_account_users, canvas_list_sub_accounts, canvas_get_account_reports
评分标准canvas_list_rubrics, canvas_get_rubric

从上游同步

工具、类型和API方法是从上游自动生成的 mcp画布lms 项目。要获取最新更改,请执行以下操作:

npm run sync    # regenerate src/generated/ from upstream
npm run deploy  # deploy the updated server

同步脚本(scripts/sync-upstream.ts)获取上游源代码,解析工具定义和客户端方法,并在下生成三个文件 src/generated/:

  • types.ts --画布实体接口
  • canvas-api.ts -基于fetch的API方法(从上游的Axios转换而来)
  • register-tools.ts --所有使用Zod模式的MCP工具注册

运作原理

User connects MCP server in Claude
  → GET /authorize → Approval page with Canvas credential fields
  → User enters Canvas token + domain, selects timezone, clicks Approve
  → POST /authorize → Token is encrypted and timezone preference is stored per-user in KV
  → MCP connects → Server loads credentials from KV → Read-only Canvas tools are registered

本地开发

printf 'COOKIE_ENCRYPTION_KEY=%s\n' "your-random-secret" > .dev.vars
npm run dev

COOKIE_ENCRYPTION_KEY 可以是任何足够随机的字符串。它也用于本地开发期间的cookie签名和Canvas凭据加密。

项目结构

src/
  index.ts             ← MCP server entry point
  canvas-client.ts     ← HTTP infrastructure (request, pagination, retry)
  types.ts             ← Re-exports generated types + CanvasAPIError
  generated/           ← AUTO-GENERATED by npm run sync
    types.ts           ← Canvas entity interfaces
    canvas-api.ts      ← Client API methods (fetch-based)
    register-tools.ts  ← Read-only tool registrations
scripts/
  sync-upstream.ts     ← Code generation script

技术栈

目录标签

目录标签

教育技术TypeScriptClaude远程服务器本地部署自然语言处理Canvas集成多用户支持

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

wrangler

工具数量(toolCount,工具数)

39

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP