Skip to main content
Glama

SingleStore MCP Server

单店 MCP 服务器

铁匠徽章

用于与 SingleStore 数据库交互的模型上下文协议 (MCP) 服务器。该服务器提供用于查询表、描述模式和生成 ER 图的工具。

特征

  • 列出数据库中的所有表

  • 执行自定义 SQL 查询

  • 获取详细的表信息,包括架构和示例数据

  • 生成数据库模式的 Mermaid ER 图

  • SSL 支持,可自动获取 CA 包

  • 正确的错误处理和 TypeScript 类型安全

Related MCP server: MCP PostgreSQL Server

先决条件

  • Node.js 16 或更高版本

  • npm 或 yarn

  • 访问 SingleStore 数据库

  • SingleStore CA 包(自动从门户获取)

安装

通过 Smithery 安装

要通过Smithery自动为 Claude Desktop 安装 SingleStore MCP 服务器:

npx -y @smithery/cli install @madhukarkumar/singlestore-mcp-server --client claude
  1. 克隆存储库:

git clone <repository-url> cd mcp-server-singlestore
  1. 安装依赖项:

npm install
  1. 构建服务器:

npm run build

环境变量

必需的环境变量

服务器需要以下环境变量来进行数据库连接:

SINGLESTORE_HOST=your-host.singlestore.com SINGLESTORE_PORT=3306 SINGLESTORE_USER=your-username SINGLESTORE_PASSWORD=your-password SINGLESTORE_DATABASE=your-database

所有这些环境变量都是服务器与 SingleStore 数据库建立连接所必需的。该连接使用 SSL 和 SingleStore CA 捆绑包,该捆绑包会自动从 SingleStore 门户获取。

可选环境变量

对于 SSE(服务器发送事件)协议支持:

SSE_ENABLED=true # Enable the SSE HTTP server (default: false if not set) SSE_PORT=3333 # HTTP port for the SSE server (default: 3333 if not set)

设置环境变量

  1. 在您的 Shell 中:在运行服务器之前在终端中设置变量:

    export SINGLESTORE_HOST=your-host.singlestore.com export SINGLESTORE_PORT=3306 export SINGLESTORE_USER=your-username export SINGLESTORE_PASSWORD=your-password export SINGLESTORE_DATABASE=your-database
  2. 在客户端配置文件中:将变量添加到您的 MCP 客户端配置文件中,如下面的集成部分所示。

用法

协议支持

该服务器支持两种客户端集成协议:

  1. MCP 协议:使用 stdio 通信的标准模型上下文协议,由 Claude Desktop、Windsurf 和 Cursor 使用。

  2. SSE 协议:通过 HTTP 向需要实时数据流的基于 Web 的客户端和应用程序发送服务器发送事件。

两种协议都公开相同的工具和功能,允许您根据用例选择最佳的集成方法。

可用工具

  1. 列表表

    • 列出数据库中的所有表

    • 无需参数 GXP8

  2. 查询表

    • 执行自定义 SQL 查询

    • 参数:

      • 查询:SQL 查询字符串 GXP9

  3. 描述表

    • 获取表的详细信息

    • 参数:

      • 表:表名GXP10

  4. 生成图表

    • 生成数据库模式的 Mermaid ER 图

    • 无需参数 GXP11

  5. 运行读取查询

    • 在数据库上执行只读(SELECT)查询

    • 参数:

      • 查询:执行 GXP12 的 SQL SELECT 查询

  6. 创建表

    • 在数据库中创建具有指定列和约束的新表

    • 参数:

      • table_name:要创建的表的名称

      • columns:列定义数组

      • table_options:可选表配置 GXP13

  7. 生成合成数据

    • 生成合成数据并将其插入现有表中

    • 参数:

      • table:要插入数据的表的名称

      • count:要生成的行数(默认值:100)

      • column_generators:针对特定列的自定义生成器

      • batch_size:每批插入的行数(默认值:1000)GXP14

  8. 优化SQL

    • 使用 PROFILE 分析 SQL 查询并提供优化建议

    • 参数:

      • 查询:用于分析和优化 GXP15 的 SQL 查询

    • 响应内容包括:

      • 原始查询

      • 性能概况摘要(总运行时间、编译时间、执行时间)

      • 检测到的瓶颈列表

      • 具有影响级别(高/中/低)的优化建议

      • 有关索引、连接、内存使用和其他优化的建议

独立运行

  1. 构建服务器:

npm run build
  1. 仅使用 MCP 协议运行服务器:

node build/index.js
  1. 使用 MCP 和 SSE 协议运行服务器:

SSE_ENABLED=true SSE_PORT=3333 node build/index.js

使用 SSE 协议

