# io.github.claude-book/mcp-server-google-forms (npm · mcp-server-google-forms)

Cria, edita e publica Google Forms a partir do Claude: quizzes, seções e leitura de respostas.

- Trust score: 65/100 (medium)
- Change this week: +40
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `mcp-server-google-forms`: 65/100 (this document), [markdown](https://verifymcp.io/servers/claude-book-mcp-server-google-forms/mcp-server-google-forms.md), [page](https://verifymcp.io/servers/claude-book-mcp-server-google-forms/mcp-server-google-forms)

## Channel facts

- Registry: `npm`
- Package: `mcp-server-google-forms`
- Version: `0.5.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 85/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (143 of 161), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (143 of 161), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 7 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 76/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1867 tokens (~124/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add claude-book-mcp-server-google-forms -- npx -y mcp-server-google-forms
```

### Codex

```bash
codex mcp add claude-book-mcp-server-google-forms -- npx -y mcp-server-google-forms
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "claude-book-mcp-server-google-forms": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-server-google-forms"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add claude-book-mcp-server-google-forms --command npx --arg -y --arg mcp-server-google-forms
```

### Hermes

```yaml
mcp_servers:
  claude-book-mcp-server-google-forms:
    command: "npx"
    args: ["-y", "mcp-server-google-forms"]
```

### Other

```json
{
  "mcpServers": {
    "claude-book-mcp-server-google-forms": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-server-google-forms"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 65, +45)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT

### 2026-08-01 (score 20, −7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-31 (score 27, +3)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-30 (score 24, −21)

- [functional regression] Tool coverage: 100 → unverified

### 2026-07-28 (score 45, +20)

- [functional regression] Security disclosure: unverified → fail
- [functional regression] Dependency health: partial → unverified
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: unverified
- [functional] First check of Schema quality: fail

### 2026-07-27 (score 25)

First indexed and scored.

## MCP tools (15)

### `create_form` (~125 tokens)

Criar formulário

Cria um novo Google Form vazio e retorna o ID, o link de edição e o link de respostas. Por padrão o Google cria o formulário JÁ PUBLICADO; use unpublished=true para criá-lo como rascunho. A resposta informa o estado real de publicação.

Input parameters:

- `documentTitle` (string): Nome do arquivo no Drive (opcional)
- `title` (string, required): Título do formulário, visível para quem responde
- `unpublished` (boolean): true para criar como rascunho (ninguém responde até set_publish). Padrão: publicado.

### `set_publish` (~72 tokens)

Publicar formulário

Publica ou despublica um formulário. Formulários criados via API nascem despublicados e não aceitam respostas até serem publicados.

Input parameters:

- `formId` (string, required): ID do formulário
- `published` (boolean, required): true para publicar (visível e aceitando respostas), false para despublicar

### `update_form_info` (~81 tokens)

Editar título/descrição do formulário

Altera o título e/ou a descrição de um formulário existente (o que aparece no topo para quem responde). O nome do arquivo no Drive (documentTitle) não pode ser alterado pela API depois da criação.

Input parameters:

- `description` (string): Nova descrição
- `formId` (string, required): ID do formulário
- `title` (string): Novo título

### `get_form` (~91 tokens)

Ver formulário

Mostra a estrutura de um formulário: dados gerais e a lista de itens com as posições (use-as em add_question, delete_question e move_question). Com raw=true, inclui também o JSON completo da API.

Input parameters:

- `formId` (string, required): ID do formulário
- `raw` (boolean): true para incluir também o JSON completo da API (saída bem maior; só quando o resumo não bastar)

### `add_question` (~445 tokens)

Adicionar pergunta

Acrescenta uma pergunta a um formulário (no final, ou na posição indicada por 'index'). Tipos: texto curto/longo, escolha (única, múltipla, lista), escala linear, data, hora e avaliação. Para valer pontos ('points'), o formulário precisa estar em modo quiz — use set_quiz antes.

Input parameters:

- `correctAnswers` (array): Resposta(s) correta(s) para quiz, batendo com as 'options'
- `formId` (string, required): ID do formulário
- `includeTime` (boolean): (date) Pedir também a hora (padrão: não)
- `includeYear` (boolean): (date) Pedir o ano (padrão: sim)
- `index` (integer): Posição do novo item (0 = primeiro; as posições contam todos os itens). Se omitido, entra no final.
- `isDuration` (boolean): (time) true = duração (horas e minutos); false = hora do dia (padrão)
- `options` (array): Alternativas (para multiple_choice/checkboxes/dropdown)
- `points` (number): Pontos da pergunta no quiz (exige modo quiz ativo; ex.: 1)
- `ratingIcon` (string): (rating) Ícone da avaliação (padrão star)
- `ratingLevels` (integer): (rating) Quantidade de níveis: 3 a 10 (padrão 5)
- `required` (boolean): Se a resposta é obrigatória
- `scaleMax` (integer): (linear_scale) Fim da escala: 2 a 10 (padrão 5)
- `scaleMaxLabel` (string): (linear_scale) Rótulo do fim, ex.: 'Concordo totalmente'
- `scaleMin` (integer): (linear_scale) Início da escala: 0 ou 1 (padrão 1)
- `scaleMinLabel` (string): (linear_scale) Rótulo do início, ex.: 'Discordo totalmente'
- `title` (string, required): Enunciado da pergunta
- `type` (string, required): Tipo da pergunta

### `update_question` (~181 tokens)

Editar pergunta

Altera uma pergunta existente na posição indicada: enunciado, obrigatoriedade, alternativas, pontos e gabarito — sem apagar e recriar, preservando o vínculo com respostas já recebidas. Confira a posição com get_form.

Input parameters:

- `correctAnswers` (array): Novo gabarito, batendo com as alternativas (exige modo quiz)
- `formId` (string, required): ID do formulário
- `index` (integer, required): Posição do item (começa em 0; veja as posições com get_form)
- `options` (array): Novas alternativas — substituem TODAS as atuais (só para perguntas de escolha)
- `points` (number): Nova pontuação (exige modo quiz)
- `required` (boolean): true = resposta obrigatória; false = opcional
- `title` (string): Novo enunciado

### `build_form` (~193 tokens)

Criar formulário completo

Cria um formulário inteiro numa única operação: título, descrição, modo quiz e todas as perguntas na ordem dada. Prefira esta ferramenta a encadear create_form + várias add_question. Por padrão o Google cria o formulário JÁ PUBLICADO; use unpublished=true para criá-lo como rascunho.

Input parameters:

- `description` (string): Descrição exibida no topo do formulário (opcional)
- `documentTitle` (string): Nome do arquivo no Drive (opcional)
- `isQuiz` (boolean): true para criar já em modo quiz (obrigatório se alguma pergunta tiver 'points')
- `questions` (array, required): Perguntas, na ordem em que devem aparecer no formulário
- `title` (string, required): Título do formulário, visível para quem responde
- `unpublished` (boolean): true para criar como rascunho (ninguém responde até set_publish). Padrão: publicado.

### `add_section` (~116 tokens)

Adicionar seção

Insere uma quebra de seção (nova página) no formulário: quem responde avança de seção com o botão 'Próxima'. As posições contam todos os itens — confira com get_form.

Input parameters:

- `description` (string): Texto exibido abaixo do título da seção (opcional)
- `formId` (string, required): ID do formulário
- `index` (integer): Posição do novo item (0 = primeiro; contam todos os itens). Se omitido, entra no final.
- `title` (string, required): Título da seção

### `add_text_item` (~110 tokens)

Adicionar bloco de texto

Insere um bloco de texto estático (título + texto explicativo) entre as perguntas — sem campo de resposta. As posições contam todos os itens — confira com get_form.

Input parameters:

- `description` (string): Texto do bloco (opcional)
- `formId` (string, required): ID do formulário
- `index` (integer): Posição do novo item (0 = primeiro; contam todos os itens). Se omitido, entra no final.
- `title` (string, required): Título do bloco

### `set_quiz` (~54 tokens)

Modo quiz

Liga ou desliga o modo quiz (com notas) de um formulário.

Input parameters:

- `formId` (string, required): ID do formulário
- `isQuiz` (boolean, required): true para virar quiz, false para voltar a formulário comum

### `delete_question` (~77 tokens)

Apagar pergunta

Remove a pergunta na posição indicada. As posições contam TODOS os itens (0 = primeiro) — confira antes com get_form. Recusa apagar itens que não sejam perguntas.

Input parameters:

- `formId` (string, required): ID do formulário
- `index` (integer, required): Posição do item (começa em 0; veja as posições com get_form)

### `move_question` (~69 tokens)

Reordenar pergunta

Move um item de uma posição para outra. As posições contam TODOS os itens (0 = primeiro) — confira antes com get_form.

Input parameters:

- `formId` (string, required): ID do formulário
- `from` (integer, required): Posição atual do item
- `to` (integer, required): Nova posição desejada

### `list_responses` (~108 tokens)

Ler respostas

Lista as respostas de um formulário, já com o enunciado de cada pergunta no lugar do código interno. Vem em páginas (padrão: 50 por vez); se houver mais, a saída traz o pageToken da página seguinte.

Input parameters:

- `formId` (string, required): ID do formulário
- `pageSize` (integer): Quantas respostas trazer por página (padrão 50)
- `pageToken` (string): Token da página seguinte, devolvido pela chamada anterior

### `verify_answer_keys` (~95 tokens)

Conferir gabarito

Confere o gabarito de um quiz comparando com o esperado: para cada posição, verifica a(s) resposta(s) correta(s) e, se informados, os pontos. Útil para auditar um quiz recém-montado antes de divulgar.

Input parameters:

- `expected` (array, required): Gabarito esperado, item a item
- `formId` (string, required): ID do formulário (precisa estar em modo quiz)

### `auth_status` (~50 tokens)

Diagnóstico das credenciais

Verifica a configuração de acesso ao Google sem alterar nada: se o arquivo de credenciais existe, se está completo e se o Google aceita o refresh token. Use quando alguma ferramenta falhar por autenticação.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/claude-book-mcp-server-google-forms/mcp-server-google-forms#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 65
- 2026-08-01: 20
- 2026-07-31: 27
- 2026-07-30: 24
- 2026-07-28: 45
- 2026-07-27: 25

## Links

- npm package: https://www.npmjs.com/package/mcp-server-google-forms
- Socket report: https://socket.dev/npm/package/mcp-server-google-forms
- Repository: https://github.com/claude-book/mcp-server-google-forms
- Changelog RSS feed: https://verifymcp.io/servers/claude-book-mcp-server-google-forms/mcp-server-google-forms/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/claude-book-mcp-server-google-forms/mcp-server-google-forms/changelog.json
- HTML version of this page: https://verifymcp.io/servers/claude-book-mcp-server-google-forms/mcp-server-google-forms
