Skip to main content
Glama
Classroom Suite MCP

Classroom Suite MCP

by anasdevai

πŸŽ“ Classroom Suite MCP

A unified MCP (Model Context Protocol) server for Google Workspace education tools - seamlessly integrate Google Classroom, Google Drive, and Google Docs with AI assistants like Claude.

PyPI version License: MIT Python 3.10+

✨ Features

Service

Tools

Description

πŸ“š Classroom

6

Manage courses, assignments, and submissions

πŸ“ Drive

7

Create, upload, download, and share files

πŸ“ Docs

4

Create, read, edit documents and export to PDF

17 tools total - Everything you need for education automation!

Related MCP server: mcp-google-gdrive

πŸš€ Installation

uvx classroom-suite-mcp

Using pip

pip install classroom-suite-mcp

From Source

git clone https://github.com/anasdevai/classroom-suite-mcp.git
cd classroom-suite-mcp
pip install -e .

πŸ” Google Cloud Setup

Before using this server, you need to set up Google Cloud credentials:

1. Create a Google Cloud Project

  1. Go to Google Cloud Console

  2. Create a new project or select an existing one

  3. Enable the following APIs:

    • Google Classroom API

    • Google Drive API

    • Google Docs API

2. Create OAuth Credentials

  1. Go to APIs & Services > Credentials

  2. Click Create Credentials > OAuth client ID

  3. Select Desktop app as the application type

  4. Download the credentials as credentials.json

3. Configure the Server

Place credentials.json in your working directory, or set the path:

export GOOGLE_CREDENTIALS_PATH=/path/to/credentials.json

On first run, a browser window will open for OAuth authentication.

βš™οΈ Configuration

Environment Variables

Variable

Default

Description

GOOGLE_CREDENTIALS_PATH

credentials.json

Path to OAuth credentials file

GOOGLE_TOKEN_PATH

token.json

Path to store auth token

Claude Desktop Configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "classroom-suite": {
      "command": "uvx",
      "args": ["classroom-suite-mcp"]
    }
  }
}

Or with pip installation:

{
  "mcpServers": {
    "classroom-suite": {
      "command": "classroom-suite-mcp"
    }
  }
}

πŸ› οΈ Available Tools

Google Classroom (6 tools)

Tool

Description

list_courses

List all enrolled courses

get_course

Get course details

list_assignments

List course assignments

get_assignment

Get assignment details

list_submissions

List assignment submissions

submit_assignment

Submit work with attachments

Google Drive (7 tools)

Tool

Description

list_files

List files and folders

search_files

Search by name or content

create_folder

Create a new folder

upload_file

Upload a file

download_file

Download a file

share_file

Share with users or publicly

delete_file

Move to trash or delete

Google Docs (4 tools)

Tool

Description

create_doc

Create a new document

read_doc

Read document content

update_doc

Append, prepend, or replace text

export_pdf

Export as PDF

πŸ“– Usage Examples

With Claude

You: List my Google Classroom courses

Claude: I'll list your courses using the classroom-suite-mcp tools.
[Uses list_courses tool]

Here are your courses:
1. Introduction to Computer Science (ACTIVE)
2. Data Structures and Algorithms (ACTIVE)
...

Common Workflows

Check assignments and submit:

1. list_courses β†’ Get course ID
2. list_assignments β†’ Find pending assignment
3. create_doc β†’ Create solution document
4. submit_assignment β†’ Submit with Drive file

Organize course materials:

1. create_folder β†’ Create organized folder
2. upload_file β†’ Upload materials
3. share_file β†’ Share with classmates

πŸ§ͺ Development

Running Locally

# Clone the repository
git clone https://github.com/anasdevai/classroom-suite-mcp.git
cd classroom-suite-mcp

# Install dependencies
pip install -e .

# Run with stdio transport (for MCP clients)
classroom-suite-mcp

# Run with HTTP transport (for testing)
classroom-suite-mcp --transport http --port 8000

Testing with MCP Inspector

npx @anthropic-ai/mcp-inspector classroom-suite-mcp

πŸ“„ License

MIT License - see LICENSE for details.

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“¬ Support


Made with ❀️ for educators and students

Available Tools

17 tools
create_docA

Create a new Google Doc.

Args: title: Document title content: Optional initial text content folder_id: Folder to create the doc in

Returns: Document with id, title, and link

Inputs: title (required), content, folder_id. Returns: object

create_folderA

Create a new folder in Google Drive.

Args: name: Name of the folder parent_id: ID of parent folder (None for root)

Returns: Created folder with id and link

Inputs: name (required), parent_id. Returns: object

delete_fileA

Delete a file (move to trash or permanent).

