Token导航 LogoToken导航

MCP Server · 数据服务

QuestDB MCP Server

一个用于QuestDB的模型上下文协议(MCP)服务器,使AI助手能够通过查询和插入数据的工具与QuestDB数据库交互。

stdio官方级别未说明来源级核验工具 4
数据库交互TypeScript数据分析

快速开始

作者 / 组织
brunoprela
提供方
brunoprela
运行时
Docker

工具数量

4

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

3

仓库热度

收录来源

2 个

MCP World

选型结论

QuestDB MCP Server 属于数据服务类 MCP Server,公开资料标注 4 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前先确认权限范围。

分类

数据服务

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

docker run \

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Docker,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 4 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

QuestDB MCP服务器

QuestDB的模型上下文协议(MCP)服务器,使AI助手能够通过查询和插入数据的工具与QuestDB数据库进行交互。

特性

  • 查询执行:对具有结构化输出的QuestDB表执行SELECT查询
  • 数据插入:使用InfluxDB线路协议将数据插入QuestDB表
  • 表格管理:列出表并描述表架构
  • 自动模式创建:插入时会自动创建表和列
  • 类型安全:通过Zod模式验证完全支持TypeScript
  • 结构化输出:所有工具都返回带有输出模式的结构化内容
  • MCP日志记录:集成MCP日志消息,以提高可观察性
  • 错误处理:全面的错误处理和优雅的降级
  • 服务器说明:AI助手的内置服务器指令
  • 优雅地关闭:正确清理信号情报/信号机信号

先决条件

安装

作为一个包裹

从npm安装:

npm install questdbmcp

注: 此包在npm上公开可用。安装或使用它不需要身份验证或配置。

来源

  1. 克隆此存储库或导航到项目目录:
   cd questdbmcp
  1. 安装依赖项:
   npm install
  1. 构建项目:
   npm run build

配置

可以使用环境变量配置服务器:

  • QUESTDB_HOST -QuestDB主机(默认值: localhost)
  • QUESTDB_PORT -QuestDB端口(默认值: 9000)
  • QUESTDB_USERNAME -查询数据库用户名(可选,用于身份验证)
  • QUESTDB_PASSWORD -查询数据库密码(可选,用于身份验证)
  • QUESTDB_AUTO_FLUSH_ROWS -N行后自动冲洗(可选)
  • QUESTDB_AUTO_FLUSH_INTERVAL -自动刷新间隔(毫秒)(可选)

用法

此软件包有两种使用方式:

1.CLI用法

直接运行MCP服务器:

npm start

或用于开发:

npm run dev

或全局安装:

npm install -g questdbmcp
questdbmcp

2.图书馆使用

在TypeScript项目中作为依赖项安装:

npm install questdbmcp
基本用法
import { QuestDBMCPServer, loadConfig } from 'questdbmcp';

// Load configuration from environment variables
const config = loadConfig();

// Create server instance
const server = new QuestDBMCPServer(config);

// Start the server
await server.run();
自定义配置
import { QuestDBMCPServer, QuestDBConfig } from 'questdbmcp';

const config: QuestDBConfig = {
  host: 'localhost',
  port: 9000,
  username: 'admin',
  password: 'quest',
};

const server = new QuestDBMCPServer(config, {
  setupProcessHandlers: false, // Don't set up process handlers when using as library
  serverName: 'my-questdb-server',
  serverVersion: '1.0.0',
  instructions: 'Custom server instructions...',
});

await server.run();
使用自定义运输
import { QuestDBMCPServer, QuestDBConfig } from 'questdbmcp';
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
import express from 'express';

const config: QuestDBConfig = {
  host: 'localhost',
  port: 9000,
};

const server = new QuestDBMCPServer(config, {
  setupProcessHandlers: false,
});

const app = express();
app.use(express.json());

app.post('/mcp', async (req, res) => {
  const transport = new StreamableHTTPServerTransport({
    sessionIdGenerator: undefined,
    enableJsonResponse: true,
  });

  res.on('close', () => {
    transport.close();
  });

  await server.server.connect(transport);
  await transport.handleRequest(req, res, req.body);
});

app.listen(3000, () => {
  console.log('MCP server running on http://localhost:3000/mcp');
});
访问内部组件
import { QuestDBMCPServer } from 'questdbmcp';

const server = new QuestDBMCPServer(config);

// Access the underlying MCP server
const mcpServer = server.server;

// Access the QuestDB client
const client = server.questDBClient;

// Access the logger
const logger = server.log;

// Use the client directly
const tables = await client.listTables();
const result = await client.query('SELECT * FROM my_table LIMIT 10');

// Use the logger
await logger.info('Custom log message', { metadata: 'value' });
创建自定义工具
import { QuestDBMCPServer, QuestDBConfig } from 'questdbmcp';
import { z } from 'zod';

const config: QuestDBConfig = {
  host: 'localhost',
  port: 9000,
};

