UNPKG

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
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>; }