google-forms

Create and manage Google Forms programmatically via MCP. Use when: (1) creating survey forms, (2) adding questions/sections to forms, (3) getting form responses, (4) converting AskUserQuestion to shareable forms. Covers setup, all tools, item ordering, and API limitations.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "google-forms" with this command: npx skills add udecode/google-forms-mcp/udecode-google-forms-mcp-google-forms

Google Forms MCP

Setup

  1. Enable Google Forms API + Google Drive API at console.cloud.google.com
  2. Create OAuth 2.0 credentials (Desktop app type)
  3. Get refresh token:
    cd ~/.claude/mcp/google-forms-mcp
    bun install && bun run build
    GOOGLE_CLIENT_ID="..." GOOGLE_CLIENT_SECRET="..." bun run token
    
  4. Add to .mcp.json (use full path, not ~):
    {
      "mcpServers": {
        "google-forms-mcp": {
          "command": "bun",
          "args": ["/Users/USERNAME/.claude/mcp/google-forms-mcp/build/index.js"],
          "env": {
            "GOOGLE_CLIENT_ID": "...",
            "GOOGLE_CLIENT_SECRET": "...",
            "GOOGLE_REFRESH_TOKEN": "..."
          }
        }
      }
    }
    
  5. Run /mcp reset to load

Tools

ToolDescription
create_formCreate form (returns formId)
update_formUpdate title/description
get_formGet form structure
list_formsList all forms
delete_formDelete form permanently
add_sectionVisual divider (no page break)
add_pagePage break (requires Next button)
add_text_questionFree text input
add_multiple_choice_questionRadio or checkbox
update_questionModify existing question
delete_questionRemove question by index
get_form_responsesGet submitted responses

Item Ordering (CRITICAL)

All items are added at index 0. The LAST item you add appears FIRST.

For a multi-section form, add in reverse order:

1. create_form → update_form (description)
2. Additional Notes (last item)
3. Last section questions (e.g., 4.2, 4.1)
4. Last section header (Section 4)
5. Previous section questions (e.g., 3.4, 3.3, 3.2, 3.1)
6. Previous section header (Section 3)
7. ... continue for all sections ...
8. First section questions (e.g., 1.3, 1.2, 1.1)
9. First section header (Section 1) ← ADD LAST, APPEARS FIRST

Multiple Choice Options

Two formats supported:

// Simple strings
options: ["Option A", "Option B", "Option C"]

// With descriptions (renders as "Label – Description")
options: [
  { label: "Option A", description: "Details about A" },
  { label: "Option B", description: "Details about B" }
]

Parameters:

  • includeOther: true - Adds "Other" with text field
  • multiSelect: true - Checkboxes (multi-select)
  • multiSelect: false - Radio buttons (single choice, default)

API Limitations

ErrorCauseSolution
Only info.title can be set when creating a formCan't set description on createUse update_form after create_form
Displayed text cannot contain newlinesOptions can't have \nUse " – " (en-dash) to separate label from description
Cannot set option.value when isOther is trueOther option can't have valueFixed in MCP - just use includeOther: true

Section vs Page

  • add_section - Visual divider only, stays on same page (uses textItem)
  • add_page - Creates page break, user clicks "Next" (uses pageBreakItem)

For single-page surveys, always use add_section.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

code-simplicity-reviewer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

vercel-react-best-practices

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

brainstorming

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

frontend-design-frontend-design

No summary provided by upstream source.

Repository SourceNeeds Review