const server = new QuestDBMCPServer(config, {
  setupProcessHandlers: false,
});

// Access the underlying MCP server to register custom tools
server.server.registerTool(
  'my-custom-tool',
  {
    title: 'My Custom Tool',
    description: 'A custom tool that uses QuestDB',
    inputSchema: {
      param: z.string().describe('A parameter'),
    },
  },
  async ({ param }) => {
    // Use the QuestDB client
    const client = server.questDBClient;
    const result = await client.query(`SELECT * FROM my_table WHERE col = '${param}'`);
    
    return {
      content: [
        {
          type: 'text',
          text: JSON.stringify(result, null, 2),
        },
      ],
    };
  }
);

await server.run();
关机
// Gracefully shutdown the server
await server.shutdown();
TypeScript类型

所有类型均已导出并可供使用:

import type {
  QuestDBConfig,
  QueryResult,
  QuestDBMCPServerOptions,
} from 'questdbmcp';

可用工具

1. query

在QuestDB上执行SQL SELECT查询。

参数:

  • query (字符串,必填):要执行的SQL查询(仅限SELECT查询)
  • format (字符串,可选):输出格式- json 或 csv (默认值: json)

例子:

{
  "query": "SELECT * FROM trades LIMIT 10",
  "format": "json"
}
2. insert

将数据插入QuestDB表。如果表和列不存在,则会自动创建它们。

参数:

  • table (string,必填):要插入的表的名称
  • data (object,必填):包含要插入的数据的对象

- 键是列名 - 值是数据(字符串、数字、布尔值) - 使用 timestamp 显式时间戳键(自纪元以来的毫秒数) - 如果 timestamp 未提供,使用当前时间

例子:

{
  "table": "trades",
  "data": {
    "symbol": "ETH-USD",
    "side": "sell",
    "price": 2615.54,
    "amount": 0.00044,
    "timestamp": 1699123456789
  }
}
3. list_tables

列出QuestDB数据库中的所有表。

参数: 无

4. describe_table

获取特定表的架构。

参数:

  • table (string,必填):要描述的表的名称

例子:

{
  "table": "trades"
}

QuestDB设置

Docker快速入门

docker run \
  -p 9000:9000 -p 9009:9009 -p 8812:8812 -p 9003:9003 \
  questdb/questdb:9.1.1

Homebrew快速入门(macOS)

brew install questdb

QuestDB Web控制台将在以下网址提供:http://localhost:9000

发展

建筑

npm run build

类型检查

npm run typecheck

发展模式

npm run dev

数据类型

插入工具会自动将JavaScript类型映射到QuestDB类型:

  • 字符串 → SYMBOL (索引字符串类型)
  • 数字(整数) → LONG
  • 数字(浮点数) → DOUBLE
  • 布尔 → BOOLEAN
  • 时间戳 → TIMESTAMP (使用时 timestamp 现场)

安全说明

  • 只允许通过SELECT查询 query 安全工具
  • 服务器使用QuestDB REST API进行查询,使用InfluxDB Line Protocol进行插入
  • 如果QuestDB实例需要,则支持通过用户名/密码进行身份验证

例子

插入交易数据

{
  "tool": "insert",
  "arguments": {
    "table": "trades",
    "data": {
      "symbol": "BTC-USD",
      "side": "buy",
      "price": 39269.98,
      "amount": 0.001
    }
  }
}

查询数据

{
  "tool": "query",
  "arguments": {
    "query": "SELECT symbol, price, amount FROM trades WHERE symbol = 'BTC-USD' ORDER BY timestamp DESC LIMIT 10"
  }
}

列表表格

{
  "tool": "list_tables",
  "arguments": {}
}

许可证

麻省理工学院

资源

工具与能力

工具数量

4

资源数量

0

提示词数量

0

能力标签

数据库交互TypeScript本地部署AI助手数据查询数据插入表管理

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

用自然语言查库

不用手写 SQL,直接问数据,让模型组织查询语句。

数据巡检

定期拉指标、做对比,把异常项整理成一段说明。

打通业务数据

把数据库、数仓和接口接进同一个上下文,减少导出再上传。

选择建议

值得选的地方

  • 只提供 4 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Docker,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在数据服务场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
QuestDB MCP Server

MCP World · 本页

4stdio有2 个2026-05-17
Memory 9d25f64e

MCP World

9未说明未标注1 个2026-05-17
Prisma MCP Server

MCP World

0stdio有3 个2026-05-17
Astr Bot

MCP World

0stdio有1 个2026-05-17
Getzep MCP

MCP World

9stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

QuestDB MCP Server 怎么安装?

公开资料给出的安装命令是 docker run \,运行环境为 Docker。装完后按客户端要求写进 MCP 配置,重启客户端生效。

QuestDB MCP Server 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Docker;保存后完全退出客户端再打开,配置才会生效。

QuestDB MCP Server 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

QuestDB MCP Server 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

QuestDB MCP Server 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP