MCP Tools Reference: classroommcp.googleapis.com

Tool: get_course_work

Retrieves full instructions, materials, learning goals, and settings (e.g. points, assignees) for one or more coursework items in a course by ID. Use list_course_work_summaries to discover coursework items and retrieve their IDs.

The following code sample shows how to use curl to call the get_course_work MCP tool.

Curl Request
curl --location 'https://classroommcp.googleapis.com/mcp/v1' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--data '{
  "method": "tools/call",
  "params": {
    "name": "get_course_work",
    "arguments": {
      // Provide these details according to the MCP tool specification.
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}'

Input Schema

Request to get coursework details.

GetCourseWorkRequest

JSON representation
{
  "courseId": string,
  "courseWorkIds": [
    string
  ],
  "timeZone": string
}
Fields
courseId

string

Required. Identifier of the course.

courseWorkIds[]

string

Required. Identifiers of the coursework items. At most 50 IDs per request.

timeZone

string

Required. The user's IANA timezone (e.g. "America/Los_Angeles"). Dates in this request are interpreted in it and dates in the response are formatted in it, matching what the user sees in Classroom.

Output Schema

Response containing coursework details.

GetCourseWorkResponse

JSON representation
{
  "courseWork": [
    {
      object (CourseWork)
    }
  ]
}
Fields
courseWork[]

object (CourseWork)

The list of retrieved course work items.

CourseWork

JSON representation
{
  "id": string,
  "courseWorkType": enum (Type),
  "choices": [
    string
  ],
  "assigneeIds": [
    string
  ],
  "materials": [
    {
      object (Material)
    }
  ],
  "publishDate": string,
  "state": enum (State),
  "learningGoals": [
    {
      object (LearningGoal)
    }
  ],

  "title": string

  "topicId": string

  "topicTitle": string

  "instructions": string

  "maxPoints": number

  "scheduleDate": string

  "dueDate": string
}
Fields
id

string

Identifier. Identifier for the course work.

courseWorkType

enum (Type)

Type of course work.

choices[]

string

Answer choices. Only set for MULTIPLE_CHOICE_QUESTION.

assigneeIds[]

string

List of student IDs this work is assigned to (unset means all students).

materials[]

object (Material)

Materials attached to this coursework item.

publishDate

string

Output only. Date the course work was published (YYYY-MM-DD).

state

enum (State)

Output only. State of the course work item.

learningGoals[]

object (LearningGoal)

Learning goals attached to this coursework item.

title

string

Title of the course work.

topicId

string

Identifier of the topic this course work belongs to (if any).

topicTitle

string

Output only. Title of the topic this course work belongs to. Only returned by get_course_work, and omitted if it couldn't be looked up.

instructions

string

Instructions for the coursework.

maxPoints

number

Maximum points achievable for this work, as a non-negative whole number. Not allowed for MATERIAL.

scheduleDate

string

Date the course work is scheduled to be published (YYYY-MM-DD). Time defaults to 8am in the user's timezone and is editable in the UI.

dueDate

string

Due date of the course work (YYYY-MM-DD). Time defaults to 11:59pm and is editable in the UI. Not allowed for MATERIAL.

Material

JSON representation
{
  "id": string,

  "sharedDriveFile": {
    object (SharedDriveFile)
  },
  "youtubeVideo": {
    object (YouTubeVideo)
  },
  "link": {
    object (Link)
  },
  "form": {
    object (Form)
  },
  "notebook": {
    object (GeminiNotebook)
  }
}
Fields
id

string

Output only. Identifier of the material. Use it to remove the material with UpdateCourseWorkRequest.removeMaterialIds.

Union field content. The attachment content. content can be only one of the following:
sharedDriveFile

object (SharedDriveFile)

Google Drive file attachment.

youtubeVideo

object (YouTubeVideo)

YouTube video attachment.

link

object (Link)

URL link attachment.

form

object (Form)

Google Forms attachment.

notebook

object (GeminiNotebook)

Gemini Notebook attachment.

SharedDriveFile

JSON representation
{
  "file": {
    object (DriveFile)
  },
  "shareMode": enum (ShareMode)
}
Fields
file

object (DriveFile)

Drive file details.

shareMode

enum (ShareMode)

Required. How students get the file: VIEW (read only), EDIT (everyone edits the same file), or COPY (each student gets their own copy).

DriveFile

JSON representation
{
  "id": string,
  "title": string,
  "url": string
}
Fields
id

string

Required. Identifier of the Drive file.

title

string

Output only. Title of the Drive file.

url

string

Output only. URL of the Drive file.

YouTubeVideo

JSON representation
{
  "id": string,
  "title": string
}
Fields
id

string

Required. YouTube video ID.

title

string

Output only. Title of the YouTube video.

JSON representation
{
  "url": string,
  "title": string
}
Fields
url

string

Required. URL of the link.

title

string

Output only. Title of the link.

Form

JSON representation
{
  "formUrl": string,
  "title": string,
  "responseUrl": string
}
Fields
formUrl

string

Required. URL of the form.

title

string

Output only. Title of the form.

responseUrl

string

Output only. URL of the form response. Only set if responses have been recorded and only when the requesting user is an editor of the form.

GeminiNotebook

JSON representation
{
  "id": string,
  "title": string
}
Fields
id

string

Required. Identifier of the Notebook.

title

string

Title of the Notebook.

LearningGoal

JSON representation
{
  "id": string,
  "type": enum (Type),
  "standardCode": string,
  "title": string,
  "documentTitle": string
}
Fields
id

string

Output only. ID of the learning goal. To attach a standard, use an id from search_course_standards (not standardCode).

type

enum (Type)

Output only. The type of learning goal.

standardCode

string

Output only. Standard code (e.g. "NY-2.NBT.4"). Only populated for standards.

title

string

Output only. Statement description for standards, or human-readable title for skills.

documentTitle

string

Output only. Curriculum document name. Only populated for standards.

Type

Type of course work.

Enums
TYPE_UNSPECIFIED Unspecified type.
ASSIGNMENT Standard coursework assignment.
SHORT_ANSWER_QUESTION Short answer question coursework.
MULTIPLE_CHOICE_QUESTION Multiple choice question coursework.
MATERIAL Material coursework.

ShareMode

Sharing settings for the Drive file.

Enums
SHARE_MODE_UNSPECIFIED Unspecified sharing mode.
VIEW Students can view the shared file.
EDIT Students can edit the shared file.
COPY Students get a personal copy of the shared file.

State

States of a course work item.

Enums
STATE_UNSPECIFIED Unspecified state.
PUBLISHED Course work is published and visible to students.
DRAFT Course work is a draft.

Type

The type of learning goal.

Enums
TYPE_UNSPECIFIED Unspecified learning goal type.
STANDARD A learning standard from an academic curriculum.
SKILL A skill representing an educational concept or competency. Only a teacher can add or remove skills, in Classroom.

Tool Annotations

Tool annotations are sent to MCP clients to describe the basic risk of a given tool. Most clients treat these hints as untrusted, but they can be used to decide when a confirmation prompt might be sent to a user.

Along with the title string, the following boolean hints are defined as follows:

  • readOnlyHint: If true, the tool doesn't modify its environment. Default: false.
  • destructiveHint: If true, then the tool can perform destructive actions. If false, then the tool can only perform additive actions. Default: true.
  • idempotentHint: If true, then calling the tool repeatedly with the same arguments will have no additional effect on its environment. Default: false.
  • openWorldHint: If true, then the tool can interact with an 'open world' of external entities. If false, then the tool can only interact with internal entities. For example, a web search tool would be open world, while a memory tool would not be open world.

Destructive Hint: ❌ | Idempotent Hint: ✅ | Read Only Hint: ✅ | Open World Hint: ❌

Authorization Scopes

Requires one of the following OAuth scopes:

  • https://www.googleapis.com/auth/classroom.coursework.students
  • https://www.googleapis.com/auth/classroom.coursework.students.readonly
  • https://www.googleapis.com/auth/classroom.coursework.me
  • https://www.googleapis.com/auth/classroom.coursework.me.readonly
  • https://www.googleapis.com/auth/classroom.topics
  • https://www.googleapis.com/auth/classroom.topics.readonly