项目简介

NocoDB MCP Server 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在作为 LLM 应用的后端,桥接 LLM 与 NocoDB 数据库。它允许 LLM 通过标准化的 MCP 协议,安全、便捷地访问和操作 NocoDB 数据库中的数据,并进行简单的数据库结构管理。

主要功能点

  • 数据 CRUD 操作: 支持对 NocoDB 数据库中的表进行基本的创建 (Create)、读取 (Read)、更新 (Update) 和删除 (Delete) 操作,使 LLM 能够灵活地管理数据。
  • Schema 管理: 允许 LLM 通过工具调用,动态地添加和删除数据表的列,进行轻量级的数据库结构变更。
  • 数据查询: 支持根据条件过滤、分页、排序和选择特定字段检索数据,满足 LLM 复杂的数据获取需求。
  • 工具集成: 以 MCP Tool 的形式暴露 NocoDB 的各项功能,方便 LLM 通过工具调用进行数据交互和管理。
  • 标准协议: 遵循 MCP 协议,确保与各种 MCP 客户端的兼容性和互操作性。

安装步骤

  1. 安装 Node.js 和 TypeScript: 确保你的开发环境中已安装 Node.js 和 TypeScript。
  2. 克隆仓库: 将仓库 'https://github.com/edwinbernadus/nocodb-mcp-server' 克隆到本地。
  3. 安装依赖: 在仓库根目录下运行 'npm install' 命令安装项目依赖。
  4. 构建项目: 运行 'npm run build' 命令编译 TypeScript 代码。

服务器配置

为了让 MCP 客户端(如 Claude Desktop)连接到 NocoDB MCP Server,你需要在客户端的 MCP 服务器配置中添加以下信息。配置的关键是指定服务器的启动命令 (command) 及其参数 (args)。

假设你的 MCP 客户端配置文件为 'claude_desktop_config.json',你需要添加类似以下的配置 (请根据你的实际客户端配置文件的格式进行调整):

{
  "mcpServers": {
    "nocodb": {
      "command": "node",
      "args": ["{working_folder}/dist/start.js"],
      "env": {
        "NOCODB_URL": "<你的NocoDB实例URL>",
        "NOCODB_BASE_ID": "<你的NocoDB Base ID>",
        "NOCODB_API_TOKEN": "<你的NocoDB API Token>"
      }
    }
  }
}

配置参数说明:

  • '"nocodb"': 服务器名称,可以自定义,用于在客户端中标识该服务器。
  • '"command": "node"': 启动服务器的命令,这里使用 'node' 解释器。
  • '"args": ["{working_folder}/dist/start.js"]': 启动命令的参数,'{working_folder}' 会被客户端替换为服务器的工作目录,'dist/start.js' 是编译后的服务器启动文件路径。
  • '"env"': 环境变量配置,用于服务器运行时读取 NocoDB 的连接信息。
    • '"NOCODB_URL"': 必填。你的 NocoDB 实例的 URL 地址,例如 'https://app.nocodb.com' (如果是 NocoDB Cloud)。
    • '"NOCODB_BASE_ID"': 必填。你的 NocoDB Base 的 ID。可以在 NocoDB 实例的 URL 中找到,参考 README.md 中的 "How to Obtain NOCODB_BASE_ID" 部分。
    • '"NOCODB_API_TOKEN"': 必填。你的 NocoDB API Token,用于服务器鉴权访问 NocoDB。

配置环境变量:

除了在 'claude_desktop_config.json' 中配置环境变量,你也可以在服务器运行环境中设置环境变量,或者在项目根目录下创建 '.env' 文件,并将 'NOCODB_URL', 'NOCODB_BASE_ID', 'NOCODB_API_TOKEN' 写入 '.env' 文件。 '.env' 文件的示例如下 (复制 'env.example' 文件并修改即可):

NOCODB_URL=https://your-nocodb-instance.com
NOCODB_API_TOKEN=your_api_token_here
NOCODB_BASE_ID=your_base_id_here

基本使用方法

  1. 启动服务器: 配置完成后,在客户端中启动名为 "nocodb" 的 MCP 服务器。服务器将监听标准输入/输出流 (stdio) 以接收和发送 MCP 消息。

  2. 客户端调用工具: 在 LLM 应用或 MCP 客户端中,你可以通过调用以下 MCP Tools 来与 NocoDB 数据库交互:

    • 'nocodb-get-records': 获取数据表中的记录。
    • 'nocodb-post-records': 向数据表中添加新记录。
    • 'nocodb-patch-records': 更新数据表中的记录。
    • 'nocodb-delete-records': 删除数据表中的记录。
    • 'nocodb-get-list-tables': 获取 NocoDB Base 中所有数据表的列表。
    • 'nocodb-get-table-metadata': 获取数据表的元数据信息,包括列信息等。
    • 'nocodb-alter-table-add-column': 向数据表中添加新的列。
    • 'nocodb-alter-table-remove-column': 删除数据表中的列 (需要 columnId,可通过 'nocodb-get-table-metadata' 获取)。
    • 'nocodb-create-table': 创建新的数据表。
  3. 工具调用示例 (假设使用自然语言指令驱动的 LLM 客户端):

    • 获取 "Shinobi" 表中的记录: '从 nocodb 获取 Shinobi 表的数据' (对应 'nocodb-get-records' 工具)
    • 在 "Shinobi" 表中创建新记录,名字为 "naruto-2": '在 nocodb 的 Shinobi 表中添加新行,名字是 naruto-2' (对应 'nocodb-post-records' 工具)
    • 更新 "Shinobi" 表中 ID 为 2 的记录,设置名字为 "sasuke-updated": '更新 nocodb 的 Shinobi 表中 ID 为 2 的行,名字改为 sasuke-updated' (对应 'nocodb-patch-records' 工具)
    • 获取所有数据表名称: '列出 nocodb 中所有表的名称' (对应 'nocodb-get-list-tables' 工具)

    注意: 具体的工具调用方式和参数需要参考 MCP 客户端的文档和工具的参数定义。 LLM 需要能够理解工具的描述和参数,并生成正确的工具调用请求。

通过以上步骤,你可以将 NocoDB MCP Server 集成到你的 LLM 应用中,利用 LLM 的自然语言理解和生成能力,更智能地操作和管理 NocoDB 数据库。

信息

分类

数据库与文件