MCP server for the Google Forms API: create forms, manage questions, read responses and watches.
registry version 1.2.0
npm
npx -y mcp-google-formsnpm
npx -y mcp-google-forms@1.2.0
Pick your client — the config below is generated for this server (local stdio). Copy respects the “Pin version” switch above.
claude_desktop_config.json
{
"mcpServers": {
"mcp-google-forms": {
"command": "npx",
"args": [
"-y",
"mcp-google-forms"
],
"env": {
"GOOGLE_FORMS_CLIENT_SECRET": "<YOUR_GOOGLE_FORMS_CLIENT_SECRET>",
"GOOGLE_FORMS_REFRESH_TOKEN": "<YOUR_GOOGLE_FORMS_REFRESH_TOKEN>",
"GOOGLE_FORMS_ACCESS_TOKEN": "<YOUR_GOOGLE_FORMS_ACCESS_TOKEN>"
}
}
}
}{
"mcpServers": {
"mcp-google-forms": {
"command": "npx",
"args": [
"-y",
"mcp-google-forms@1.2.0"
],
"env": {
"GOOGLE_FORMS_CLIENT_SECRET": "<YOUR_GOOGLE_FORMS_CLIENT_SECRET>",
"GOOGLE_FORMS_REFRESH_TOKEN": "<YOUR_GOOGLE_FORMS_REFRESH_TOKEN>",
"GOOGLE_FORMS_ACCESS_TOKEN": "<YOUR_GOOGLE_FORMS_ACCESS_TOKEN>"
}
}
}
}Format verified against the official Claude Desktop docs ↗.
terminal
claude mcp add --env GOOGLE_FORMS_CLIENT_SECRET=<YOUR_GOOGLE_FORMS_CLIENT_SECRET> --env GOOGLE_FORMS_REFRESH_TOKEN=<YOUR_GOOGLE_FORMS_REFRESH_TOKEN> --env GOOGLE_FORMS_ACCESS_TOKEN=<YOUR_GOOGLE_FORMS_ACCESS_TOKEN> mcp-google-forms -- npx -y mcp-google-forms
claude mcp add --env GOOGLE_FORMS_CLIENT_SECRET=<YOUR_GOOGLE_FORMS_CLIENT_SECRET> --env GOOGLE_FORMS_REFRESH_TOKEN=<YOUR_GOOGLE_FORMS_REFRESH_TOKEN> --env GOOGLE_FORMS_ACCESS_TOKEN=<YOUR_GOOGLE_FORMS_ACCESS_TOKEN> mcp-google-forms -- npx -y mcp-google-forms@1.2.0
Format verified against the official Claude Code docs ↗.
.cursor/mcp.json
{
"mcpServers": {
"mcp-google-forms": {
"command": "npx",
"args": [
"-y",
"mcp-google-forms"
],
"env": {
"GOOGLE_FORMS_CLIENT_SECRET": "<YOUR_GOOGLE_FORMS_CLIENT_SECRET>",
"GOOGLE_FORMS_REFRESH_TOKEN": "<YOUR_GOOGLE_FORMS_REFRESH_TOKEN>",
"GOOGLE_FORMS_ACCESS_TOKEN": "<YOUR_GOOGLE_FORMS_ACCESS_TOKEN>"
}
}
}
}{
"mcpServers": {
"mcp-google-forms": {
"command": "npx",
"args": [
"-y",
"mcp-google-forms@1.2.0"
],
"env": {
"GOOGLE_FORMS_CLIENT_SECRET": "<YOUR_GOOGLE_FORMS_CLIENT_SECRET>",
"GOOGLE_FORMS_REFRESH_TOKEN": "<YOUR_GOOGLE_FORMS_REFRESH_TOKEN>",
"GOOGLE_FORMS_ACCESS_TOKEN": "<YOUR_GOOGLE_FORMS_ACCESS_TOKEN>"
}
}
}
}Format verified against the official Cursor docs ↗.
.vscode/mcp.json
{
"servers": {
"mcp-google-forms": {
"command": "npx",
"args": [
"-y",
"mcp-google-forms"
],
"env": {
"GOOGLE_FORMS_CLIENT_SECRET": "<YOUR_GOOGLE_FORMS_CLIENT_SECRET>",
"GOOGLE_FORMS_REFRESH_TOKEN": "<YOUR_GOOGLE_FORMS_REFRESH_TOKEN>",
"GOOGLE_FORMS_ACCESS_TOKEN": "<YOUR_GOOGLE_FORMS_ACCESS_TOKEN>"
}
}
}
}{
"servers": {
"mcp-google-forms": {
"command": "npx",
"args": [
"-y",
"mcp-google-forms@1.2.0"
],
"env": {
"GOOGLE_FORMS_CLIENT_SECRET": "<YOUR_GOOGLE_FORMS_CLIENT_SECRET>",
"GOOGLE_FORMS_REFRESH_TOKEN": "<YOUR_GOOGLE_FORMS_REFRESH_TOKEN>",
"GOOGLE_FORMS_ACCESS_TOKEN": "<YOUR_GOOGLE_FORMS_ACCESS_TOKEN>"
}
}
}
}Format verified against the official VS Code docs ↗.
mcp_config.json
{
"mcpServers": {
"mcp-google-forms": {
"command": "npx",
"args": [
"-y",
"mcp-google-forms"
],
"env": {
"GOOGLE_FORMS_CLIENT_SECRET": "<YOUR_GOOGLE_FORMS_CLIENT_SECRET>",
"GOOGLE_FORMS_REFRESH_TOKEN": "<YOUR_GOOGLE_FORMS_REFRESH_TOKEN>",
"GOOGLE_FORMS_ACCESS_TOKEN": "<YOUR_GOOGLE_FORMS_ACCESS_TOKEN>"
}
}
}
}{
"mcpServers": {
"mcp-google-forms": {
"command": "npx",
"args": [
"-y",
"mcp-google-forms@1.2.0"
],
"env": {
"GOOGLE_FORMS_CLIENT_SECRET": "<YOUR_GOOGLE_FORMS_CLIENT_SECRET>",
"GOOGLE_FORMS_REFRESH_TOKEN": "<YOUR_GOOGLE_FORMS_REFRESH_TOKEN>",
"GOOGLE_FORMS_ACCESS_TOKEN": "<YOUR_GOOGLE_FORMS_ACCESS_TOKEN>"
}
}
}
}Format verified against the official Windsurf docs ↗.
Defined in the server's official registry manifest. Required secrets are shown as <YOUR_…> placeholders in the configs above.
GOOGLE_FORMS_CLIENT_ID — Google OAuth2 client id (refresh-token flow).GOOGLE_FORMS_CLIENT_SECRET secret — Google OAuth2 client secret (refresh-token flow). Treat it as a secret.GOOGLE_FORMS_REFRESH_TOKEN secret — Google OAuth2 refresh token, exchanged for access tokens automatically. Treat it as a secret.GOOGLE_FORMS_ACCESS_TOKEN secret — Static OAuth2 access token (~1h lifetime) — alternative to the refresh-token trio, mostly for testing.GOOGLE_FORMS_OAUTH_PORT — Fixed port for the loopback listener of the in-chat login (127.0.0.1 + PKCE). Set it when the client runs over SSH port forwarding; otherwise a free port is picked per login.GOOGLE_FORMS_API_BASE — API root override.GOOGLE_FORMS_TIMEOUT_MS — Per-request timeout in milliseconds.GOOGLE_FORMS_MAX_RETRIES — Retries on transient errors (429 always; 5xx/network for reads).最近更新于 25 天前 · MIT license
Google Forms MCP English Русский A1 Google Forms MCP lets an AI app build and manage Google Forms in plain language. Create a survey, choose its questions, publish it when ready, read answers and use notifications for new submissions. It uses the G…
Summary from the project README — github.com/A1-x-Tech/mcp-google-forms
Distributed as npm, listed under Developer Tools. Review our MCP security guide before granting access to real data.
Google Forms MCP English Русский A1 Google Forms MCP lets an AI app build and manage Google Forms in plain language. Create a survey, choose its questions, publish it when ready, read answers and use notifications for new submissions. It uses the G
Run the install command shown above, then paste the config for your client (Claude Desktop, Claude Code, Cursor, VS Code or Windsurf) into its MCP settings and restart the client.
The MCP server itself is free to install. The source is public on https://github.com/A1-x-Tech/mcp-google-forms. Any third-party service it calls may require its own API key and account.
Any MCP-compatible client can use it, including Claude Desktop, Claude Code, Cursor, VS Code, Windsurf and custom agents.
Publish this server? Link back with a badge on your README or site — copy either snippet.
Markdown
[](https://mcpnav.net/server/mcp-google-forms/)
HTML
<a href="https://mcpnav.net/server/mcp-google-forms/"><img src="https://mcpnav.net/badge/mcp-google-forms.svg" alt="Listed on MCPNav" height="20"></a>