nocodb mcp sort bug
当前版本的nocodb mcp 在queryRecords 中对于sort 的处理是有bug的,机制上shema 写错了,同时引起复用了部分v3 dataservice api 处理上没有做兼容处理,直接使用是有问题的
问题
- mcp schema
mcp.service.ts
server.registerTool(
'queryRecords',
{
title: 'Query Records',
description: 'Query Records from a Table',
inputSchema: {
tableId: z.string().describe('Table ID'),
pageSize: z
.number()
.optional()
.describe('Number of records to fetch (default: 50)'),
page: z
.number()
.optional()
.describe('Page number for pagination (default: 1)'),
where: z.string().optional().describe(whereDescription),
sort: z
.array(
z.object({
field: z.string().describe('Field Name'),
description: z.enum(['asc', 'desc']).describe('Sort Direction'),
// 应该是direction 不是description
}),
)
.optional(),
- 数据处理兼容问题
v3/data-v3.service.ts check 有问题,mcp sort 不是字符串了,而是数组
async validateDataListQueryParams(
context: NcContext,
param: DataListParams & { modelInfo: ModelInfo },
) {
const columns = param.modelInfo.columns;
if (param.query.sort) {
let fieldsArr: string[] = [];
if (typeof param.query.sort !== 'string') {
NcError.get(context).invalidRequestBody(
`Query parameter 'sort' needs to be a single string`,
);
}
let parsedSort: any | any[];
try {
说明
我已经发了一个pr,待官方确定修复
浙公网安备 33010602011771号