当前位置: 首页 > news >正文

nocodb mcp sort bug

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,待官方确定修复

参考资料

https://github.com/nocodb/nocodb/pull/12961