mcpField
D
DuckDB MCP Server

DuckDB MCP Server

本地服务
github.com/mustafahasankhan数据库1933 周前更新

关于 DuckDB MCP Server

DuckDB MCP Server 是一个 MCP 服务,让 AI 助手可以通过纯 SQL 访问 DuckDB,查询本地文件、S3 存储桶和内存数据。适合需要用 AI 辅助分析数据的用户。该项目提供只读模式和 S3 凭证配置等选项。

主要功能

  1. 01通过 SQL 查询本地 CSV、Parquet 和 JSON 文件
  2. 02直接查询或缓存 S3 / GCS 存储桶数据
  3. 03统计字段类型、行数、数值与日期范围
  4. 04根据列类型给出图表类型与查询建议
  5. 05提供 DuckDB SQL 扩展的文档资源

适用场景

  1. 01让 AI 助手对本地销售数据文件做汇总分析
  2. 02将 S3 中的 Parquet 数据缓存为本地表后进行查询
  3. 03在共享数据库上以只读模式供 AI 助手访问

MCP 相关

该项目是 MCP 服务,向 Claude Desktop、Cursor、VS Code 等 MCP 客户端暴露 query、analyze_schema、analyze_data、suggest_visualizations 和 create_session 等工具,以及三个文档资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

DuckDB MCP 服务

PyPI - Version PyPI - Python Version PyPI - License

一个 Model Context Protocol (MCP) 服务,可让 AI 助手全面访问 DuckDB——使用纯 SQL 查询本地文件、S3 存储桶和内存数据。

DuckDB Server MCP server

🌟 什么是 DuckDB MCP Server?


功能

此服务可向任何兼容 MCP 的客户端(Claude Desktop、Cursor、VS Code 等)开放 DuckDB。助手可以:

  • 对本地 CSV、Parquet 和 JSON 文件运行任意 SQL
  • 直接查询 S3 / GCS 存储桶,或将其缓存为本地表
  • 检查架构、计算统计数据并推荐可视化图表
  • 使用 DuckDB 的分析型 SQL 扩展(窗口函数、GROUP BY ALL、SELECT * EXCLUDE 等)

工具

工具说明
query执行任意 SQL 查询。结果最多返回 10 000 行。
analyze_schema描述文件或表的列和类型。
analyze_data行数、数值统计信息(最小值/最大值/平均值/中位数)、日期范围、最常见的分类值。
suggest_visualizations根据列类型推荐图表类型和可直接运行的 SQL 查询。
create_session创建或重置会话,以跟踪跨调用上下文。

资源

助手始终可以使用 3 个内置的 XML 文档资源:

资源 URI内容
duckdb-ref://friendly-sqlDuckDB SQL 扩展(GROUP BY ALL、SELECT * EXCLUDE/REPLACE、FROM-first 语法等)
duckdb-ref://data-import加载 CSV、Parquet、JSON 和 S3/GCS 数据;glob 模式;读取多个文件
duckdb-ref://visualization时间序列图、柱状图、散点图和热力图的图表模式与查询模板

要求

  • Python 3.10+
  • 兼容 MCP 的客户端

安装

pip install duckdb-mcp-server

从源代码安装:

git clone https://github.com/mustafahasankhan/duckdb-mcp-server.git
cd duckdb-mcp-server
pip install -e .

配置

duckdb-mcp-server --db-path <path> [options]
标志必需说明
--db-path是DuckDB 文件的路径。如果文件不存在,则自动创建。
--readonly否以只读模式打开数据库。如果文件不存在,则报错。
--s3-region否AWS 区域。默认使用 AWS_DEFAULT_REGION 环境变量,其次使用 us-east-1。
--s3-profile否AWS 配置文件名称。默认使用 AWS_PROFILE 环境变量,其次使用 default。
--creds-from-env否从环境中读取 AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY。

客户端设置

Claude Desktop

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):

{
  "mcpServers": {
    "duckdb": {
      "command": "duckdb-mcp-server",
      "args": ["--db-path", "~/claude-duckdb/data.db"]
    }
  }
}
使用 S3 访问权限
{
  "mcpServers": {
    "duckdb": {
      "command": "duckdb-mcp-server",
      "args": [
        "--db-path", "~/claude-duckdb/data.db",
        "--s3-region", "us-east-1",
        "--creds-from-env"
      ],
      "env": {
        "AWS_ACCESS_KEY_ID": "YOUR_KEY",
        "AWS_SECRET_ACCESS_KEY": "YOUR_SECRET"
      }
    }
  }
}
只读模式

适用于数据库由多人共享或单独管理的情况:

{
  "mcpServers": {
    "duckdb": {
      "command": "duckdb-mcp-server",
      "args": ["--db-path", "/shared/analytics.db", "--readonly"]
    }
  }
}

对话示例

查询本地文件

“加载 sales.csv,并显示收入最高的 5 种产品。”

SELECT
    product_name,
    SUM(quantity * price) AS revenue
FROM read_csv('sales.csv')
GROUP BY ALL
ORDER BY revenue DESC
LIMIT 5;
使用 S3 数据

“缓存本月来自 S3 的注册数据,并按天汇总。”

-- Step 1: cache the remote data locally
CREATE TABLE signups AS
  SELECT * FROM read_parquet('s3://my-bucket/signups/2026-03/*.parquet',
                             union_by_name = true);

-- Step 2: query the cached table
SELECT
    date_trunc('day', signup_at) AS day,
    COUNT(*)                     AS signups
FROM signups
GROUP BY ALL
ORDER BY day DESC;
统计分析

“为 orders 表提供统计摘要。”

助手会调用 analyze_data("orders"),返回行数、每列的数值统计信息、日期范围和最常见的分类值——无需你编写 SQL。


AWS 凭证解析顺序

  1. 环境变量(--creds-from-env):AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY
  2. 命名配置文件(--s3-profile):读取 ~/.aws/credentials
  3. 凭证链:环境变量 → 共享凭证文件 → 实例配置文件(EC2/ECS)

开发

git clone https://github.com/mustafahasankhan/duckdb-mcp-server.git
cd duckdb-mcp-server

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

pytest

许可证

欢迎贡献!请随时提交 Pull Request。 MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。