google-forms-mcp
Manage Google Drive files and folders: create, move, copy, trash, search, share, and manage permissions.
Create, manage, and analyze Google Forms with support for all 11 question types, sections, quiz mode, and response management.
Interact with Google Sheets: create spreadsheets, read, write, and append data, and export as CSV.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@google-forms-mcpCreate a new form titled 'Customer Feedback'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
______ ________ __ __ ______ _______
/ \ | \ | \ / \/ \| \
| ▓▓▓▓▓▓\ | ▓▓▓▓▓▓▓▓ ______ ______ ______ ____ _______ | ▓▓\ / ▓▓ ▓▓▓▓▓▓\ ▓▓▓▓▓▓▓\
| ▓▓ __\▓▓ | ▓▓__ / \ / \| \ \ / \ | ▓▓▓\ / ▓▓▓ ▓▓ \▓▓ ▓▓__/ ▓▓
| ▓▓| \ | ▓▓ \ | ▓▓▓▓▓▓\ ▓▓▓▓▓▓\ ▓▓▓▓▓▓\▓▓▓▓\ ▓▓▓▓▓▓▓ | ▓▓▓▓\ ▓▓▓▓ ▓▓ | ▓▓ ▓▓
| ▓▓ \▓▓▓▓ | ▓▓▓▓▓ | ▓▓ | ▓▓ ▓▓ \▓▓ ▓▓ | ▓▓ | ▓▓\▓▓ \ | ▓▓\▓▓ ▓▓ ▓▓ ▓▓ __| ▓▓▓▓▓▓▓
| ▓▓__| ▓▓ | ▓▓ | ▓▓__/ ▓▓ ▓▓ | ▓▓ | ▓▓ | ▓▓_\▓▓▓▓▓▓\ | ▓▓ \▓▓▓| ▓▓ ▓▓__/ \ ▓▓
\▓▓ ▓▓ | ▓▓ \▓▓ ▓▓ ▓▓ | ▓▓ | ▓▓ | ▓▓ ▓▓ | ▓▓ \▓ | ▓▓\▓▓ ▓▓ ▓▓
\▓▓▓▓▓▓ \▓▓ \▓▓▓▓▓▓ \▓▓ \▓▓ \▓▓ \▓▓\▓▓▓▓▓▓▓ \▓▓ \▓▓ \▓▓▓▓▓▓ \▓▓
Google Forms MCP
Production-grade Model Context Protocol (MCP) server for Google Forms, Drive, and Sheets automation.
Create, manage, and analyze Google Forms through an autonomous AI Planner that works with Claude, ChatGPT, Cursor, VS Code, Windsurf, Cline, Roo Code, and any MCP-compatible client.
✨ Features
🤖 Autonomous AI Planner (plan_form, get_template, validate_execution_plan)
Automatically detects user intent and interviews the user for missing details.
Validates the execution plan to prevent API errors and mutually exclusive field conflicts.
Orchestrates Google Forms tools automatically to build complex forms.
Includes pre-built templates (
Hackathon,Survey,Quiz,RSVP).
📝 Form Management
Create forms with title, description, and quiz mode
Update form metadata and settings (progress bar, email collection, shuffle questions)
Delete / Duplicate / Publish forms
Search for forms in Google Drive
❓ All 11 Question Types Supported
SHORT_ANSWER,PARAGRAPH,MULTIPLE_CHOICE,CHECKBOXES,DROPDOWNFILE_UPLOAD,LINEAR_SCALE,DATE,TIMEMULTIPLE_CHOICE_GRID,CHECKBOX_GRID
📑 Sections & Layout
Add, update, delete sections (page breaks) with conditional navigation
Add images, videos, and text blocks
🧪 Quiz Mode
Enable quiz grading with point values
Set answer keys with correct answers and right/wrong feedback
📊 Response & Analytics Management
Read all form responses (paginated) (
get_responses,get_response)Get aggregated response summary statistics (
get_response_summary)Export responses as CSV or JSON (
export_responses)
📁 Google Drive Integration
Create folders, move/copy/trash files, and search specific forms
Manage permissions and share files with users, groups, or domains
📈 Google Sheets Integration
Create spreadsheets, read/write/append data ranges, and export to CSV
Related MCP server: Google Docs & Drive MCP Server
🚀 Quickstart
1. Google Cloud Setup
Go to Google Cloud Console
Create a new project (or select an existing one)
Go to APIs & Services → Library and enable these APIs:
Google Forms API
Google Drive API
Google Sheets API
Go to APIs & Services → Credentials
Create an OAuth 2.0 Client ID:
Application type: Desktop application
Name:
Google Forms MCP
Note down your Client ID and Client Secret.
2. Get a Refresh Token (generate_token.py)
We provide an interactive, self-troubleshooting token generator helper script right inside the repository:
# Run interactively (will prompt for Client ID and Secret if not set)
python generate_token.py
# Or pass directly via command line arguments
python generate_token.py --client-id "your-client-id" --client-secret "your-client-secret"
# Or pass the downloaded JSON secrets file from GCP
python generate_token.py --file client_secret.jsonThe script will launch your browser, complete authentication, output your GOOGLE_REFRESH_TOKEN, and automatically offer to save it directly into your local .env file!
💡 Token Generator Troubleshooting (generate_token.py)
If you encounter issues generating your refresh token, check the common fixes below:
Error 400 (
redirect_uri_mismatch):Go to Google Cloud Console -> APIs & Services -> Credentials.
Click on your OAuth 2.0 Client ID.
Under Authorized redirect URIs, click + ADD URI and add exactly:
http://localhost:8080/Click Save, wait 30–60 seconds for Google's servers to sync, and re-run
python generate_token.py --port 8080.
Access Blocked (
This app's request is invalid/ Error 403):Go to Google Cloud Console -> APIs & Services -> OAuth consent screen.
If your app publishing status is set to Testing, scroll down to Test users.
Click + ADD USERS and enter the exact Google email address you are logging in with.
No Refresh Token Returned:
Go to Google Account Connections.
Click on
Google Forms MCPand select Remove Access.Re-run
python generate_token.pyto prompt for a fresh offline token.
3. Install & Run
# Using uvx (recommended for instant execution)
uvx google-forms-mcp
# Or install from source locally using uv / pip
git clone https://github.com/your-org/google-forms-mcp.git
cd google-forms-mcp
uv sync
uv run python -m google_forms_mcp
# Or run as a standalone HTTP server (Streamable HTTP transport on port 8000)
export GOOGLE_FORMS_MCP_TRANSPORT="http"
python -m google_forms_mcp4. Configure Your MCP Client
Option A: Running from Local Git Cloned Source (Include "cwd")
If you cloned this repository locally, you must include the "cwd" property so your client locates the project environment (.env) and Python executable cleanly:
{
"mcpServers": {
"google-forms": {
"command": "python",
"args": ["-m", "google_forms_mcp"],
"cwd": "C:/absolute/path/to/google-forms-mcp",
"env": {
"GOOGLE_CLIENT_ID": "your-client-id",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"GOOGLE_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}Option B: Running via PyPI (uvx)
If running globally without cloning:
{
"mcpServers": {
"google-forms": {
"command": "uvx",
"args": ["google-forms-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"GOOGLE_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}Option C: Connecting via Custom Connector (Claude Web / Remote HTTP)
If running the server in http transport mode on http://127.0.0.1:8000/mcp:
Open your MCP Client connector settings.
Enter Remote MCP server URL:
http://127.0.0.1:8000/mcp(Or your public HTTPS tunnel URL if connecting from cloud web apps likeclaude.ai).Leave OAuth settings blank if your
.envalready containsGOOGLE_REFRESH_TOKEN.
Option D: Connecting with Claude Code CLI (claude mcp add)
If you use Anthropic's Claude Code command-line agent (claude), you can register the MCP server directly using the terminal or by creating a workspace .mcp.json:
# Register globally (`user` scope) via uvx:
claude mcp add google-forms -s user -- uvx google-forms-mcp
# OR register globally from local Git repo Python environment:
claude mcp add google-forms -s user -- C:/path/to/google-forms-mcp/.venv/Scripts/python.exe -m google_forms_mcpNote: If credentials are not saved in a root .env file, pass them via environment variables when running Claude Code or define them directly inside ~/.claude.json under "mcpServers".
Option E: Connecting via GUI Settings (ChatGPT Desktop / Cursor / Windsurf GUI)
When configuring the server using graphical settings panels (like in ChatGPT Desktop Developer Mode or IDE GUI forms):
⚠️ IMPORTANT: Do not put arguments (
-m google_forms_mcp) inside the Command to launch box!Configure the fields exactly as follows:
Command to launch:
s:/google-forms-mcp/.venv/Scripts/python.exe(Oruvxif running globally)Arguments: Click + Add argument twice:
-mgoogle_forms_mcp(If usinguvx, add single argumentgoogle-forms-mcp)
Working directory:
s:/google-forms-mcpEnvironment variables: Add your 3 keys (
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,GOOGLE_REFRESH_TOKEN).
🔧 Available Tools (44 Tools Total)
AI Planner & Prompts (3 tools)
Tool | Description |
| Interview user and autonomously outline form questions |
| Get pre-built JSON form templates ( |
| Validate question sequence and rules before API execution |
Forms (19 tools)
Tool | Description |
| Create a new Google Form |
| Retrieve complete form structure |
| Update title and description |
| Delete (trash or permanent) |
| Copy an existing form |
| Publish or stop accepting responses |
| Add any of the 11 question types |
| Modify an existing question |
| Remove a question |
| Reorder a question |
| Duplicate an existing question |
| Branch based on choice option |
| Add a section (page break) |
| Update section title/description |
| Remove a section |
| Set section navigation action |
| Update form settings (quiz, progress bar, etc.) |
| Add an image or video |
| Add a text block |
Responses & Analytics (4 tools)
Tool | Description |
| List all responses (paginated) |
| Get a single response by ID |
| Aggregated statistics across all questions |
| Export as CSV or JSON |
Drive (12 tools)
Tool | Description |
| Create a Drive folder |
| Search specifically for Google Forms |
| Search for any files |
| Move to another folder |
| Copy a file |
| Move to trash |
| Restore from trash |
| Get complete file metadata |
| Share with users/groups |
| Transfer file ownership |
| List sharing permissions |
| Remove a permission |
Sheets (7 tools)
Tool | Description |
| Create a new spreadsheet |
| Get spreadsheet metadata |
| Read from a range |
| Write to a range |
| Append rows |
| Clear data from a range |
| Export as CSV |
⚙️ Configuration
Environment Variable | Description | Default |
| OAuth 2.0 Client ID | Required |
| OAuth 2.0 Client Secret | Required |
| Pre-obtained Refresh Token | Required |
| Path to client secrets JSON | — |
| Transport mode: |
|
| HTTP port (when transport=http) |
|
| Log level |
|
| Token storage path |
|
⚠️ Known Limitations
These are Google Forms API limitations, not limitations of this MCP:
Feature | Status |
Theme customization (colors, fonts, headers) | ❌ Not supported by API |
Delete responses | ❌ Not supported by API |
Link Form to Sheets | ❌ Not supported via API (requires UI/Apps Script) |
Settings | ✅ Now fully supported |
🤝 Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
# Clone the repo
git clone https://github.com/your-org/google-forms-mcp.git
cd google-forms-mcp
# Install dependencies
uv sync --dev
# Run tests
uv run pytest
# Lint & format
uv run ruff check src/ tests/
uv run ruff format src/ tests/📄 License
MIT License — see LICENSE for details.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceEnables interaction with Google Forms API to create forms, add questions, and retrieve responses through natural language commands.Last updated3
- Alicense-qualityDmaintenanceEnables comprehensive interaction with Google Docs and Google Drive through AI assistants, supporting document reading/writing, rich formatting, table/image insertion, comment management, and complete file/folder operations with secure OAuth authentication.Last updated11MIT
- Alicense-qualityDmaintenanceEnables creation and management of Google Forms with support for all 12 question types, response collection, CSV export, and form publishing through OAuth-authenticated API access.Last updated2MIT

Formswrite MCPofficial
Alicense-qualityCmaintenanceEnables LLMs to convert documents to Google Forms, edit questions, list and publish forms, and run AI form assistant tools through the Formswrite API.Last updatedMIT
Related MCP Connectors
Give AI agents access to form submissions — read, search, update, and process file attachments.
Connect AI assistants to Dashform — build and manage AI-powered forms, funnels, quizzes.
Create AI surveys with dynamic follow-up probing directly from your AI assistant.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mr-sanjai-offl/google-forms-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server