Args: file_id: ID of the file permanent: Permanently delete if True

Returns: Deletion confirmation

Inputs: file_id (required), permanent. Returns: object

download_fileA

Download a file from Google Drive.

Args: file_id: ID of the file as_base64: Return content as base64 (for binary)

Returns: File with id, name, and content

Inputs: file_id (required), as_base64. Returns: object

export_pdfA

Export a Google Doc as PDF.

Args: document_id: ID of the document

Returns: PDF as base64 with filename and size

Inputs: document_id (required). Returns: object

get_assignmentA

Get detailed information about a specific assignment.

Args: course_id: The ID of the course assignment_id: The ID of the assignment

Returns: Assignment details including description, materials, and due date

Inputs: course_id (required), assignment_id (required). Returns: object

get_courseA

Get detailed information about a specific course.

Args: course_id: The ID of the course to retrieve

Returns: Course details including name, description, and links

Inputs: course_id (required). Returns: object

list_assignmentsA

List all assignments for a specific course.

Args: course_id: The ID of the course page_size: Maximum number of assignments to return

Returns: List of assignments with id, title, due date, and points

Inputs: course_id (required), page_size. Returns: result

list_coursesA

List all courses the authenticated user is enrolled in.

Args: page_size: Maximum number of courses to return (default: 20) course_states: Comma-separated states: ACTIVE, ARCHIVED, PROVISIONED, DECLINED, SUSPENDED

Returns: List of courses with id, name, section, and state

Inputs: page_size, course_states. Returns: result

list_filesB

List files and folders in Google Drive.

Args: folder_id: ID of folder to list (None for all files) page_size: Maximum number of files to return file_type: Filter by MIME type (e.g., "application/pdf")

Returns: List of files with id, name, type, and links

Inputs: file_type, folder_id, page_size. Returns: result

list_submissionsA

List all submissions for an assignment.

Args: course_id: The ID of the course assignment_id: The ID of the assignment page_size: Maximum number of submissions to return states: Comma-separated states: NEW, CREATED, TURNED_IN, RETURNED

Returns: List of submissions with state, grade, and links

Inputs: course_id (required), assignment_id (required), states, page_size. Returns: result

read_docA

Read the content of a Google Doc.

Args: document_id: ID of the document

Returns: Document with id, title, and text content

Inputs: document_id (required). Returns: object

search_filesC

Search for files by name or content.

Args: query: Search query string page_size: Maximum number of results

Returns: List of matching files

Inputs: query (required), page_size. Returns: result

share_fileA

Share a file with users or make it public.

Args: file_id: ID of the file to share email: Email address to share with role: Permission level (reader, writer, commenter) anyone: Make accessible to anyone with link

Returns: File link after sharing

Inputs: file_id (required), role, email, anyone. Returns: object

submit_assignmentA

Submit work to an assignment.

Args: course_id: The ID of the course assignment_id: The ID of the assignment
submission_id: The ID of your student submission drive_file_ids: Comma-separated Google Drive file IDs to attach link_urls: Comma-separated URLs to attach as links

Returns: Updated submission with state and timestamp

Inputs: course_id (required), assignment_id (required), submission_id (required), link_urls, +1 more. Returns: object

update_docA

Update content in a Google Doc.

Args: document_id: ID of the document text: Text to add mode: "append" (end), "prepend" (start), or "replace"

Returns: Update confirmation

Inputs: text (required), document_id (required), mode. Returns: object

upload_fileA

Upload a file to Google Drive.

Args: name: Filename content: File content (text or base64 for binary) mime_type: MIME type of the file parent_id: Parent folder ID is_base64: True if content is base64-encoded

Returns: Uploaded file with id and link

Inputs: name (required), content (required), is_base64, mime_type, +1 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 17 tools

    Disambiguation5/5

    Each tool targets a distinct resource-action pair: courses, assignments, submissions, Drive files, and Docs all have clearly separated tools. Even similar tools like list_files and search_files are disambiguated by browsing vs. searching.

    Naming Consistency5/5

    All tools follow a consistent snake_case verb_noun pattern (list_courses, get_assignment, create_folder, export_pdf). There are no mixed naming conventions or vague verbs.

    Tool Count4/5

    17 tools is slightly above the ideal range, but the server covers two related domains: classroom workflows and Google Drive/Docs. The count feels heavy but still scoped; each tool has a clear role.

    Completeness4/5

    The set covers core student workflows well: viewing courses and assignments, listing and submitting work, and managing Drive files and Docs. Notable gaps exist on the teaching sideβ€”no assignment creation, grading, or return submissionβ€”and document deletion is absent, but these may be outside the intended scope.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers