DocsToSheets Model Context Protocol (MCP) Server
The DocsToSheets MCP Server implements the Model Context Protocol. This allows AI assistants like ChatGPT and Claude to securely access, read, and write data to your spreadsheets on your behalf.
Rather than using public static API keys, the DocsToSheets remote MCP server uses standard OAuth 2.1 to authenticate and authorize LLM clients.
Server Endpoint
Section titled “Server Endpoint”Connect your MCP client to the following endpoint:
| Setting | Value |
|---|---|
| MCP server endpoint | https://app.docstosheets.com/mcp |
| Protected-resource metadata | https://app.docstosheets.com/.well-known/oauth-protected-resource/mcp |
| Authorization server | https://app.docstosheets.com |
| OAuth endpoints | Authorize /connect/authorize · Token /connect/token · Registration /connect/register (Dynamic Client Registration) |
| Scopes | mcp.read, mcp.write |
Clients that support OAuth 2.1 discovery (such as ChatGPT) only need the MCP server endpoint URL — they discover the authorization server, register a client via Dynamic Client Registration, and request scopes automatically.
1. OpenAI / ChatGPT App Setup
Section titled “1. OpenAI / ChatGPT App Setup”OpenAI supports connecting remote MCP servers to ChatGPT as Apps using OAuth authentication.
How to Add the DocsToSheets App in ChatGPT
Section titled “How to Add the DocsToSheets App in ChatGPT”To add DocsToSheets as an App in your ChatGPT workspace:
- Enable Developer Mode:
- Open ChatGPT and navigate to Settings > Workspace Settings > Developer Mode.
- Toggle Developer Mode on.
- Add the App:
- Click Develop an App or Create App.
- Choose MCP Server as the app type.
- Provide the remote server endpoint URL:
https://app.docstosheets.com/mcp
- OAuth Verification:
- ChatGPT will perform a discovery request to fetch your server’s OAuth metadata at
https://app.docstosheets.com/.well-known/oauth-protected-resource/mcp. - It will register itself dynamically via Dynamic Client Registration (DCR).
- You will be prompted in a popup browser window to log into your DocsToSheets account and authorize ChatGPT.
- ChatGPT will perform a discovery request to fetch your server’s OAuth metadata at
- Active Tools:
- Once authorized, ChatGPT will instantly gain access to the spreadsheet tools and display a workspace widget.
2. Claude Setup
Section titled “2. Claude Setup”The simplest way to connect Claude is as a remote MCP connector over OAuth — the same flow ChatGPT uses, with no local installation required. Local STDIO options are also available for scripted setups.
Recommended: Remote Connector (OAuth)
Section titled “Recommended: Remote Connector (OAuth)”- In Claude (Claude.ai or Claude Desktop), open your connector / integration settings and choose to add a custom connector.
- Enter the DocsToSheets MCP server endpoint:
https://app.docstosheets.com/mcp
- Claude opens a browser window for you to log in to DocsToSheets and authorize access (OAuth 2.1).
- Once authorized, the DocsToSheets tools become available in your Claude conversations, including the interactive widgets (MCP Apps) rendered inline in the chat.
Note: Methods A and B below run the server locally over STDIO and require the
@docstosheetsCLI / server packages. If you don’t need a local setup, use the Remote Connector above.
Local desktop clients like Claude Desktop can also run MCP servers locally via claude_desktop_config.json (using standard input/output streams). You can connect using one of two methods:
Method A: Token Environment Variable (CLI/Scripts)
Section titled “Method A: Token Environment Variable (CLI/Scripts)”For headless or scripted setups, you can mint MCP access tokens without a browser using an API app (paid plans): request POST /connect/token with grant_type=client_credentials, your dts_app_* client ID and secret, and scope=mcp.read mcp.write. The token acts on behalf of your whole workspace account and expires after about an hour.
Alternatively, generate a long-lived Access Token from your DocsToSheets dashboard and pass it directly to the local process:
- Open your Claude Desktop configuration:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- Configure the local subprocess, injecting your access token:
{ "mcpServers": { "docstosheets": { "command": "npx", "args": ["-y", "@docstosheets/mcp-server"], "env": { "DOCSTOSHEETS_ACCESS_TOKEN": "YOUR_OAUTH_ACCESS_TOKEN_HERE" } } }}- Restart Claude Desktop.
Method B: STDIO OAuth Wrapper/Proxy
Section titled “Method B: STDIO OAuth Wrapper/Proxy”If you need interactive authentication on your desktop:
- Install the DocsToSheets local CLI wrapper:
Terminal window npm install -g @docstosheets/cli - Run the login command to authenticate in your browser:
This command opens a browser window to complete the OAuth flow and saves the tokens securely on your local system.
Terminal window dts login - Configure Claude Desktop to call the CLI proxy (which will pipe STDIO JSON-RPC streams to the remote server while injecting your stored OAuth credentials):
{ "mcpServers": { "docstosheets": { "command": "dts", "args": ["mcp-proxy"] } }}- Restart Claude Desktop.
3. Complete MCP Tools Reference
Section titled “3. Complete MCP Tools Reference”The DocsToSheets MCP server exposes the following tools to authorized clients:
Breaking change (2026-06): the mailbox configuration contract was redesigned. Configs are now a list of header fields plus optional repeating sections (groups) — the previous
mode/columns/headerColumns/lineItemColumnsarguments were removed frommailboxes_createandmailbox_config_update, and config responses usefields/groups. Update any saved prompts or integrations accordingly.
Account & Profile
Section titled “Account & Profile”account_get_profile: Retrieves details about your current profile, connected email, plan type, and account slug (Read-only).account_update_profile(slug, acceptTerms, acceptPrivacy): Updates your account’s public slug or accepts terms/privacy agreements (Requiresmcp.writescope).
Mailbox Management
Section titled “Mailbox Management”mailboxes_list: Lists all mailboxes you own or have access to, including their custom emails, configurations, and target spreadsheet connections (Read-only).mailboxes_create(name, fields, groups, layout, ...): Creates a new mailbox and sets up its AI extraction config and layout.fieldsare document-level columns (each with an immutablekey, atype, optionallabel/hint/required, and at most onevalidator);groupsare repeating sections (each with anid,name, and its ownfields) that produce one spreadsheet row per entry (Requiresmcp.writescope).mailboxes_update(mailboxId, name, isActive): Renames a mailbox or toggles its active/inactive status to temporarily pause document ingestion (Requiresmcp.writescope).mailbox_config_get(mailboxId): Retrieves the extraction config (fields, groups) and layout properties for a specific mailbox (Read-only).mailbox_config_update(mailboxId, fields, groups, layout, ...): Modifies the extraction config. A field can have one validator:email,usZip,regex, or same-rowformula. Note: after documents have been processed in the mailbox, structural edits (removing or retyping a field, changing a key, deleting a section) are blocked — adding fields, editing labels/hints, the validator, and layout updates stay permitted (Requiresmcp.writescope).mailboxes_delete(mailboxId): Permanently deletes a mailbox (Requiresmcp.writescope).
Mailbox Sharing
Section titled “Mailbox Sharing”mailbox_shares_list(mailboxId): Lists all users who currently have shared access to this mailbox (Requiresmcp.writescope).mailbox_shares_create(mailboxId, email): Shares access to this mailbox with another user’s email address (Requiresmcp.writescope).mailbox_shares_delete(mailboxId, shareId): Revokes a mailbox share and removes user access (Requiresmcp.writescope).
Authorized Senders
Section titled “Authorized Senders”authorized_senders_get(mailboxId): Lists the email addresses and domains currently authorized to send files to this mailbox (Read-only).authorized_senders_update(mailboxId, customEmails): Overwrites the allowlist of email addresses permitted to submit documents (Requiresmcp.writescope).
Documents & Extractions
Section titled “Documents & Extractions”documents_list(mailboxId, page, pageSize): Lists all uploaded or ingested documents in a mailbox, showing their statuses, sizes, and timestamps (Read-only).documents_delete(mailboxId, documentId): Deletes a processed document along with its extracted data and raw source file (Requiresmcp.writescope).extractions_list(mailboxId, page, pageSize): Lists row-level data fields that have been parsed from files in a mailbox (Read-only).
Removed: the former
export_csvandextractions_deletetools no longer exist. Extraction rows are continuously synchronized to the mailbox’s export workbook (Google Sheets or Excel Online), and extracted data is deleted by deleting its document viadocuments_delete— documents and their extracted data are one-to-one.
Global Navigation & Search
Section titled “Global Navigation & Search”search(query, limit): Search across all accessible mailboxes, documents, extraction rows, integrations, and system notifications.fetch(id): Fetches details for a single resource by its global URI ID (e.g.mailbox:{id},document:{id},extraction:{id}, orintegration:{provider}) (Read-only).integrations_status: Lists every supported external integration provider (Google Drive, Microsoft OneDrive) with astatusofconnected,revoked, ornotConnected(Read-only).
Interactive UI Widgets
Section titled “Interactive UI Widgets”Several tools render interactive widgets directly in the conversation. Widgets work in ChatGPT (OpenAI Apps) and in any client that supports the MCP Apps extension, including Claude on web, desktop, and mobile.
render_docstosheets_workspace_widget(limit): Renders a visually formatted overview widget showing your active profile, plan type, and mailbox statistics directly in the conversation (Read-only).