此MCP服务器提供了通过模型上下文协议与Nocodb数据库交互的工具,提供Nocodb表的CRUD操作(创建、读取、更新、删除)。
pip install -r requirements.txt
pip install "mcp[cli]"
此MCP服务器需要三个环境变量:
NOCODB_URL:您的Nocodb实例的基本URL(例如,https://example.com/ncdb)NOCODB_API_TOKEN:用于与Nocodb进行身份验证的API令牌NOCODB_BASE_ID:您的Nocodb数据库的基础ID您可以通过以下步骤获取API令牌:
基础ID可以在您的Nocodb仪表板的URL中找到:https://your-nocodb.com/dashboard/#/nc/base/YOUR_BASE_ID/table/...
要与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文件
m
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,在您的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"
}
}
}
}
服务器提供的工具如下:
从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)"
)
在Nocodb表中创建一条或多条记录。
参数:
table_name:要插入的表名data:包含列值对的字典或用于批量创建的此类字典列表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
)
更新Nocodb表中的一条或多条记录。
参数:
table_name:要更新的表名row_id:要更新的记录ID(单个记录更新时必需)data:包含要更新的列值对的字典bulk(可选):设置为True以进行批量更新bulk_ids(可选):当bulk=True时要更新的记录ID列表示例:
# 根据ID更新单个记录
update_records(
table_name="customers",
row_id="123",
data={"name": "John Smith", "status": "inactive"}
)
# 批量更新多个记录
update_records(
table_name="customers",
data={"status": "inactive"}, # 对所有记录应用相同的更新
bulk=True,
bulk_ids=["123", "456", "789"]
)
从Nocodb表中删除一条或多条记录。
参数:
table_name:要从中删除的表名row_id:要删除的记录ID(单个记录删除时必需)bulk(可选):设置为True以进行批量删除bulk_ids(可选):当bulk=True时要删除的记录ID列表示例:
# 根据ID删除单个记录
delete_records(
table_name="customers",
row_id="123"
)
# 批量删除多个记录
delete_records(
table_name="customers",
bulk=True,
bulk_ids=["123", "456", "789"]
)
检索Nocodb表的架构(列)。
参数:
table_name:要获取其架构的表名返回:
示例:
# 获取“products”表的架构
get_schema(table_name="products")
此MCP服务器通过Nocodb API文档中描述的Nocodb v2 REST API进行交互。
关键实现细节:
NOCODB_BASE_ID环境变量获取基础IDxc-token头部处理身份验证(Nocodb v2 API的要求)REST API参考:
/api/v2/tables/{tableId}/records/... 和 /api/v2/meta/tables/{tableId}身份验证通过xc-token头部处理,该头部自动填充来自NOCODB_API_TOKEN环境变量。这是Nocodb v2 API所需的认证机制。
服务器包含用于调试目的的日志。默认情况下,MCP服务器的日志级别在nocodb_mcp_server.py中设置为ERROR(mcp = FastMCP("Nocodb MCP Server", log_level="ERROR")),以避免在标准操作如mcp list期间产生过多输出。如果需要更详细的日志以进行故障排除,可以取消注释logging.basicConfig部分并调整级别(例如,level=logging.INFO或level=logging.DEBUG)。
所有工具都返回结构化的响应,如果操作失败,则包含错误信息。这使得确定操作是否成功以及排查问题变得容易。
为了安全设置:
⚠️ 重要提示:配置API令牌和数据库访问时,请始终遵循最小权限原则。