使用说明

项目简介

'mcp-server-duckdb' 是一个实现了 Model Context Protocol (MCP) 的服务器,它允许大型语言模型 (LLM) 通过预定义的工具与 DuckDB 数据库进行交互。DuckDB 是一个快速的、嵌入式的分析型数据库,非常适合本地数据分析。该服务器使得 LLM 能够执行数据库查询、数据修改和模式检查等操作。

主要功能点

  • 数据库交互工具: 提供了一系列工具,允许 LLM 执行常见的数据库操作,包括:
    • 'read-query': 执行 SELECT 查询以读取数据。
    • 'write-query': 执行 INSERT、UPDATE 或 DELETE 查询以修改数据 (在非只读模式下)。
    • 'create-table': 创建新的数据库表 (在非只读模式下)。
    • 'list-tables': 列出数据库中所有表的名称。
    • 'describe-table': 获取指定表的结构信息。
  • 只读模式支持: 服务器可以配置为只读模式,禁用所有写操作工具,保护数据库数据安全。
  • MCP 协议标准: 遵循 Model Context Protocol,确保与兼容的 LLM 客户端进行标准化通信。
  • 易于安装和配置: 可以通过 Smithery 快速安装,并提供简单的配置文件集成到 Claude Desktop 等 MCP 客户端。

安装步骤

  1. 环境准备: 确保你的系统已安装 Python 和 'uv' 包管理器。
  2. 使用 Smithery 安装 (推荐 Claude Desktop 用户): 打开终端并运行以下命令,即可自动安装 'mcp-server-duckdb' 并配置 Claude Desktop 客户端:
    npx -y @smithery/cli install mcp-server-duckdb --client claude
    如果你不使用 Claude Desktop 或希望手动安装,请参考仓库 README 中的开发指南进行操作。

服务器配置

MCP 服务器需要配置在 MCP 客户端中才能使用。以 Claude Desktop 为例,你需要编辑其配置文件 'claude_desktop_config.json',添加 'mcpServers' 配置项。以下是一个配置示例,你需要根据你的实际情况修改数据库路径:

{
  "mcpServers": {
    "duckdb": {
      "command": "uvx",
      "args": [
        "mcp-server-duckdb",
        "--db-path",
        "~/mcp-server-duckdb/data/data.db"
      ]
    }
  }
}

配置参数说明:

  • 'server name': 'duckdb' (服务器名称,可以自定义,用于在客户端中引用)
  • 'command': 'uvx' (启动命令,假设 'mcp-server-duckdb' 可执行文件已添加到 uvx 的可执行路径中。根据实际安装方式和环境可能有所不同,例如直接使用 'python -m mcp_server_duckdb' )
  • 'args': 启动参数列表
    • '--db-path': DuckDB 数据库文件路径。请将 '~/mcp-server-duckdb/data/data.db' 替换为你实际的数据库文件路径。如果数据库文件不存在,在非只读模式下服务器会自动创建。
    • '--readonly': (可选) 添加此参数以启用只读模式。

请注意: 实际的 'command' 和 'args' 可能需要根据你的安装方式和环境进行调整。 详细信息请参考仓库的 README 文件和文档。

基本使用方法

  1. 启动 MCP 服务器: 根据你的安装方式,启动 'mcp-server-duckdb' 服务器。如果使用 Smithery 安装并配置 Claude Desktop,服务器通常会自动启动。
  2. 配置 MCP 客户端: 在 MCP 客户端 (如 Claude Desktop) 中,配置并启用名为 'duckdb' (或你在 'server name' 中设置的名称) 的 MCP 服务器。
  3. 在 LLM 中使用工具: 在支持 MCP 协议的 LLM 应用中,你可以指示 LLM 使用 'duckdb' 服务器提供的工具来查询或操作 DuckDB 数据库。例如,你可以要求 LLM "使用 'read-query' 工具查询表 'my_table' 中的数据" 或 "使用 'list-tables' 工具查看当前数据库中的所有表"。

信息

分类

数据库与文件