启用 SSE 后,服务器将公开以下 HTTP 端点:

  1. 根端点

    GET /

    返回服务器信息和可用端点。

  2. 健康检查

    GET /health

    返回有关服务器的状态信息。

  3. 上交所连接

    GET /sse

    建立服务器发送事件连接以进行实时更新。

  4. 列表工具

    GET /tools

    返回所有可用工具的列表,与 MCP list_tools功能相同。

    还支持 MCP Inspector 兼容性的 POST 请求:

    POST /tools Content-Type: application/json { "jsonrpc": "2.0", "id": "request-id", "method": "mcp.list_tools", "params": {} }
  5. 呼叫工具

    POST /call-tool Content-Type: application/json { "name": "tool_name", "arguments": { "param1": "value1", "param2": "value2" }, "client_id": "optional_sse_client_id_for_streaming_response" }

    使用提供的参数执行工具。

    • 如果提供了client_id ,则响应将流式传输到该 SSE 客户端。

    • 如果省略client_id ,则直接在HTTP响应中返回响应。

    还支持标准 MCP 格式以实现 MCP Inspector 兼容性:

    POST /call-tool Content-Type: application/json { "jsonrpc": "2.0", "id": "request-id", "method": "mcp.call_tool", "params": { "name": "tool_name", "arguments": { "param1": "value1", "param2": "value2" }, "_meta": { "client_id": "optional_sse_client_id_for_streaming_response" } } }

SSE 事件类型

使用 SSE 连接时,服务器发送以下事件类型:

  1. 消息(未命名事件):当 SSE 连接成功建立时发送。

  2. open :附加连接建立事件。

  3. message :用于所有 MCP 协议消息,包括工具启动、结果和错误事件。

所有事件均遵循 MCP 协议使用的 JSON-RPC 2.0 格式。系统使用标准message事件类型,以兼容 MCP Inspector 和大多数 SSE 客户端库。

JavaScript 客户端示例

// Connect to SSE endpoint const eventSource = new EventSource('http://localhost:3333/sse'); let clientId = null; // Handle connection establishment via unnamed event eventSource.onmessage = (event) => { const data = JSON.parse(event.data); if (data.type === 'connection_established') { clientId = data.clientId; console.log(`Connected with client ID: ${clientId}`); } }; // Handle open event eventSource.addEventListener('open', (event) => { console.log('SSE connection opened via open event'); }); // Handle all MCP messages eventSource.addEventListener('message', (event) => { const data = JSON.parse(event.data); if (data.jsonrpc === '2.0') { if (data.result) { console.log('Tool result:', data.result); } else if (data.error) { console.error('Tool error:', data.error); } else if (data.method === 'mcp.call_tool.update') { console.log('Tool update:', data.params); } } }); // Call a tool with streaming response (custom format) async function callTool(name, args) { const response = await fetch('http://localhost:3333/call-tool', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: name, arguments: args, client_id: clientId }) }); return response.json(); } // Call a tool with streaming response (MCP format) async function callToolMcp(name, args) { const response = await fetch('http://localhost:3333/call-tool', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 'request-' + Date.now(), method: 'mcp.call_tool', params: { name: name, arguments: args, _meta: { client_id: clientId } } }) }); return response.json(); } // Example usage callTool('list_tables', {}) .then(response => console.log('Request accepted:', response));

与 MCP Inspector 一起使用

MCP Inspector 是一款基于浏览器的工具,用于测试和调试 MCP 服务器。要将其与此服务器配合使用,请执行以下操作:

  1. 使用一个命令启动服务器和 MCP 检查器:

    npm run inspector

    或者仅启动服务器:

    npm run start:inspector
  2. 要单独安装并运行 MCP Inspector:

    npx @modelcontextprotocol/inspector

    检查器将在您的默认浏览器中打开。

  3. 当 MCP 检查器打开时:

    a. 在连接字段中输入 URL:

    http://localhost:8081

    注意:实际端口可能因您的配置而异。请检查服务器启动日志,了解实际使用的端口。服务器将输出:

    MCP SingleStore SSE server listening on port XXXX

    b. 确保选择“SSE”作为传输类型

    c. 点击“连接”

  4. 如果您遇到连接问题,请尝试以下替代方法:

    a.尝试连接到特定端点:

    http://localhost:8081/stream

    b.尝试使用您机器的实际 IP 地址:

    http://192.168.1.x:8081

    c.如果在 Docker 中运行:

    http://host.docker.internal:8081
  5. 调试连接问题

    a. 通过在浏览器中访问http://localhost:8081来验证服务器是否正在运行

    b. 检查服务器日志中的连接尝试

    c. 尝试重启服务器和检查器

    d. 确保没有其他服务正在使用端口 8081

    e. 使用提供的脚本测试 SSE 连接:

    npm run test:sse

    或者手动使用 curl:

    curl -N http://localhost:8081/sse

    f. 验证您的防火墙设置是否允许连接到端口 8081

  6. 一旦连接,检查器将显示所有可用的工具并允许您以交互方式测试它们。

