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

posted on 2026-02-08 08:00  荣锋亮  阅读(7)  评论(0)    收藏  举报

导航