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.
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://mcp.docstosheets.com
- OAuth Verification:
- ChatGPT will perform a discovery request to fetch your server’s OAuth metadata at
https://mcp.docstosheets.com/.well-known/oauth-protected-resource. - 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 Desktop Setup
Section titled “2. Claude Desktop Setup”Because local desktop clients like Claude Desktop run MCP servers locally via claude_desktop_config.json (using standard input/output streams), they do not natively handle OAuth redirection flows. You can connect using one of two methods:
Method A: Token Environment Variable (Recommended for CLI/Scripts)
Section titled “Method A: Token Environment Variable (Recommended for CLI/Scripts)”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:
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, configuration modes, and target spreadsheet connections (Read-only).mailboxes_create(name, mode, columns, headerColumns, lineItemColumns, layout, ...): Creates a new mailbox and sets up its AI extraction schema (columns) and layout (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 schema, columns, and layout properties for a specific mailbox (Read-only).mailbox_config_update(mailboxId, mode, columns, headerColumns, lineItemColumns, layout, ...): Modifies the extraction schema. Note: after documents have been processed in the mailbox, only additive column changes and layout updates are 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 and its 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).extractions_delete(mailboxId, extractionId): Deletes an extracted data row (Requiresmcp.writescope).export_csv(mailboxId, includeDocumentId): Compiles all extractions from a mailbox and exports them as a plain-text CSV block (Read-only).
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 external integration statuses for linked Google Drive and Microsoft OneDrive accounts (Read-only).
ChatGPT UI Widgets
Section titled “ChatGPT UI Widgets”render_docstosheets_workspace_widget(limit): Renders a visually formatted overview widget showing your active profile, plan type, and mailbox statistics directly within the ChatGPT workspace (Read-only).