返回市场
MCP服务器

MCP服务器

作者:thoughtspot21 星标更新:2025-11-18

项目介绍

<p align="center"> <img src="https://raw.githubusercontent.com/thoughtspot/visual-embed-sdk/main/static/doc-images/images/TS-Logo-black-no-bg.svg" width=120 align="center" alt="ThoughtSpot" /> </p> <br/>

ThoughtSpot MCP 服务器 <br/> MCP 服务器 静态徽章 GitHub 分支检查运行 覆盖率状态 <a href="https://developer.thoughtspot.com/join-discord" target="_blank"> <img alt="Discord: ThoughtSpot" src="https://img.shields.io/discord/1143209406037758065?style=flat-square&label=Chat%20on%20Discord" /> </a>

ThoughtSpot MCP 服务器提供基于 OAuth 的安全身份验证,并提供一组工具来查询和检索来自您的 ThoughtSpot 实例的相关数据。它是一个托管在 Cloudflare 上的远程服务器。

如果您没有 ThoughtSpot 账户,请在此处免费创建一个:这里

了解更多关于 ThoughtSpot

加入我们的 Discord 获取支持。

目录

连接

如果使用支持远程 MCP 的客户端(如 Claude.ai 等),只需输入:

MCP 服务器 URL:

https://agent.thoughtspot.app/mcp

首选认证方法:OAuth

  • 对于 OpenAI ChatGPT 深度研究,添加 URL 如下:
https://agent.thoughtspot.app/openai/mcp

要在不支持远程 MCP 的 MCP 客户端(如 Claude Desktop、Windsurf、Cursor 等)中配置此 MCP 服务器,请在 MCP 客户端设置中添加以下配置:

{
  "mcpServers": {
    "ThoughtSpot": {
      "command": "npx",
      "args": [
         "mcp-remote",
         "https://agent.thoughtspot.app/mcp"
      ]
    }
  }
}

有关任何错误或更多详细信息,请参阅 故障排除 部分。

使用

  1. 连接完成后,ThoughtSpot 数据源会在资源部分显示。
  2. 选择一个数据源(资源),以设置查询上下文。
  3. 现在您可以提出分析问题,Claude 可以决定使用相关的 ThoughtSpot 工具。

请观看下面的视频以获得完整的演示。

演示

这是一个使用 Claude Desktop 的演示视频。

https://github.com/user-attachments/assets/72a5383a-7b2a-4987-857a-b6218d7eea22

Loom 上观看

API 中的使用

ThoughtSpot 的远程 MCP 服务器可以在支持调用 MCP 工具的 LLM API 中使用。

以下是与常见 LLM 提供商的示例:

OpenAI 响应 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": "如何增加我的销售额?"
}'

有关如何使用 OpenAI API 和 MCP 工具调用的更多详细信息,请参阅 此处

Claude MCP 连接器

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": "如何增加我的销售额?"
    }],
    "mcp_servers": [
      {
        "type": "url",
        "url": "https://agent.thoughtspot.app/bearer/mcp",
        "name": "thoughtspot",
        "authorization_token": "$TS_AUTH_TOKEN@my-thoughtspot-instance.thoughtspot.cloud"
      }
    ]
  }'

注意:在 authorization_token 字段中,我们已附加了 ThoughtSpot 实例主机名,并用 @ 符号连接到 TS_AUTH_TOKEN

有关 Claude MCP 连接器的更多详细信息,请参阅 此处

Gemini API

可以使用 Gemini Python/Typescript SDK 来使用 MCP 工具。以下是一个使用 Typescript 的示例:

import { GoogleGenAI, FunctionCallingConfigMode , mcpToTool} from '@google/genai';
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

// 创建用于 stdio 连接的服务器参数
const serverParams = new StreamableHTTPClientTransport(new URL("https://agent.thoughtspot.app/bearer/mcp"), {
    requestInit: {
        headers: {
            "Authorization": "Bearer $TS_AUTH_TOKEN", // 请参阅下方如何获取 $TS_AUTH_TOKEN
            "x-ts-host": "my-thoughtspot-instance.thoughtspot.cloud"
        },
    }
});

const client = new Client(
  {
    name: "example-client",
    version: "1.0.0"
  }
);

// 配置客户端
const ai = new GoogleGenAI({});

// 初始化客户端和服务器之间的连接
await client.connect(serverParams);

// 向模型发送带有 MCP 工具的请求
const response = await ai.models.generateContent({
  model: "gemini-2.5-flash",
  contents: `伦敦今天的天气怎么样?`,
  config: {
    tools: [mcpToTool(client)],  // 使用会话,将自动调用工具
    // 如果您**不想**让 SDK 自动调用工具,请取消注释以下内容
    // automaticFunctionCalling: {
    //   disable: true,
    // },
  },
});
console.log(response.text)

// 关闭连接
await client.close();

有关 Gemini API MCP 工具调用的更多详细信息,请参阅 此处

使用 Google ADK + Python 的示例可以在此处找到:此处

Gemini CLI 扩展

ThoughtSpot MCP 服务器也可以作为 Gemini CLI 扩展安装。

