Coursebox MCP by usefulapi
Create courses, sections and lessons, fill lessons with AI, and publish courses in Coursebox.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"coursebox": {
"url": "https://coursebox.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://coursebox.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (12)
🟢coursebox_get_course_structure(course_id)
Read the sections (blocks) of a course, each with its lessons (activities), in order. Use it to find section and lesson ids. API: GET /api/Blocks with a filter on courseId.
입력 스키마
{
"type": "object",
"properties": {
"course_id": {
"type": "string",
"minLength": 1,
"description": "Course id (the id returned by Coursebox)."
}
},
"required": [
"course_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡coursebox_create_course(name, description, language, passGrade, gradingMethod, ...)
WRITE. Create an empty draft course and return it with its id. The key's user becomes owner and admin. Counts toward the plan's course limit (over the limit the call fails with 403). API: POST /api/Courses/createCourse.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Course title."
},
"description": {
"description": "Short description shown on the course page.",
"type": "string"
},
"language": {
"description": "Course language code, e.g. en.",
"type": "string"
},
"passGrade": {
"description": "Pass mark in percent.",
"type": "number",
"minimum": 0,
"maximum": 100
},
"gradingMethod": {
"description": "How completion is graded, e.g. completion.",
"type": "string"
},
"points": {
"description": "Points awarded on completion.",
"type": "number"
},
"searchable": {
"description": "Show the course in the catalogue once published.",
"type": "boolean"
},
"restartEnabled": {
"description": "Let learners restart the course.",
"type": "boolean"
},
"enrollmentEmail": {
"description": "Email learners when they are enrolled.",
"type": "boolean"
},
"avatarUrl": {
"description": "Public URL of the course image.",
"type": "string",
"format": "uri"
},
"backgroundUrl": {
"description": "Public URL of the banner image.",
"type": "string",
"format": "uri"
},
"code": {
"description": "Internal course code.",
"type": "string"
},
"skills": {
"description": "Skills shown on the landing page.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡coursebox_update_course(course_id, name, description, language, passGrade, ...)
WRITE. Change course details. Only the fields you send change. Editing a published course goes live at once. API: POST /api/Courses/updateAttributes.
입력 스키마
{
"type": "object",
"properties": {
"course_id": {
"type": "string",
"minLength": 1,
"description": "Course id (the id returned by Coursebox)."
},
"name": {
"description": "Course title.",
"type": "string",
"minLength": 1
},
"description": {
"description": "Short description shown on the course page.",
"type": "string"
},
"language": {
"description": "Course language code, e.g. en.",
"type": "string"
},
"passGrade": {
"description": "Pass mark in percent.",
"type": "number",
"minimum": 0,
"maximum": 100
},
"gradingMethod": {
"description": "How completion is graded, e.g. completion.",
"type": "string"
},
"points": {
"description": "Points awarded on completion.",
"type": "number"
},
"searchable": {
"description": "Show the course in the catalogue once published.",
"type": "boolean"
},
"restartEnabled": {
"description": "Let learners restart the course.",
"type": "boolean"
},
"enrollmentEmail": {
"description": "Email learners when they are enrolled.",
"type": "boolean"
},
"avatarUrl": {
"description": "Public URL of the course image.",
"type": "string",
"format": "uri"
},
"backgroundUrl": {
"description": "Public URL of the banner image.",
"type": "string",
"format": "uri"
},
"code": {
"description": "Internal course code.",
"type": "string"
},
"skills": {
"description": "Skills shown on the landing page.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"course_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡coursebox_create_section(course_id, name, position)
WRITE. Add a section (module) to a course and return its id. Create sections in order: position 0, 1, 2. API: POST /api/Courses/{courseId}/blocks.
입력 스키마
{
"type": "object",
"properties": {
"course_id": {
"type": "string",
"minLength": 1,
"description": "Course id (the id returned by Coursebox)."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Section title."
},
"position": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Place in the course, starting at 0."
}
},
"required": [
"course_id",
"name",
"position"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡coursebox_rename_section(section_id, name)
WRITE. Rename a section (module). API: PATCH /api/Blocks/{sectionId}.
입력 스키마
{
"type": "object",
"properties": {
"section_id": {
"type": "string",
"minLength": 1,
"description": "Section id (the id returned by Coursebox)."
},
"name": {
"type": "string",
"minLength": 1,
"description": "New section title."
}
},
"required": [
"section_id",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴coursebox_delete_section(section_id)
DESTRUCTIVE. Delete a section and all of its lessons. This cannot be undone. API: DELETE /api/Blocks/{sectionId}.
입력 스키마
{
"type": "object",
"properties": {
"section_id": {
"type": "string",
"minLength": 1,
"description": "Section id (the id returned by Coursebox)."
}
},
"required": [
"section_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡coursebox_create_lesson(section_id, name)
WRITE. Add an empty lesson to the end of a section and return its id. Fill it afterwards with coursebox_edit_lesson_with_ai. API: POST /api/Blocks/createActivity.
입력 스키마
{
"type": "object",
"properties": {
"section_id": {
"type": "string",
"minLength": 1,
"description": "Section id (the id returned by Coursebox)."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Lesson title."
}
},
"required": [
"section_id",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡coursebox_move_lesson(section_id, lesson_id, position)
WRITE. Move a lesson to a position inside its section (0 = first). API: POST /api/Blocks/{sectionId}/activity-position.
입력 스키마
{
"type": "object",
"properties": {
"section_id": {
"type": "string",
"minLength": 1,
"description": "Section id that holds the lesson (the id returned by Coursebox)."
},
"lesson_id": {
"type": "string",
"minLength": 1,
"description": "Lesson id (the id returned by Coursebox)."
},
"position": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "New position, 0 = first."
}
},
"required": [
"section_id",
"lesson_id",
"position"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴coursebox_delete_lesson(lesson_id)
DESTRUCTIVE. Delete a lesson with its content, quiz and assignment. This cannot be undone. API: POST /api/Activities/deleteActivity.
입력 스키마
{
"type": "object",
"properties": {
"lesson_id": {
"type": "string",
"minLength": 1,
"description": "Lesson id (the id returned by Coursebox)."
}
},
"required": [
"lesson_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴coursebox_edit_lesson_with_ai(lesson_id, message, deep_edit)
WRITE (AI, not idempotent). Fill or change ONE lesson from a plain-language instruction. Coursebox's own AI writes text, layouts, images, video, translations, quizzes and assignments, and saves them. Send one lesson per call and put any exact text or exact quiz questions in the message. Check assistantMessage: the AI may ask a question. A call can take up to 5 minutes. Limit: 30 requests per minute per user. API: POST /api/Activities/editPageContentAgentic.
입력 스키마
{
"type": "object",
"properties": {
"lesson_id": {
"type": "string",
"minLength": 1,
"description": "Lesson id (the id returned by Coursebox)."
},
"message": {
"type": "string",
"minLength": 1,
"description": "The instruction in plain language, at most 8 KB (UTF-8 bytes)."
},
"deep_edit": {
"description": "true (default): the AI may take up to 30 steps. false: a quicker, lighter pass.",
"type": "boolean"
}
},
"required": [
"lesson_id",
"message"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡coursebox_publish_course(course_id, join_status)
WRITE. Publish a draft course. join_status "public" lets anyone on the portal join. "private" lets learners join only when enrolled or invited. Edits after publishing go live at once. Coursebox emails the course owner a confirmation. API: POST /api/Courses/publish.
입력 스키마
{
"type": "object",
"properties": {
"course_id": {
"type": "string",
"minLength": 1,
"description": "Course id (the id returned by Coursebox)."
},
"join_status": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Who can join."
}
},
"required": [
"course_id",
"join_status"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡coursebox_unpublish_course(course_id)
WRITE. Return a published course to draft, so learners cannot see it. API: POST /api/Courses/unpublish.
입력 스키마
{
"type": "object",
"properties": {
"course_id": {
"type": "string",
"minLength": 1,
"description": "Course id (the id returned by Coursebox)."
}
},
"required": [
"course_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거