CanvasLMS-API
CanvasLMS - API
CanvasLMS - API는 Canvas LMS 계정을 AI 어시스턴트 앞에 두는 로컬 MCP 서버입니다. 사용자 머신에서 실행되며, 사용자 개인 액세스 토큰으로 Canvas와 통신하고, 강좌, 과제, 채점, 토론, 모듈, 페이지, 파일, 메시징, 동료 평가, 접근성 등을 다루는 약 100개의 도구를 제공합니다. 모든 도구는 Markdown을 반환합니다. Canvas를 변경하는 모든 도구는 먼저 변경 사항을 미리 보여주고, 사용자가 확인한 후에만 적용합니다.
빠른 시작
Canvas 개인 액세스 토큰을 받으세요: Canvas에서 계정 > 설정 > 승인된 통합 > 새 액세스 토큰으로 이동하세요.
저장소를 클론하고 설치하세요.
git clone https://github.com/harryx2011-boop/CanvasLMS-API.git
cd CanvasLMS-API
uv venv .venv
uv pip install -e .uv가 없으면 표준 가상 환경을 대신 사용하세요:
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS/Linux
pip install -e .예제 환경 파일을 복사하고 Canvas 호스트와 토큰을 입력하세요.
cp .env.example .env연결을 확인하세요.
canvaslms-api --test이 명령은 이름, 사용자 ID, 활성 강좌를 출력합니다. 실패하면 .env에서 CANVAS_URL과 CANVAS_TOKEN을 확인하세요.
Related MCP server: Canvas LMS MCP Server
Claude Code에 연결
Windows:
claude mcp add --scope user canvaslms-api -- "<absolute path>\.venv\Scripts\canvaslms-api.exe"macOS/Linux:
claude mcp add --scope user canvaslms-api -- "<absolute path>/.venv/bin/canvaslms-api"서버는 시작 시 저장소 폴더에서 .env를 읽으므로 클라이언트 구성에 환경 변수를 넣을 필요가 없습니다. .venv 안의 실행 파일에 대한 절대 경로를 사용하세요.
Claude Desktop에 연결
Claude Desktop 구성 파일에 항목을 추가하세요:
{
"mcpServers": {
"canvaslms-api": {
"command": "<absolute path>\\.venv\\Scripts\\canvaslms-api.exe"
}
}
}macOS/Linux에서는 command에 <absolute path>/.venv/bin/canvaslms-api를 사용하세요.
구성 파일 위치:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
파일을 편집한 후 Claude Desktop을 다시 시작하세요.
기타 클라이언트
stdio 서버를 지원하는 모든 MCP 클라이언트는 위의 Claude Code 및 Claude Desktop과 동일한 방식으로 실행 파일을 직접 시작할 수 있습니다.
HTTP만 지원하는 클라이언트의 경우 HTTP 전송으로 서버를 실행하세요:
canvaslms-api --transport http --host 127.0.0.1 --port 7100클라이언트를 http://127.0.0.1:7100으로 지정하세요. 서버는 여전히 저장소 폴더의 .env에서 Canvas 자격 증명을 읽습니다.
동작 방식
강좌 식별자.
course인수는 숫자 Canvas ID, 강좌 코드(ENG101), 강좌 이름의 일부 또는sis_course_id:X를 허용합니다. 어떤 것을 원하는지 확실하지 않으면 먼저list_courses를 사용하세요.확인 게이트. Canvas를 변경하는 모든 도구는
confirm: bool = false인수를 사용합니다. 이 인수 없이 호출하면 도구는 변경될 내용의 미리 보기를 반환하고 Canvas를 변경하는 요청을 만들지 않습니다. 미리 보기를 검토한 후confirm=true로 다시 호출하세요.권한. 모든 도구는 토큰 소유자로 실행됩니다. 학생 토큰은 다른 학생의 개인 데이터를 볼 수 없으며 채점이나 대량 메시징과 같은 교육자 도구를 사용할 수 없습니다. 이러한 호출은 누락된 권한에 대한 힌트와 함께 Canvas 403을 반환합니다.
출력. 모든 도구는 채팅 기록에 직접 표시되도록 형식화된 Markdown을 반환합니다.
익명화.
CANVAS_ANONYMIZE_STUDENTS=true이면 도구 출력의 학생 이름은 실제 이름 대신 강좌별 안정적인 가명으로 대체됩니다.
도구 참조
쓰기 도구(confirm 표시)는 confirm=true로 다시 호출할 때까지 미리 보기를 반환합니다.
강좌 및 신원
도구 | 용도 | confirm |
get_profile | 토큰 소유자의 Canvas 프로필 가져오기 | |
get_enrollments | 토큰 소유자의 강좌별 등록 목록 | |
list_courses | 토큰 소유자가 볼 수 있는 강좌 목록 및 검색 | |
get_course | 하나의 강좌 세부 정보 가져오기 | |
get_syllabus | 강좌의 강의 계획서 본문 가져오기 | |
get_course_overview | 강좌 요약: 강의 계획서, 모듈, 예정된 작업 | |
get_course_structure | 강좌의 전체 모듈/페이지/과제 개요 가져오기 | |
get_cache_status | 캐시된 강좌 해석 데이터 표시 | |
clear_cache | 강좌 해석 캐시 지우기 |
학생
도구 | 용도 | confirm |
get_upcoming_assignments | 여러 강좌에서 곧 마감되는 과제 목록 | |
get_todo | Canvas 할 일 목록 가져오기 | |
get_submission_status | 강좌의 제출/누락/채점 상태 표시 | |
get_grades | 하나 또는 모든 강좌의 현재 성적 가져오기 | |
get_pending_peer_reviews | 토큰 소유자가 아직 해야 할 동료 평가 목록 | |
get_submission | 하나의 제출물 세부 정보 및 피드백 가져오기 | |
submit_assignment | 과제 제출 | confirm |
comment_on_submission | 제출물에 댓글 추가 | confirm |
mark_module_item_done | 모듈 항목 완료로 표시 | confirm |
과제 및 채점
도구 | 용도 | confirm |
list_assignments | 강좌의 과제 목록 | |
get_assignment | 하나의 과제 세부 정보 가져오기 | |
list_submissions | 과제에 대한 제출물 목록 | |
get_assignment_analytics | 과제의 제출 및 성적 분포 요약 | |
get_student_analytics | 강좌에서 한 학생의 활동 요약 | |
create_assignment | 과제 생성 | confirm |
update_assignment | 과제 업데이트 | confirm |
bulk_grade_submissions | 한 번의 호출로 여러 제출물 채점 | confirm |
grade_with_rubric | 루브릭에 따라 제출물 채점 | confirm |
루브릭
도구 | 용도 | confirm |
list_rubrics | 강좌의 루브릭 목록 | |
get_rubric | 하나의 루브릭 기준 가져오기 | |
get_rubric_assessment | 제출물의 루브릭 평가 가져오기 | |
create_rubric | 루브릭 생성 | confirm |
create_rubric_from_csv | CSV 정의에서 루브릭 생성 | confirm |
associate_rubric | 과제에 루브릭 연결 | confirm |
토론 및 공지
도구 | 용도 | confirm |
list_discussion_topics | 강좌의 토론 주제 목록 | |
get_discussion_topic | 하나의 토론 주제 가져오기 | |
list_discussion_entries | 주제의 최상위 항목 목록 | |
get_discussion_entry | 하나의 토론 항목 가져오기 | |
get_discussion_thread | 답글이 포함된 전체 스레드 가져오기 | |
post_discussion_entry | 주제에 새 항목 게시 | confirm |
reply_to_discussion_entry | 기존 항목에 답글 | confirm |
create_discussion_topic | 토론 주제 생성 | confirm |
update_discussion_topic | 토론 주제 업데이트 | confirm |
list_announcements | 강좌의 공지 목록 | |
create_announcement | 공지 생성 | confirm |
delete_announcement | 하나의 공지 삭제 | confirm |
delete_announcements | ID로 여러 공지 삭제 | confirm |
delete_announcements_matching | 필터와 일치하는 공지 삭제 | confirm |
모듈
도구 | 용도 | confirm |
list_modules | 강좌의 모듈 목록 | |
list_module_items | 모듈의 항목 목록 | |
create_module | 모듈 생성 | confirm |
update_module | 모듈 업데이트 | confirm |
delete_module | 모듈 삭제 | confirm |
add_module_item | 모듈에 항목 추가 | confirm |
update_module_item | 모듈 항목 업데이트 | confirm |
delete_module_item | 모듈 항목 삭제 | confirm |
페이지
도구 | 용도 | confirm |
list_pages | 강좌의 페이지 목록 | |
get_page | 하나의 페이지 메타데이터 가져오기 | |
get_page_content | 하나의 페이지 본문 가져오기 | |
get_front_page | 강좌의 첫 페이지 가져오기 | |
create_page | 페이지 생성 | confirm |
edit_page_content | 페이지 본문 교체 | confirm |
update_page_settings | 페이지 설정 업데이트 (제목, 게시 상태, 편집 권한) | confirm |
bulk_update_pages | 여러 페이지에 동일한 편집 적용 | confirm |
delete_page | 페이지 삭제 | confirm |
파일
도구 | 용도 | confirm |
list_files | 강좌의 파일 목록 | |
read_file | 텍스트 파일 내용 읽기 | |
download_file | 파일을 디스크에 다운로드 | |
upload_file | 강좌에 파일 업로드 | confirm |
메시징
도구 | 용도 | confirm |
list_conversations | Canvas 받은 편지함 대화 목록 | |
get_conversation | 하나의 대화 메시지 가져오기 | |
get_unread_count | 읽지 않은 메시지 수 가져오기 | |
mark_conversations_read | 대화를 읽음으로 표시 | confirm |
send_conversation | 새 메시지 보내기 | confirm |
send_bulk_messages | 여러 수신자에게 동일한 메시지 보내기 | confirm |
동료 평가
도구 | 용도 | confirm |
list_peer_reviews | 과제에 대한 동료 평가 배정 목록 표시 | |
assign_peer_review | 동료 평가 배정 | confirm |
get_peer_review_assignments | 누가 누구를 평가하는지 목록 표시 | |
get_peer_review_completion_analytics | 동료 평가 완료율 요약 | |
get_peer_review_followup_list | 아직 동료 평가를 완료하지 않은 학생 목록 표시 | |
get_peer_review_comments | 동료 평가에 남긴 댓글 가져오기 | |
analyze_peer_review_quality | 동료 평가 피드백의 깊이와 유용성 점수화 | |
identify_problematic_peer_reviews | 부실하거나 누락된 동료 평가 표시 | |
generate_peer_review_report | 동료 평가 활동 요약 보고서 생성 | |
generate_peer_review_feedback_report | 동료 평가 전반의 피드백 내용 보고서 생성 | |
extract_peer_review_dataset | 분석용 동료 평가 데이터 내보내기 | |
message_peer_reviewers | 학생들에게 동료 평가 배정 관련 메시지 전송 | confirm |
send_peer_review_followups | 미완료 동료 평가가 있는 학생에게 알림 전송 | confirm |
사용자 및 개인정보
도구 | 용도 | confirm |
list_users | 강좌에 등록된 사용자 목록 표시 | |
list_groups | 강좌의 그룹 목록 표시 | |
check_enrollment | 강좌 내 특정 사용자의 등록 상태 확인 | |
export_anonymization_map | 가명-실명 매핑 내보내기 | confirm |
get_privacy_status | 익명화 활성화 여부 표시 |
접근성
도구 | 용도 | confirm |
scan_course_content_accessibility | 강좌 페이지와 파일의 접근성 문제 스캔 | |
fix_accessibility_issues | 감지된 접근성 문제에 대한 수정 적용 | confirm |
fetch_ufixit_report | 기존 UFIXIT 접근성 보고서 가져오기 | |
parse_ufixit_violations | UFIXIT 보고서에서 위반 사항 파싱 | |
format_accessibility_summary | 접근성 스캔을 읽기 쉬운 요약으로 포맷 |
강좌 복사
도구 | 용도 | confirm |
create_content_migration | 강좌 콘텐츠 마이그레이션/복사 시작 | confirm |
get_content_migration_status | 콘텐츠 마이그레이션 진행 상황 확인 |
메타
도구 | 용도 | confirm |
search_tools | 키워드로 사용 가능한 도구 검색 |
구성
모든 구성은 환경 변수에서 가져오며, 저장소 루트의 .env 파일에서 로드됩니다.
변수 | 필수 | 기본값 | 용도 |
| 예 | Canvas 호스트(예: | |
| 예 | Canvas 개인 액세스 토큰. | |
| 아니요 |
| HTTP 요청 제한 시간(초). |
| 아니요 |
| 강좌 확인 결과가 캐시되는 시간(초). |
| 아니요 |
| Canvas에 대한 최대 동시 요청 수. |
| 아니요 |
| 도구 출력에서 학생 이름을 안정적인 가명으로 대체. |
| 아니요 | 시스템 임시 디렉터리 |
|
canvaslms-api --config를 실행하면 토큰이 마스킹된 상태로 확인된 구성이 출력됩니다.
개발
개발용 추가 패키지와 함께 설치:
uv pip install -e ".[dev]"테스트 실행:
pytest린트:
ruff check .CI는 모든 푸시에서 테스트와 린트를 실행합니다. Docker 이미지도 제공되며, 엔트리포인트는 canvaslms-api입니다.
개발 중 유용한 CLI 플래그: canvaslms-api --list-tools는 등록된 모든 도구 이름을 출력하고, canvaslms-api --config는 확인된 설정을 출력하며, canvaslms-api --version은 설치된 버전을 출력합니다.
보안 참고 사항
Canvas 토큰은 로컬에 유지됩니다. 시작 시
.env에서 읽어 구성한 Canvas API 호출에만 사용됩니다.토큰은 절대 로그에 기록되지 않습니다.
--config와get_privacy_status가 이를 마스킹합니다.쓰기 도구는 미리보기 후 명시적인
confirm=true가 필요합니다. 실수로 Canvas가 변경되는 일은 없습니다.download_file은 대상 경로에 이미 존재하는 파일을 덮어쓰지 않습니다.
라이선스
MIT. LICENSE 참조.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityAmaintenanceLocal-first MCP server for Canvas LMS. Stdio transport, no third-party broker, token stays in ~/.canvas.env. Exposes courses, assignments, modules, announcements, grades, planner items, upcoming events, todo list, and bulk file dump as MCP tools.104MIT
- AlicenseBqualityAmaintenanceMCP server for Canvas LMS, providing 115+ tools to read courses, assignments, submissions, rubrics, quizzes; grade, comment, manage course content, and handle Canvas admin workflows from any AI agent.241639955MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.59MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS that exposes courses, assignments, modules, pages, files, grades, and submissions as tools for AI agents.
Related MCP Connectors
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
An MCP server that gives your AI access to the source code and docs of all public github repos
Connect AI agents to Flato's editable canvas runtime through a hosted MCP server.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/harryx2011-boop/CanvasLMS-API'
If you have feedback or need assistance with the MCP directory API, please join our Discord server