mcpField
G
google-forms

google-forms

github.com/udecodeProductivity135 installsUpdated 39w ago
Repository

About google-forms

google-forms is a skill for managing Google Forms through MCP tools. It supports creating and editing forms and questions, retrieving form details and responses, and handling sections, pages, and choice options.

Key features

  1. 01Create, list, update, and delete forms
  2. 02Add sections and page breaks
  3. 03Create and modify text and choice questions
  4. 04Retrieve form structure and responses
  5. 05Configure multiple-choice options

Use cases

  1. 01Building a survey with multiple sections
  2. 02Updating questions in an existing form
  3. 03Reviewing submitted form responses
  4. 04Organizing question choices with an Other option

MCP support

It provides MCP tools for Google Forms operations, including form and question management and response retrieval. Setup instructions describe configuring it as an MCP server in `.mcp.json`.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/udecode/google-forms-mcp --skill google-forms

After installing, type/google-formsin Claude Code to confirm it loaded.

Details

From the project README

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.

Comments

Markdown supported