canvas-mcp-server
Version:
A comprehensive Model Context Protocol (MCP) server for Canvas LMS with full student functionality and account management
88 lines (87 loc) • 6.04 kB
TypeScript
import { CanvasCourse, CanvasAssignment, CanvasSubmission, CanvasUser, CanvasEnrollment, CreateCourseArgs, UpdateCourseArgs, CreateAssignmentArgs, UpdateAssignmentArgs, SubmitGradeArgs, EnrollUserArgs, CanvasDiscussionTopic, CanvasModule, CanvasModuleItem, CanvasQuiz, CanvasAnnouncement, CanvasUserProfile, CanvasScope, CanvasAssignmentSubmission, CanvasPage, CanvasCalendarEvent, CanvasRubric, CanvasAssignmentGroup, CanvasConversation, CanvasNotification, CanvasFile, CanvasSyllabus, CanvasDashboard, SubmitAssignmentArgs, FileUploadArgs, CanvasAccount, CreateUserArgs, CanvasAccountReport, CreateReportArgs, ListAccountCoursesArgs, ListAccountUsersArgs } from './types.js';
export declare class CanvasClient {
private client;
private baseURL;
private maxRetries;
private retryDelay;
constructor(token: string, domain: string, options?: {
maxRetries?: number;
retryDelay?: number;
});
private setupInterceptors;
private shouldRetry;
private sleep;
private getNextPageUrl;
healthCheck(): Promise<{
status: 'ok' | 'error';
timestamp: string;
user?: any;
}>;
listCourses(includeEnded?: boolean): Promise<CanvasCourse[]>;
getCourse(courseId: number): Promise<CanvasCourse>;
createCourse(args: CreateCourseArgs): Promise<CanvasCourse>;
updateCourse(args: UpdateCourseArgs): Promise<CanvasCourse>;
deleteCourse(courseId: number): Promise<void>;
listAssignments(courseId: number, includeSubmissions?: boolean): Promise<CanvasAssignment[]>;
getAssignment(courseId: number, assignmentId: number, includeSubmission?: boolean): Promise<CanvasAssignment>;
createAssignment(args: CreateAssignmentArgs): Promise<CanvasAssignment>;
updateAssignment(args: UpdateAssignmentArgs): Promise<CanvasAssignment>;
deleteAssignment(courseId: number, assignmentId: number): Promise<void>;
listAssignmentGroups(courseId: number): Promise<CanvasAssignmentGroup[]>;
getAssignmentGroup(courseId: number, groupId: number): Promise<CanvasAssignmentGroup>;
getSubmissions(courseId: number, assignmentId: number): Promise<CanvasSubmission[]>;
getSubmission(courseId: number, assignmentId: number, userId?: number | 'self'): Promise<CanvasSubmission>;
submitGrade(args: SubmitGradeArgs): Promise<CanvasSubmission>;
submitAssignment(args: SubmitAssignmentArgs): Promise<CanvasAssignmentSubmission>;
listFiles(courseId: number, folderId?: number): Promise<CanvasFile[]>;
getFile(fileId: number): Promise<CanvasFile>;
uploadFile(args: FileUploadArgs): Promise<CanvasFile>;
listFolders(courseId: number): Promise<any[]>;
listPages(courseId: number): Promise<CanvasPage[]>;
getPage(courseId: number, pageUrl: string): Promise<CanvasPage>;
listCalendarEvents(startDate?: string, endDate?: string): Promise<CanvasCalendarEvent[]>;
getUpcomingAssignments(limit?: number): Promise<CanvasAssignment[]>;
listRubrics(courseId: number): Promise<CanvasRubric[]>;
getRubric(courseId: number, rubricId: number): Promise<CanvasRubric>;
getDashboard(): Promise<CanvasDashboard>;
getDashboardCards(): Promise<any[]>;
getSyllabus(courseId: number): Promise<CanvasSyllabus>;
listConversations(): Promise<CanvasConversation[]>;
getConversation(conversationId: number): Promise<CanvasConversation>;
createConversation(recipients: string[], body: string, subject?: string): Promise<CanvasConversation>;
listNotifications(): Promise<CanvasNotification[]>;
listUsers(courseId: number): Promise<CanvasUser[]>;
getEnrollments(courseId: number): Promise<CanvasEnrollment[]>;
enrollUser(args: EnrollUserArgs): Promise<CanvasEnrollment>;
unenrollUser(courseId: number, enrollmentId: number): Promise<void>;
getCourseGrades(courseId: number): Promise<CanvasEnrollment[]>;
getUserGrades(): Promise<any>;
getUserProfile(): Promise<CanvasUserProfile>;
updateUserProfile(profileData: Partial<CanvasUserProfile>): Promise<CanvasUserProfile>;
listStudentCourses(): Promise<CanvasCourse[]>;
listModules(courseId: number): Promise<CanvasModule[]>;
getModule(courseId: number, moduleId: number): Promise<CanvasModule>;
listModuleItems(courseId: number, moduleId: number): Promise<CanvasModuleItem[]>;
getModuleItem(courseId: number, moduleId: number, itemId: number): Promise<CanvasModuleItem>;
markModuleItemComplete(courseId: number, moduleId: number, itemId: number): Promise<void>;
listDiscussionTopics(courseId: number): Promise<CanvasDiscussionTopic[]>;
getDiscussionTopic(courseId: number, topicId: number): Promise<CanvasDiscussionTopic>;
postToDiscussion(courseId: number, topicId: number, message: string): Promise<any>;
listAnnouncements(courseId: string): Promise<CanvasAnnouncement[]>;
listQuizzes(courseId: string): Promise<CanvasQuiz[]>;
getQuiz(courseId: string, quizId: number): Promise<CanvasQuiz>;
createQuiz(courseId: number, quizData: Partial<CanvasQuiz>): Promise<CanvasQuiz>;
updateQuiz(courseId: number, quizId: number, quizData: Partial<CanvasQuiz>): Promise<CanvasQuiz>;
deleteQuiz(courseId: number, quizId: number): Promise<void>;
startQuizAttempt(courseId: number, quizId: number): Promise<any>;
submitQuizAttempt(courseId: number, quizId: number, submissionId: number, answers: any): Promise<any>;
listTokenScopes(accountId: number, groupBy?: string): Promise<CanvasScope[]>;
getAccount(accountId: number): Promise<CanvasAccount>;
listAccountCourses(args: ListAccountCoursesArgs): Promise<CanvasCourse[]>;
listAccountUsers(args: ListAccountUsersArgs): Promise<CanvasUser[]>;
createUser(args: CreateUserArgs): Promise<CanvasUser>;
listSubAccounts(accountId: number): Promise<CanvasAccount[]>;
getAccountReports(accountId: number): Promise<any[]>;
createAccountReport(args: CreateReportArgs): Promise<CanvasAccountReport>;
getAccountReport(accountId: number, reportType: string, reportId: number): Promise<CanvasAccountReport>;
}