MCP server for Google Forms.
npx skills add https://github.com/udecode/google-forms-mcp --skills google-formsThen run /google-forms in Claude Code to complete setup.
git clone https://github.com/udecode/google-forms-mcp.git ~/.claude/mcp/google-forms-mcp
cd ~/.claude/mcp/google-forms-mcp
bun install && bun run build- Enable Google Forms API + Google Drive API at console.cloud.google.com
- Create OAuth 2.0 credentials (Desktop app)
- Get refresh token:
cd ~/.claude/mcp/google-forms-mcp GOOGLE_CLIENT_ID="..." GOOGLE_CLIENT_SECRET="..." bun run token
- Add to
.mcp.json:{ "mcpServers": { "google-forms-mcp": { "command": "bun", "args": ["/Users/YOUR_USERNAME/.claude/mcp/google-forms-mcp/build/index.js"], "env": { "GOOGLE_CLIENT_ID": "...", "GOOGLE_CLIENT_SECRET": "...", "GOOGLE_REFRESH_TOKEN": "..." } } } }
| Tool | Description |
|---|---|
create_form |
Create form |
get_form |
Get form details |
list_forms |
List all forms |
update_form |
Update title/description |
delete_form |
Delete form |
add_section |
Add visual divider (no page break) |
add_page |
Add page break (requires Next button) |
add_text_question |
Add text question |
add_multiple_choice_question |
Add radio/checkbox question |
update_question |
Modify question |
delete_question |
Remove question |
get_form_responses |
Get responses |
All items are added at index 0. The LAST item you add appears FIRST.
For a form with sections, add in reverse:
create_form → update_form
add: last question
add: last section header
...
add: first question
add: first section header ← LAST (appears first)
Options support both formats:
- Simple:
["Option A", "Option B"] - With description:
[{ "label": "Option A", "description": "Details" }]
Set multiSelect: true for checkboxes, omit for radio buttons.
MIT