Nocodb MCP Server

Nocodb MCP Server

granthooks

开发者工具
访问服务器

README

Nocodb MCP 服务器

此 MCP 服务器提供通过模型上下文协议与 Nocodb 数据库交互的工具,为 Nocodb 表提供 CRUD 操作(创建、读取、更新、删除)。

安装

  1. 安装所需的依赖项:
pip install -r requirements.txt
  1. 确保您已安装 MCP Python SDK(应与上述依赖项一起安装):
pip install "mcp[cli]"

配置

此 MCP 服务器需要三个环境变量:

  • NOCODB_URL: 您的 Nocodb 实例的基本 URL(例如,https://example.com/ncdb
  • NOCODB_API_TOKEN: 用于与 Nocodb 身份验证的 API 令牌
  • NOCODB_BASE_ID: 您的 Nocodb 数据库的基本 ID

您可以从您的 Nocodb 实例获取 API 令牌,方法是:

  1. 登录到您的 Nocodb 实例
  2. 转到“帐户设置”>“API 令牌”
  3. 创建具有适当权限的新令牌

基本 ID 可以在您的 Nocodb 仪表板的 URL 中找到:https://your-nocodb.com/dashboard/#/nc/base/YOUR_BASE_ID/table/...

用法

与 Claude Desktop 一起使用

要与 Claude Desktop 集成,请将以下配置添加到 claude_desktop_config.json

{
  "mcpServers": {
    "nocodb": {
      "command": "python",
      "args": [
        "path/to/nocodb_mcp_server.py"
      ],
      "env": {
        "NOCODB_URL": "https://your-nocodb-instance.com",
        "NOCODB_API_TOKEN": "your_api_token_here",
        "NOCODB_BASE_ID": "your_base_id_here"
      }
    }
  }
}

或者使用 MCP CLI 安装(推荐):

# 基本安装
mcp install nocodb_mcp_server.py

# 使用环境变量
mcp install nocodb_mcp_server.py -v NOCODB_URL=https://your-nocodb-instance.com -v NOCODB_API_TOKEN=your_token -v NOCODB_BASE_ID=your_base_id

# 或者使用 .env 文件
mcp install nocodb_mcp_server.py -f .env

作为独立服务器运行

# 安装依赖项
pip install -r requirements.txt

# 直接运行服务器
python nocodb_mcp_server.py

# 或者使用 MCP CLI
mcp run nocodb_mcp_server.py

开发模式

用于使用 MCP Inspector 进行测试和调试:

# 在开发模式下运行
mcp dev nocodb_mcp_server.py

与 Windows 上的 Cursor 一起使用

对于 Windows 上的 Cursor,请在您的 mcp.json 配置文件中使用以下语法:

{
  "mcpServers": {
    "nocodb": {
      "command": "C:\\Path\\To\\Your\\Python\\Executable",
      "args": [
        "C:\\Path\\To\\Your\\nocodb_mcp_server.py"
      ],
      "env": {
        "NOCODB_URL": "http://localhost:8080",
        "NOCODB_API_TOKEN": "your_api_token_here",
        "NOCODB_BASE_ID": "your_base_id_here"
      }
    }
  }
}

可用工具

该服务器提供以下工具:

1. retrieve_records

从 Nocodb 表中检索一个或多个记录。

参数:

  • table_name: 要查询的表的名称
  • row_id(可选):要检索单个记录的特定行 ID
  • filters(可选):Nocodb 格式的筛选条件
  • limit(可选):要返回的最大记录数(默认值:10)
  • offset(可选):要跳过的记录数,用于分页(默认值:0)
  • sort(可选):要排序的列
  • fields(可选):要包含的字段的逗号分隔列表

示例:

# 获取表中的所有记录(限制为 10)
retrieve_records(table_name="customers")

# 按 ID 获取特定记录
retrieve_records(table_name="customers", row_id="123")

# 使用条件筛选记录
retrieve_records(
    table_name="customers", 
    filters="(age,gt,30)~and(status,eq,active)"
)

2. create_records

在 Nocodb 表中创建一个或多个记录。

参数:

  • table_name: 要插入的表的名称
  • data: 包含 column:value 对的字典,或用于批量创建的此类字典的列表
  • bulk(可选):设置为 True 以进行批量创建

示例:

# 创建单个记录
create_records(
    table_name="customers",
    data={"name": "John Doe", "email": "john@example.com", "age": 35}
)

# 批量创建多个记录
create_records(
    table_name="customers",
    data=[
        {"name": "John Doe", "email": "john@example.com", "age": 35},
        {"name": "Jane Smith", "email": "jane@example.com", "age": 28}
    ],
    bulk=True
)

3. update_records

更新 Nocodb 表中的一个或多个记录。

参数:

  • table_name: 要更新的表的名称
  • row_id: 要更新的记录的 ID(更新单个记录时必需)
  • data: 包含要更新的 column:value 对的字典
  • bulk(可选):设置为 True 以进行批量更新
  • bulk_ids(可选):当 bulk=True 时要更新的记录 ID 列表

示例:

# 按 ID 更新单个记录
update_records(
    table_name="customers",
    row_id="123",
    data={"name": "John Smith", "status": "inactive"}
)

# 通过 ID 批量更新多个记录
update_records(
    table_name="customers",
    data={"status": "inactive"},  # 相同的更新应用于所有记录
    bulk=True,
    bulk_ids=["123", "456", "789"]
)

4. delete_records

从 Nocodb 表中删除一个或多个记录。

参数:

  • table_name: 要从中删除的表的名称
  • row_id: 要删除的记录的 ID(删除单个记录时必需)
  • bulk(可选):设置为 True 以进行批量删除
  • bulk_ids(可选):当 bulk=True 时要删除的记录 ID 列表

示例:

# 按 ID 删除单个记录
delete_records(
    table_name="customers",
    row_id="123"
)

# 通过 ID 批量删除多个记录
delete_records(
    table_name="customers",
    bulk=True,
    bulk_ids=["123", "456", "789"]
)

关于 Nocodb API 的说明

此 MCP 服务器与 Nocodb API 文档 中描述的 Nocodb v2 REST API 交互。

关键实现细节:

  • 对所有操作使用 v2 API 端点
  • 从 NOCODB_BASE_ID 环境变量获取基本 ID
  • 自动从表名解析表 ID
  • 身份验证通过 xc-token 标头处理(Nocodb v2 API 要求)
  • 提供全面的错误处理和响应

REST API 参考:

  • https://docs.nocodb.com/developer-resources/rest-APIs/overview
  • 特定端点:/api/v2/tables/{tableId}/records/...

身份验证

身份验证通过 xc-token 标头处理,该标头使用 NOCODB_API_TOKEN 环境变量自动填充。 这是 Nocodb v2 API 要求的身份验证机制。

错误处理

所有工具都返回结构化响应,如果操作失败,则包括错误信息。 这使得很容易确定操作是否成功并排除任何问题。

安全注意事项

  • 使用专用 API 令牌,并为您的操作提供所需的最低权限。
  • 切勿在公共存储库或不安全的位置共享 API 令牌
  • 通过 Nocodb 的权限系统将数据库访问限制为仅必要的操作。
  • 在您的 Nocodb 实例中启用日志记录和审计以进行安全监控。
  • 定期审查和轮换 API 令牌以最大限度地降低安全风险。
  • 安全地存储环境变量,尤其是在生产环境中。

安全最佳实践

为了安全设置:

  1. 在 Nocodb 中创建一个具有受限权限的专用 API 令牌
  2. 避免硬编码凭据——始终使用环境变量。
  3. 在 Nocodb 中设置适当的表级别权限以限制访问。
  4. 如果您的 Nocodb 实例中可用,请启用审计日志
  5. 定期审查数据库访问以防止未经授权的访问。

⚠️ 重要提示: 在配置 API 令牌和数据库访问时,始终遵循最小权限原则

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript