SheetAI MCP server

Use your SheetAI spreadsheets from Claude, ChatGPT, Cursor and Claude Code

SheetAI is a remote MCP server. Add it to any MCP-compatible app, sign in once, and that app can list, read, query and edit your spreadsheets. This guide covers setup per app, what the tools do, permissions, tokens, and troubleshooting.

What it is

One URL that any AI app can use

The Model Context Protocol (MCP) is the open standard AI apps use to talk to tools. SheetAI publishes a remote MCP server at https://sheetai.co/api/mcp. Add that URL to an app that supports MCP, approve access on a SheetAI screen, and the app gains a small set of tools for your spreadsheets: the same spreadsheets you see under My Sheets, and nothing else.

This is the outbound direction: SheetAI as a tool inside another app. The inbound direction, other apps as tools inside SheetAI, is covered in Connectors.

Set up

Add SheetAI to your app

Open Settings → MCP server first: it shows the server URL, a copy button, and the exact steps for each app below with the URL already filled in.

Claude

Customize → Connectors → Add custom connector. Paste the URL, choose “Sign in now”, approve on the SheetAI screen, then enable SheetAI from the + menu in a chat.

ChatGPT

Settings → Connectors → Create (developer mode must be on for your plan). Paste the URL, choose OAuth, sign in, then pick SheetAI from the tools menu in a chat.

Claude Code

Run claude mcp add --transport http sheetai https://sheetai.co/api/mcp, then type /mcp and sign in when prompted.

Cursor and VS Code

Add { "mcpServers": { "sheetai": { "url": "https://sheetai.co/api/mcp" } } } to mcp.json and sign in when the editor prompts. Or send a personal access token as an Authorization: Bearer header instead of signing in.

Any other app. Windsurf, Gemini CLI, GitHub Copilot, Goose, Zed, Zapier, n8n, Make, or your own code with an MCP client library: add a remote MCP server with the URL above and the “Streamable HTTP” transport. Sign-in is discovered automatically. If the app has no sign-in flow, use a personal access token.

Tools

What a connected app can do

Nine tools, split by the permission they need. Every tool works on the spreadsheets you own or have been given access to, exactly as if you had signed in yourself.

Read (scope sheets:read)

  • get_me: your account as the app sees it: name, email, plan, credits left, team and role, spreadsheet counts, and links to My Sheets, Settings and Billing. A good first call.
  • list_spreadsheets: every spreadsheet you can open, with ids, links and paging.
  • get_spreadsheet: one workbook’s tabs, sizes, headers and a sample of each.
  • read_range: the values in an A1 range, formulas included.
  • query_sheet: a SQL query over one tab, for filtering, aggregating and sorting without reading everything.
  • get_sheet_csv: a whole tab as CSV text.

Write (scope sheets:write)

  • write_range: write values or formulas starting at a cell; the range grows to fit what you send.
  • append_rows: add rows under the last used row of a tab.
  • create_spreadsheet: start a new workbook, optionally with tabs and starting data.

Writes land in the saved workbook immediately. If the same sheet is open in a browser tab, reload it to see the change. Cells written this way are ordinary edits, the same as typing them in the grid.

Resources and prompts

Apps with a resource picker (Claude’s + menu, Cursor’s @) list your spreadsheets as resources: sheetai://spreadsheet/<id> attaches an overview, and sheetai://spreadsheet/<id>/tab/<name> attaches one tab as CSV, with no tool call. Two prompts, Summarize a spreadsheet and Answer a question from a sheet, appear as commands in apps that support server prompts.

Permissions

Sign-in, scopes and disconnecting

Apps connect through OAuth 2.1. The first time, the app registers itself with SheetAI and sends you to a consent page that names the app and lists what it asks for: read, or read and write. Approve or decline there. The app never sees your SheetAI password; it receives a short-lived token limited to the scopes you approved, and refresh tokens rotate on every use.

  • Grant read only when an app only needs to look at data. No write tool will work with that grant.
  • Every connected app is listed under Settings → MCP server → Connected apps. Disconnect revokes its tokens; it has to sign in again to continue.
  • Tokens are issued for the SheetAI server only, so a token cannot be replayed against another service.
  • Requests are limited to 240 per minute per account. Above that the server answers 429 with a Retry-After header.

Personal access tokens

For apps and scripts that cannot sign in

Under Settings → MCP server, create a token with a name, the scopes it may use (read-only, or read and write) and an expiry: never, 30 days, 90 days or a year. The token starts with sai_pat_ and is shown once. Send it as Authorization: Bearer <token>.

  • Treat a token like a password: paste it into the app’s configuration, never into a chat.
  • Give each app its own token so you can revoke one without touching the others.
  • Revoke from the same screen. A revoked token stops working immediately.
  • The list shows when each token was last used, which is the quickest way to spot one you no longer need.

For developers

Try it by hand

The server speaks plain JSON-RPC over HTTPS with the Streamable HTTP transport. With a personal access token you can list the tools from a terminal:

curl -X POST https://sheetai.co/api/mcp \
  -H "Authorization: Bearer sai_pat_..." \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

OAuth clients discover everything they need from https://sheetai.co/.well-known/oauth-authorization-server and https://sheetai.co/.well-known/oauth-protected-resource: the authorization and token endpoints, dynamic client registration at /api/oauth/register, the two scopes, and PKCE with S256, which is required. An unauthenticated request to the server returns 401 with a WWW-Authenticate challenge pointing at that metadata, so a standard MCP client needs no SheetAI-specific configuration.

Troubleshooting

When something does not connect

  • The app says it cannot reach the server: check the URL is exactly https://sheetai.co/api/mcp with no trailing path, and that the transport is Streamable HTTP (not stdio).
  • Sign-in opens but the app is not listed afterwards: finish the consent screen in the same browser and return to the app; some apps need a second click on Connect.
  • Tools are listed but writes fail: the grant or token is read-only. Disconnect and sign in again choosing read and write, or create a token with the write scope.
  • A token stopped working: it may have expired or been revoked. The token list under Settings → MCP server shows both.
  • Slow or 429 responses: the app is calling in a tight loop. Interactive use never approaches the limit; check for a runaway automation.