Sheets MCP vs Human Survey

A side-by-side look at the Sheets MCP and Human Survey MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Sheets MCP logoSheets MCPWorkplace & Productivity · Local subprocess (stdio)Google Sheets for agent workflows in Claude Code and Claude Desktop: APIs, files, schedules, undo.68GreatAuth: oauth 2.0Human Survey logoHuman SurveyWorkplace & Productivity · Local subprocess (stdio)Feedback collection for AI agents. Create surveys from JSON schema, collect structured responses from groups of people, and retrieve aggregated results. 4 MCP tools for long-horizon agent workflows: post-event feedback, product launches, team health checks.60GoodAuth: not declared

Verdict: choose Sheets MCP for workplace & productivity work as a local process; choose Human Survey for workplace & productivity as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Sheets MCP logoChoose Sheets MCP when

  • You need dedicated capabilities in the Workplace & Productivity domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: OAuth 2.0.
  • You want tools like google_accounts, find_spreadsheet, create_spreadsheet.
Explore Sheets MCP

Human Survey logoChoose Human Survey when

  • You need dedicated capabilities in the Workplace & Productivity domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: HUMANSURVEY_API_KEY.
  • You want tools like login, get_catalog, list_forms.
Explore Human Survey

Feature & specification comparison

Rows where the two servers differ are marked.

SpecSheets MCP logoSheets MCPHuman Survey logoHuman Survey
CategoryWorkplace & ProductivityWorkplace & Productivity
Quality signal68/100 · Great60/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthOAuth 2.0Not declared
PricingFreeNot declared
Required env varsNone listedHUMANSURVEY_API_KEY
Verified ownerCommunity listingCommunity listing
GitHub stars351
Directory activity 5 views 0 installs 0 upvotes 2 views 0 installs 0 upvotes
Tools2910

Tools & capabilities

Sheets MCP tools 29

  • google_accountsManage the Google accounts Sheets MCP can use. list: show signed-in accounts and the default. add: sign in to a Google account (opens a browser sign-in; also use this when a sign-in has expired). remove: sign an account out and revoke access. set_default: choose the account used for new spreadsheets.
  • find_spreadsheetFind a spreadsheet by name among the ones the user has opened or created with Sheets MCP before (the list is kept on their computer). Use it when the user names a sheet instead of pasting a link, e.g. "my budget sheet". It can't search the rest of their Google Drive: if nothing matches, ask for the link. Leave query empty to list the most recent.
  • create_spreadsheetCreate a new Google Sheets spreadsheet.
  • get_spreadsheet_infoGet a spreadsheet's title, tabs (sizes, frozen rows/cols), charts (ids, types, data ranges), named ranges, and the first few rows of each tab. Call this first to understand a sheet's layout.
  • read_rangeRead cell contents from a range, or its formatting with mode "formats". Large ranges are truncated; use next_range to continue.
  • read_rangesRead several ranges in one call, across any tabs. Faster than calling read_range repeatedly. Each range is truncated to its share of max_cells; use its next_range with read_range to continue.
  • write_rangeWrite values and/or formulas starting at the top-left cell of the range. Input is parsed like typing into the UI (formulas, dates, percentages work). Previous contents are saved for undo_last. Returns any formula errors found after writing.
  • fill_rangeFill cells from a source block, like dragging the fill handle or pasting onto a bigger selection: the source's formulas (relative references shift), values and formatting repeat across the destination. Use it after writing one row or column of formulas to extend them across a table, instead of sending every column. With continue_series, patterns continue instead (1, 2, 3 → 4, 5, 6; Jan → Feb; dates). The destination's previous contents are saved for undo_last. Returns any formula errors found after filling.
  • append_rowsAppend rows after the last row of data in a table (detected from the given range or tab).
  • clear_rangeClear values and formulas in a range (formatting is kept). Previous contents are saved for undo_last.
  • find_replaceFind and replace text across a tab or the whole spreadsheet. Not undoable - consider read_range first.
  • undo_lastUndo the most recent write_range, append_rows, or clear_range made through this server (restores values/formulas only, not formatting or structure). History is kept in memory until the server restarts.
  • +17 more on the listing page

Human Survey tools 10

  • loginSign in with an email address and store an API key on this machine. Called with only an email, it mails a six-digit code and returns nothing usable — the code has to come from the person, out of their inbox. Called with the email and that code, it stores a key at ~/.humansurvey/credentials and reports where it was written. The key itself is never printed. Signing in and signing up are the same act: an address that has never been used gets an account.
  • get_catalogList the platforms HumanSurvey knows: the slug to use as catalog_slug, the display label, and which class of channel it is. These are the named channels a respondent can be shown — TikTok, ChatGPT, LinkedIn, Reddit and so on — plus the descriptive options that have no brand behind them, like "a friend or colleague told me". No API key needed.
  • list_formsList the forms on this account: id, name, respondent URL, whether it is active or paused, whether it has been configured with questions yet, and how many responses it has collected.
  • get_formRead one form: its settings, and the question configuration currently shown to respondents — every question, every candidate, and the order mode. Returns the configuration as JSON, because that is the exact shape a configuration write takes.
  • create_formCreate a form and return its id, its respondent URL, and the iframe and postMessage listener to embed that URL in a host page. The form has no questions yet and shows nothing to respondents until it is configured. allowed_origins restricts which sites may embed it; leaving it empty allows any site, which means any site can spend this account’s response quota.
  • configure_formSet the questions and candidates a form shows. Replaces the whole configuration and stores it as a new immutable version, so responses already collected keep describing the list they were actually shown. Re-sending an identical configuration reuses the existing version rather than making another. A form is one single-select question, optionally expanding into a second. Give a candidate an `expands` naming another question to reveal it when that candidate is picked — that is how "TikTok" becomes "which account". Candidate ids must be stable keys that survive a rename. Using a handle as an id splits that creator’s history in two the day they change it. Set catalog_slug to take a candidate’s label and logo from the platform catalog. Order defaults to "rotate", which randomizes per respondent and is what makes the reported shares unbiased; "fixed" keeps your order and accepts that earlier options get picked more often for being earlier.
  • get_attributionWhat respondents said, aggregated. Reports, per question, how many completed responses named each candidate out of how many answered that question, the unresolved answers in the same list, how often a follow-up question failed to find an answer, and revenue where conversion events have been recorded. Computed fresh on every call, including any mappings made since — so a rollup of a past window can legitimately change between two reads.
  • list_unresolvedThe answers respondents typed instead of picking from the list, grouped by the exact text and ordered by how often it was typed. Reports the spelling variants seen, when each was first and last typed, and whether a mapping already covers it. These are verbatim words. Two texts that read alike may be different people, and a text may name somebody who is not on the candidate list at all.
  • remapRecord that a specific typed answer means a specific candidate. It applies to every response already carrying that text as well as every future one, so numbers reported for past windows change. The original text is never altered and a mapping can be revoked, but a report may already have been read. Only map a text whose meaning is established — a text that merely resembles a candidate’s name is not evidence that it is that candidate. One live mapping per text per question.
  • revoke_remapStop a mapping from applying. The typed answers it covered return to the unresolved list — in past windows as well as future ones, because rollups join mappings when they are read rather than when they are made. Numbers already reported for those windows will therefore change. Nothing is deleted: the mapping is marked revoked and kept, so a report produced while it was live can still be explained. Revoking an already-revoked mapping is not an error and does not move the time it stopped applying. Mapping ids appear beside any text that is already mapped in the free-text listing, and in the confirmation given when a mapping is created.

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Sheets MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "sheets-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@sheetsmcp/server"
      ]
    }
  }
}

Human Survey

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "sunsiyuan-human-survey": {
      "command": "npx",
      "args": [
        "-y",
        "humansurvey-mcp"
      ],
      "env": {
        "HUMANSURVEY_API_KEY": "YOUR_HUMANSURVEY_API_KEY_HERE"
      }
    }
  }
}

Frequently asked questions

Sheets MCP is categorized under Workplace & Productivity and uses a local stdio subprocess. Human Survey belongs to Workplace & Productivity and uses a local stdio subprocess. Pick Sheets MCP for workplace & productivity work and Human Survey for workplace & productivity.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Sheets MCP is listed as free. Auth: oauth 2.0. Human Survey has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add sheets-mcp and sunsiyuan-human-survey as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Sheets MCP has a quality signal of 68/100 (Great) with 5 views, 0 installs and 35 GitHub stars. Human Survey has 60/100 (Good) with 2 views, 0 installs and 1 GitHub stars.