⚠️注意:使用 MCP 检查器时,必须使用完整的 URL,包括http://前缀。

MCP 客户端集成

在 Claude Desktop 中安装

  1. 将服务器配置添加到位于以下位置的 Claude Desktop 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

{ "mcpServers": { "singlestore": { "command": "node", "args": ["path/to/mcp-server-singlestore/build/index.js"], "env": { "SINGLESTORE_HOST": "your-host.singlestore.com", "SINGLESTORE_PORT": "3306", "SINGLESTORE_USER": "your-username", "SINGLESTORE_PASSWORD": "your-password", "SINGLESTORE_DATABASE": "your-database", "SSE_ENABLED": "true", "SSE_PORT": "3333" } } } }

SSE_ENABLED 和 SSE_PORT 变量是可选的。如果您想启用支持 SSE 和标准 MCP 协议的 HTTP 服务器,请添加这两个变量。

  1. 重新启动Claude桌面应用程序

  2. 在与 Claude 的对话中,您现在可以使用 SingleStore MCP 服务器:

use_mcp_tool({ server_name: "singlestore", tool_name: "list_tables", arguments: {} })

在 Windsurf 中安装

  1. 将服务器配置添加到位于以下位置的 Windsurf 配置文件:

    • macOS: ~/Library/Application Support/Windsurf/config.json

    • Windows: %APPDATA%\Windsurf\config.json

{ "mcpServers": { "singlestore": { "command": "node", "args": ["path/to/mcp-server-singlestore/build/index.js"], "env": { "SINGLESTORE_HOST": "your-host.singlestore.com", "SINGLESTORE_PORT": "3306", "SINGLESTORE_USER": "your-username", "SINGLESTORE_PASSWORD": "your-password", "SINGLESTORE_DATABASE": "your-database", "SSE_ENABLED": "true", "SSE_PORT": "3333" } } } }

SSE_ENABLED 和 SSE_PORT 变量是可选的,但通过 SSE HTTP 服务器启用附加功能。

  1. 重启风帆冲浪

  2. 在您与 Windsurf 中的 Claude 对话时,当 Claude 需要访问数据库信息时,SingleStore MCP 工具将自动可用。

在光标处安装

  1. 将服务器配置添加到您的 Cursor 设置中:

    • 打开游标

    • 前往“设置”(齿轮图标)> 扩展程序 > Claude AI > MCP 服务器

    • 添加一个新的 MCP 服务器,配置如下:

{ "singlestore": { "command": "node", "args": ["path/to/mcp-server-singlestore/build/index.js"], "env": { "SINGLESTORE_HOST": "your-host.singlestore.com", "SINGLESTORE_PORT": "3306", "SINGLESTORE_USER": "your-username", "SINGLESTORE_PASSWORD": "your-password", "SINGLESTORE_DATABASE": "your-database", "SSE_ENABLED": "true", "SSE_PORT": "3333" } } }

SSE_ENABLED 和 SSE_PORT 变量允许 Web 应用程序通过 HTTP 连接到服务器并通过服务器发送事件接收实时更新。

  1. 重启光标

  2. 在 Cursor 中使用 Claude AI 时,SingleStore MCP 工具将可用于数据库操作。

安全注意事项

  1. 切勿将凭证提交给版本控制

  2. 使用环境变量或安全配置管理

  3. 考虑在生产环境中使用连接池机制

  4. 在 SingleStore 中实施适当的访问控制和用户权限

  5. 保持 SingleStore CA 包为最新版本

发展

项目结构

mcp-server-singlestore/ ├── src/ │ └── index.ts # Main server implementation ├── package.json ├── tsconfig.json ├── README.md └── CHANGELOG.md

建筑

npm run build

测试

npm test

故障排除

  1. 连接问题

    • 验证环境变量中的凭据和主机信息

    • 检查 SSL 配置

    • 确保数据库可以通过网络访问

    • 检查您的防火墙设置以允许到您的 SingleStore 数据库的出站连接

  2. 构建问题

    • 清除 node_modules 并重新安装依赖项

    • 验证 TypeScript 配置

    • 检查 Node.js 版本兼容性(应为 16+)

  3. MCP 集成问题

    • 验证客户端配置中服务器的 build/index.js 文件的路径是否正确

    • 检查客户端配置中所有环境变量是否均已正确设置

    • 更改配置后重新启动客户端应用程序

    • 检查客户端日志中是否有与 MCP 服务器相关的错误消息

    • 首先尝试独立运行服务器,以验证其在客户端之外是否正常工作

贡献

  1. 分叉存储库

  2. 创建功能分支

  3. 提交你的更改

  4. 推送到分支

  5. 创建拉取请求

执照

MIT 许可证 - 详情请参阅许可证文件

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/madhukarkumar/singlestore-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server