Skip to content

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.


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:

  1. Enable Developer Mode:
    • Open ChatGPT and navigate to Settings > Workspace Settings > Developer Mode.
    • Toggle Developer Mode on.
  2. 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
  3. 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.
  4. Active Tools:
    • Once authorized, ChatGPT will instantly gain access to the spreadsheet tools and display a workspace widget.

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:

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:

  1. Open your Claude Desktop configuration:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 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"
}
}
}
}
  1. Restart Claude Desktop.

If you need interactive authentication on your desktop:

  1. Install the DocsToSheets local CLI wrapper:
    Terminal window
    npm install -g @docstosheets/cli
  2. Run the login command to authenticate in your browser:
    Terminal window
    dts login
    This command opens a browser window to complete the OAuth flow and saves the tokens securely on your local system.
  3. 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"]
}
}
}
  1. Restart Claude Desktop.

The DocsToSheets MCP server exposes the following tools to authorized clients:

  • 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 (Requires mcp.write scope).
  • 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 (Requires mcp.write scope).
  • mailboxes_update(mailboxId, name, isActive): Renames a mailbox or toggles its active/inactive status to temporarily pause document ingestion (Requires mcp.write scope).
  • 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 (Requires mcp.write scope).
  • mailboxes_delete(mailboxId): Permanently deletes a mailbox (Requires mcp.write scope).
  • mailbox_shares_list(mailboxId): Lists all users who currently have shared access to this mailbox (Requires mcp.write scope).
  • mailbox_shares_create(mailboxId, email): Shares access to this mailbox with another user’s email address (Requires mcp.write scope).
  • mailbox_shares_delete(mailboxId, shareId): Revokes a mailbox share and removes user access (Requires mcp.write scope).
  • 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 (Requires mcp.write scope).
  • 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 (Requires mcp.write scope).
  • 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 (Requires mcp.write scope).
  • export_csv(mailboxId, includeDocumentId): Compiles all extractions from a mailbox and exports them as a plain-text CSV block (Read-only).
  • 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}, or integration:{provider}) (Read-only).
  • integrations_status: Lists external integration statuses for linked Google Drive and Microsoft OneDrive accounts (Read-only).
  • 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).