首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
mcp-server-duckdb2025-05-300分享
github
一种适用于DuckDB的模型上下文协议(MCP)服务器实现,通过MCP工具提供数据库交互功能。让大型语言模型(LLM)对其进行分析将是一件有趣的事情。DuckDB适合用于本地分析。
By ktanaka101
2025-05-300
github
详情内容

mcp-server-duckdb

PyPI - 版本
PyPI - 许可证
smithery 徽章

这是一个为 DuckDB 实现的模型上下文协议(MCP)服务器,通过 MCP 工具提供数据库交互功能。让 LLM 分析它会很有趣。DuckDB 适合本地分析。

mcp-server-duckdb MCP 服务器

概述

该服务器通过模型上下文协议与 DuckDB 数据库进行交互,允许执行查询、创建表和检查模式等数据库操作。

组件

资源

目前没有实现自定义资源。

提示

目前没有实现自定义提示。

工具

服务器实现了以下数据库交互工具:

  • query:在 DuckDB 数据库上执行任何 SQL 查询
    • 输入query(字符串)- 任何有效的 DuckDB SQL 语句
    • 输出:查询结果以文本形式返回(或对于 CREATE/INSERT 等操作返回成功消息)

[!NOTE]
服务器提供了一个统一的 query 函数,而不是单独的专业函数,因为现代 LLM 可以为任何数据库操作(SELECT、CREATE TABLE、JOIN 等)生成适当的 SQL,而无需单独的端点。

[!NOTE]
当服务器在 readonly 模式下运行时,DuckDB 的原生只读保护将被强制执行。这确保了语言模型(LLM)无法执行任何写操作(CREATE、INSERT、UPDATE、DELETE),从而保持数据完整性并防止意外更改。

配置

必填参数

  • db-path(字符串):DuckDB 数据库文件的路径
    • 如果数据库文件和父目录不存在,服务器将自动创建它们
    • 如果指定了 --readonly 且数据库文件不存在,服务器将无法启动并报错

可选参数

  • --readonly:以只读模式运行服务器(默认:false
    • 描述:设置此标志后,服务器将以只读模式运行。这意味着:
      • DuckDB 数据库将以 read_only=True 打开,防止任何写操作。
      • 如果指定的数据库文件不存在,它不会被创建。
      • 安全优势:防止语言模型(LLM)执行任何写操作,确保数据库保持不变。
    • 参考:有关 DuckDB 只读连接的更多详细信息,请参阅 DuckDB Python API 文档
  • --keep-connection:在整个服务器生命周期内重复使用单个 DuckDB 连接模式(默认:false
    • 描述:设置此标志后,将在整个服务器生命周期内重复使用单个 DuckDB 连接。启用 TEMP 对象并略微加快查询速度,但可能会对文件持有独占锁。

安装

通过 Smithery 安装

要通过 Smithery 自动为 Claude Desktop 安装 DuckDB Server:

npx -y @smithery/cli install mcp-server-duckdb --client claude

Claude Desktop 集成

在 Claude Desktop 的配置文件中配置 MCP 服务器:

MacOS

位置:~/Library/Application Support/Claude/claude_desktop_config.json

Windows

位置:%APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "duckdb": {
      "command": "uvx",
      "args": [
        "mcp-server-duckdb",
        "--db-path",
        "~/mcp-server-duckdb/data/data.db"
      ]
    }
  }
}
  • 注意:~/mcp-server-duckdb/data/data.db 应替换为 DuckDB 数据库文件的实际路径。

开发

先决条件

  • 带有 uv 包管理器的 Python
  • DuckDB Python 包
  • MCP 服务器依赖项

调试

由于 MCP 服务器基于 stdio 通信,调试可能会很困难。我们建议使用 MCP Inspector 以获得最佳的调试体验。

使用 MCP Inspector

  1. 使用 npm 安装检查器:
npx @modelcontextprotocol/inspector uv --directory ~/codes/mcp-server-duckdb run mcp-server-duckdb --db-path ~/mcp-server-duckdb/data/data.db
  1. 在浏览器中打开提供的 URL 以访问调试界面

检查器提供以下内容的可见性:

  • 请求/响应通信
  • 工具执行
  • 服务器状态
  • 错误消息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档