DuckDB数据库交互服务

一个基于模型上下文协议(MCP)的DuckDB数据库交互服务器,提供查询、表创建和模式检查等数据库操作功能。

作者 By ktanaka101
本地部署 数据库交互 SQL查询
GitHub

mcp服务器duckdb

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

mcp-server-duckdb MCP server

概述

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

组件

资源

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

提示

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

工具

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

  • 怎么翻译:在DuckDB数据库上执行任何SQL查询

  • 输入: query (string)-任何有效的DuckDB SQL语句

  • 输出:查询结果为文本(或CREATE/INSERT等操作的成功消息)

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

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

配置

所需参数

  • db路径 (string):DuckDB数据库文件的路径

  • 如果数据库文件和父目录不存在,服务器将自动创建它们

  • 如果 --readonly 如果指定了数据库文件,但数据库文件不存在,服务器将无法启动,并出现错误

可选参数

  • –只读:以只读模式运行服务器(默认值: false)

  • 描述:设置此标志后,服务器将以只读模式运行。这意味着:

  • DuckDB数据库将通过以下方式打开 read_only=True,防止任何写入操作。

  • 如果指定的数据库文件不存在 不会 被创造出来。

  • 安全利益:防止语言模型(LLM)执行任何写入操作,确保数据库保持不变。

  • 参考:有关DuckDB中只读连接的更多详细信息,请参阅 DuckDB Python API文档.

  • –保持联系:重复使用单个DuckDB连接模式(默认: false)

  • 描述:设置此标志后,Re在整个服务器生命周期内使用单个DuckDB连接。启用TEMP对象和稍快的查询,但可以对文件进行独占锁定。

安装

通过Smithery安装

通过以下方式自动安装适用于Claude Desktop的DuckDB服务器 史密瑟里:

BASH``` 1npx -y @smithery/cli install mcp-server-duckdb —client claude


### Claude桌面集成


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


#### MacOS


地点: `~/Library/Application Support/Claude/claude_desktop_config.json`


#### 视窗


地点: `%APPDATA%/Claude/claude_desktop_config.json`


JSON```
1
2
3
4
5
6
7
8
9
10
11
12{
  "mcpServers": {
    "duckdb": {
      "command": "uvx",
      "args": [
        "mcp-server-duckdb",
        "--db-path",
        "~/mcp-server-duckdb/data/data.db"
      ]
    }
  }
}
  • 注: ~/mcp-server-duckdb/data/data.db 应替换为DuckDB数据库文件的实际路径。

发展

先决条件

  • Python与 uv 包管理器
  • DuckDB Python包
  • MCP服务器依赖关系

调试

由于MCP服务器基于stdio的通信,调试MCP服务器可能具有挑战性。我们建议使用 MCP检查员 为了获得最佳的调试体验。

使用MCP检查器

  1. 使用npm安装检查器:

BASH``` 1npx @modelcontextprotocol/inspector uv —directory ~/codes/mcp-server-duckdb run mcp-server-duckdb —db-path ~/mcp-server-duckdb/data/data.db


1. 在浏览器中打开提供的URL以访问调试界面


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


- 请求/响应通信
- 工具执行
- 服务器状态
- 错误消息