qs-forms MCP
README.md
# qs-forms MCP
Google フォームの構造と回答を読むだけの自作 stdio MCP。
Forms API を直叩き。回答者メールアドレスを設問タイトルと join した形で返すので、展示会・ウェビナーの CRM 突合に直接使える。
**read only**。フォームの作成も回答の書き換えもしない(スコープが `*.readonly` のみ)。
## ツール
| tool | 役割 |
| --- | --- |
| `list_accounts` | 認証済みアカウント一覧 |
| `get_form` | フォームの構造と設定(設問一覧 / メール収集の有無 / `linkedSheetId` / `responderUri`) |
| `list_responses` | 回答一覧。`respondentEmail` +設問タイトルで join 済み。省略時は全件を自動ページング |
| `get_response` | 回答 1 件を `responseId` で取得 |
`formId` は編集 URL の `/forms/d/` の後ろ。
フォーム一覧を返す API は Forms 側に無いので、`formId` が不明なときは Drive 検索(`mimeType = 'application/vnd.google-apps.form'`)で特定する。
## セットアップ
1. GCloud プロジェクトで Forms API と Drive API を有効化
2. OAuth クライアント(desktop)の JSON を `~/.gmail-mcp-credentials.json` に置く。qs-gmail のクライアントをそのまま流用可(スコープは認証時に指定するため)
3. `node authorize.js <account>` → ブラウザで承認。トークンは `~/.forms-mcp-tokens.db`(node:sqlite)へ
4. `~/.claude.json` の `mcpServers` に登録して reconnect
環境変数で上書きする場合は `.env.example` を参照。
## スコープ
```
forms.body.readonly
forms.responses.readonly
drive.readonly
```
## スタック
Node.js(`type: module`)/ `@modelcontextprotocol/sdk` / `googleapis` / `zod` / `node:sqlite`
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues