Skip to content

thoughtspot/mcp-server

Repository files navigation

ThoughtSpot


ThoughtSpot MCP Server
MCP Server Static Badge GitHub branch check runs Coverage Status Discord: ThoughtSpot

The ThoughtSpot MCP Server provides secure OAuth-based authentication and a set of tools for querying and retrieving relevant data from your ThoughtSpot instance. It's a remote server hosted on Cloudflare.

If you do not have a Thoughtspot account, create one for free here.

Learn more about ThoughtSpot.

Join our Discord to get support.

Table of Contents

Connect

If using a client which supports remote MCPs natively (Claude.ai etc) then just enter: MCP Server URL: https://agent.thoughtspot.app/mcp (see below for ChatGPT Deep research)

To configure this MCP server in your MCP client (such as Claude Desktop, Windsurf, Cursor, etc.) which do not support remote MCPs, add the following configuration to your MCP client settings:

{
  "mcpServers": {
    "ThoughtSpot": {
      "command": "npx",
      "args": [
         "mcp-remote",
         "https://agent.thoughtspot.app/mcp"
      ]
    }
  }
}
  • For OpenAI ChatGPT Deep Research, add the URL as:
https://agent.thoughtspot.app/openai/mcp

See the Troubleshooting section for any errors / more details.

Usage

  1. Once the connection is done, ThoughtSpot datasources would show under the resources section.
  2. Select a datasource (resource), to set the context of your query.
  3. Now you could ask analytical questions, which claude can decide to use the relevant ThoughtSpot tools for.

See the video below for a complete demo.

Demo

Here is a demo video using Claude Desktop.

ThoughtSpot-MCP-server-demo.mp4

Watch on Loom

Usage in APIs

ThoughtSpot's remote MCP server can be used in LLM APIs which support calling MCP tools.

Here are examples with the common LLM providers:

OpenAI Responses API

curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
  "model": "gpt-4.1",
  "tools": [
    {
      "type": "mcp",
      "server_label": "thoughtspot",
      "server_url": "https://agent.thoughtspot.app/bearer/mcp",
      "headers": {
        "Authorization": "Bearer $TS_AUTH_TOKEN",
        "x-ts-host": "my-thoughtspot-instance.thoughtspot.cloud"
      }
    }
  ],
  "input": "How can I increase my sales ?"
}'

More details on how can you use OpenAI API with MCP tool calling can be found here.

Claude MCP Connector

curl https://api.anthropic.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: mcp-client-2025-04-04" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1000,
    "messages": [{
      "role": "user", 
      "content": "How do I increase my sales ?"
    }],
    "mcp_servers": [
      {
        "type": "url",
        "url": "https://agent.thoughtspot.app/bearer/mcp",
        "name": "thoughtspot",
        "authorization_token": "$TS_AUTH_TOKEN@my-thoughtspot-instance.thoughtspot.cloud"
      }
    ]
  }'

Note: In the authorization_token field we have suffixed the ThoughtSpot instance host as well with the @ symbol to the TS_AUTH_TOKEN.

More details on Claude MCP connector here.

How to get TS_AUTH_TOKEN for APIs ?

For API usage, you would the token endpoints with a secret_key to generate the API_TOKEN for a specific user/role, more details here.

Features

  • OAuth Authentication: Access your data, as yourself.
  • Tools:
    • ping: Test connectivity and authentication.
    • getRelevantQuestions: Get relevant data questions from ThoughtSpot analytics based on a user query.
    • getAnswer: Get the answer to a specific question from ThoughtSpot analytics.
    • createLiveboard: Create a liveboard from a list of answers.
  • MCP Resources:
    • datasources: List of ThoughtSpot Data models the user has access to.

Supported transports

Stdio support (fallback)

If you are unable to use the remote MCP server due to connectivity restrictions on your Thoughtspot instance. You could use the stdio local transport using the npm package.

Here is how to configure stdio with MCP Client:

{
  "mcpServers": {
    "ThoughtSpot": {
      "command": "npx",
      "args": [
         "@thoughtspot/mcp-server"
      ],
      "env": {
         "TS_INSTANCE": "<your Thoughtspot Instance URL>",
         "TS_AUTH_TOKEN": "<ThoughtSpot Access Token>"
      }
    }
  }
}

How to obtain a TS_AUTH_TOKEN ?

  • Go to ThoughtSpot => Develop => Rest Playground v2.0
  • Authentication => Get Full access token
  • Scroll down and expand the "body"
  • Add your "username" and "password".
  • Put whatever "validity_time" you want the token to be.
  • Click on "Try it out" on the bottom right.
  • You should get a token in the response, thats the bearer token.

Alternative way to get TS_AUTH_TOKEN

Troubleshooting

Oauth errors due to CORS/SAML.

Make sure to add the following entries in your ThoughtSpot instance:

CORS

  • Go to ThoughtSpot => Develop => Security settings
  • Click "Edit"
  • Add "agent.thoughtspot.app" to the the "CORS whitelisted domains".

SAML (need to be Admin)

  • Go to ThoughtSpot => Develop
  • Go to "All Orgs" Tab on the left panel if there is one.
  • Click "Security settings"
  • Click "Edit"
  • Add "agent.thoughtspot.app" to the the "SAML redirect domains".

MCP server install error due to node issues

  • Make sure node is installed on your machine.
  • Make sure the node version is >=18
  • Check the node version by using the command node -v

500 error from MCP server

  • Make sure the ThoughtSpot cluster the MCP server is connected to is up and running.
  • If the error persists, please collect the logs that you get from the MCP client and the approximate time when the issue occurred.
  • Reach out on Discord to get support.
  • Create a issue on this repository to get help.
  • Submit a ThoughtSpot support case with all the artifacts.

Stale MCP auth

  • If for some reason the ThoughtSpot MCP server is failing authentication repeatedly, you can do rm -rf ~/.mcp-auth.
  • This will remove all stale authentication info, and restart the auth flow again.

Contributing

Local Development

  1. Install dependencies:
    npm install
  2. Set up environment variables:
    • Copy .dev.vars and fill in your ThoughtSpot instance URL and access token.
  3. Start the development server:
    npm run dev

Endpoints

  • /mcp: MCP HTTP Streaming endpoint
  • /sse: Server-sent events for MCP
  • /api: MCP tools exposed as HTTP endpoints
  • /authorize, /token, /register: OAuth endpoints
  • /bearer/mcp, /bearer/sse: MCP endpoints as bearer auth instead of Oauth, mainly for use in APIs or in cases where Oauth is not working.

MCP Server, © ThoughtSpot, Inc. 2025