项目简介
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 客户端的兼容性和互操作性。
安装步骤
- 安装 Node.js 和 TypeScript: 确保你的开发环境中已安装 Node.js 和 TypeScript。
- 克隆仓库: 将仓库 'https://github.com/edwinbernadus/nocodb-mcp-server' 克隆到本地。
- 安装依赖: 在仓库根目录下运行 'npm install' 命令安装项目依赖。
- 构建项目: 运行 '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
基本使用方法
-
启动服务器: 配置完成后,在客户端中启动名为 "nocodb" 的 MCP 服务器。服务器将监听标准输入/输出流 (stdio) 以接收和发送 MCP 消息。
-
客户端调用工具: 在 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': 创建新的数据表。
-
工具调用示例 (假设使用自然语言指令驱动的 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 数据库。
信息
分类
数据库与文件