gemini extensions install https://github.com/thoughtspot/mcp-server

有关 Gemini CLI 的更多信息,请参阅 此处

如何为 API 获取 TS_AUTH_TOKEN?

对于 API 使用,您需要使用带有 secret_key 的令牌端点生成特定用户/角色的 API_TOKEN,更多详细信息请参阅 此处

功能

  • OAuth 认证:以自己的身份访问数据。
    • 支持动态客户端注册 (DCR)。
    • 允许任何 MCP 主机。让我们使世界事实驱动。
  • 工具
    • ping:测试连接性和认证。
    • getRelevantQuestions:根据用户查询从 ThoughtSpot 分析中获取相关数据问题。
    • getAnswer:从 ThoughtSpot 分析中获取特定问题的答案。
    • createLiveboard:从答案列表创建实时板。
    • getDataSourceSuggestions:为给定查询获取数据源建议。
  • MCP 资源
    • datasources:用户可访问的 ThoughtSpot 数据模型列表。

支持的传输方式

手动客户端注册

对于尚未支持动态客户端注册的 MCP 主机,或者需要静态添加 OAuth 客户端 ID 等情况,前往 此页面,注册新客户端并复制详细信息。最相关的值是 OAuth 客户端 IDOAuth 客户端密钥,当在 MCP 客户端(ChatGPT/Claude 等)中添加 ThoughtSpot 作为 MCP 连接器时需要添加这些值。生成的客户端详细信息仅在生成时可用,之后不可再参考。

关联到 ThoughtSpot 实例

手动客户端注册还允许关联到特定的 ThoughtSpot 实例,这样您的用户在进行授权流程时无需输入 ThoughtSpot 实例 URL。在注册 OAuth 客户端时,将 ThoughtSpot URL 添加到适当的位置。

自托管

使用发布的 Docker 镜像在自己的环境中部署 MCP 服务器。

详情请参阅 此处

Stdio 支持(备用)

如果您由于 ThoughtSpot 实例上的连接限制而无法使用远程 MCP 服务器,您可以使用 npm 包通过 stdio 本地传输。

这是如何配置 stdio 与 MCP 客户端:

{
  "mcpServers": {
    "ThoughtSpot": {
      "command": "npx",
      "args": [
         "@thoughtspot/mcp-server"
      ],
      "env": {
         "TS_INSTANCE": "<您的 ThoughtSpot 实例 URL>",
         "TS_AUTH_TOKEN": "<ThoughtSpot 访问令牌>"
      }
    }
  }
}

如何获取 TS_AUTH_TOKEN

  • 转到 ThoughtSpot => 开发 => Rest Playground v2.0
  • 认证 => 获取全访问令牌
  • 向下滚动并展开“正文”
  • 添加您的“用户名”和“密码”。
  • 设置您希望令牌有效的“有效期”。
  • 在右下角点击“尝试一下”。
  • 您应在响应中收到一个令牌,这就是承载令牌。

获取 TS_AUTH_TOKEN 的另一种方式

故障排除

由于 CORS/SAML 导致的 OAuth 错误。

确保在您的 ThoughtSpot 实例中添加以下条目:

CORS

  • 转到 ThoughtSpot => 开发 => 安全设置
  • 点击“编辑”
  • 将 "agent.thoughtspot.app" 添加到“CORS 白名单域”。

SAML(需要管理员权限)

  • 转到 ThoughtSpot => 开发
  • 如果左侧有“所有组织”选项卡,请转到该选项卡。
  • 点击“安全设置”
  • 点击“编辑”
  • 将 "agent.thoughtspot.app" 添加到“SAML 重定向域”。

由于 Node 问题导致的 MCP 服务器安装错误

  • 确保您的机器上已安装 Node。
  • 确保 Node 版本 >=18。
  • 使用命令 node -v 检查 Node 版本。

从 MCP 服务器收到 500 错误

  • 确保 MCP 服务器连接的 ThoughtSpot 集群正在运行。
  • 如果错误持续存在,请收集从 MCP 客户端获取的日志以及出现问题的大致时间。
  • Discord 上寻求支持。
  • 在此存储库中创建一个问题以获取帮助。
  • 提交 ThoughtSpot 支持案例 并附上所有相关文件。

过期的 MCP 认证

  • 如果由于某种原因 ThoughtSpot MCP 服务器反复失败认证,您可以执行 rm -rf ~/.mcp-auth
  • 这将删除所有过期的认证信息,并重新启动认证流程。

贡献

本地开发

  1. 安装依赖项
    npm install
    
  2. 设置环境变量
    • 复制 .dev.vars 并填写您的 ThoughtSpot 实例 URL 和访问令牌。
  3. 启动开发服务器
    npm run dev
    

端点

  • /mcp:MCP HTTP 流式传输端点
  • /sse:MCP 的服务端事件
  • /api:作为 HTTP 端点公开的 MCP 工具
  • /authorize, /token, /register:OAuth 端点
  • /bearer/mcp, /bearer/sse:作为承载认证而不是 OAuth 的 MCP 端点,主要用于 API 或 OAuth 不起作用的情况。

MCP 服务器,© ThoughtSpot, Inc. 2025