Skip to main content
Glama

CanvasLMS - API

CanvasLMS - API는 Canvas LMS 계정을 AI 어시스턴트 앞에 두는 로컬 MCP 서버입니다. 사용자 머신에서 실행되며, 사용자 개인 액세스 토큰으로 Canvas와 통신하고, 강좌, 과제, 채점, 토론, 모듈, 페이지, 파일, 메시징, 동료 평가, 접근성 등을 다루는 약 100개의 도구를 제공합니다. 모든 도구는 Markdown을 반환합니다. Canvas를 변경하는 모든 도구는 먼저 변경 사항을 미리 보여주고, 사용자가 확인한 후에만 적용합니다.

빠른 시작

  1. Canvas 개인 액세스 토큰을 받으세요: Canvas에서 계정 > 설정 > 승인된 통합 > 새 액세스 토큰으로 이동하세요.

  2. 저장소를 클론하고 설치하세요.

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 .
  1. 예제 환경 파일을 복사하고 Canvas 호스트와 토큰을 입력하세요.

cp .env.example .env
  1. 연결을 확인하세요.

canvaslms-api --test

이 명령은 이름, 사용자 ID, 활성 강좌를 출력합니다. 실패하면 .env에서 CANVAS_URLCANVAS_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.json

  • macOS: ~/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_URL

Canvas 호스트(예: https://yourschool.instructure.com). /api/v1 접미사는 포함하지 않습니다.

CANVAS_TOKEN

Canvas 개인 액세스 토큰.

CANVAS_TIMEOUT

아니요

30

HTTP 요청 제한 시간(초).

CANVAS_CACHE_TTL

아니요

300

강좌 확인 결과가 캐시되는 시간(초).

CANVAS_MAX_CONCURRENCY

아니요

5

Canvas에 대한 최대 동시 요청 수.

CANVAS_ANONYMIZE_STUDENTS

아니요

false

도구 출력에서 학생 이름을 안정적인 가명으로 대체.

CANVAS_DOWNLOAD_DIR

아니요

시스템 임시 디렉터리

download_file이 다운로드한 파일을 저장하는 위치.

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 호출에만 사용됩니다.

  • 토큰은 절대 로그에 기록되지 않습니다. --configget_privacy_status가 이를 마스킹합니다.

  • 쓰기 도구는 미리보기 후 명시적인 confirm=true가 필요합니다. 실수로 Canvas가 변경되는 일은 없습니다.

  • download_file은 대상 경로에 이미 존재하는 파일을 덮어쓰지 않습니다.

라이선스

MIT. LICENSE 참조.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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