Skip to main content
Glama
devlimelabs

Meilisearch MCP Server

by devlimelabs

get-documents

Retrieve documents from a Meilisearch index by specifying filters, fields, and pagination parameters to access stored data.

Instructions

Get documents from a Meilisearch index

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
indexUidYesUnique identifier of the index
limitNoMaximum number of documents to return (default: 20)
offsetNoNumber of documents to skip (default: 0)
fieldsNoFields to return in the documents
filterNoFilter query to apply

Implementation Reference

  • Handler function that implements the core logic of the 'get-documents' tool by querying the Meilisearch API for documents in the specified index with optional pagination, field selection, and filtering.
    async ({ indexUid, limit, offset, fields, filter }: GetDocumentsParams) => {
      try {
        const response = await apiClient.get(`/indexes/${indexUid}/documents`, {
          params: {
            limit,
            offset,
            fields: fields?.join(','),
            filter,
          },
        });
        return {
          content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }],
        };
      } catch (error) {
        return createErrorResponse(error);
      }
    }
  • Zod schema defining the input parameters for the 'get-documents' tool: indexUid (required), limit, offset, fields, filter (optional).
    {
      indexUid: z.string().describe('Unique identifier of the index'),
      limit: z.number().min(1).max(1000).optional().describe('Maximum number of documents to return (default: 20)'),
      offset: z.number().min(0).optional().describe('Number of documents to skip (default: 0)'),
      fields: z.array(z.string()).optional().describe('Fields to return in the documents'),
      filter: z.string().optional().describe('Filter query to apply'),
    },
  • Registration of the 'get-documents' tool using server.tool(), specifying the tool name, description, input schema, and handler function within the registerDocumentTools module.
      'get-documents',
      'Get documents from a Meilisearch index',
      {
        indexUid: z.string().describe('Unique identifier of the index'),
        limit: z.number().min(1).max(1000).optional().describe('Maximum number of documents to return (default: 20)'),
        offset: z.number().min(0).optional().describe('Number of documents to skip (default: 0)'),
        fields: z.array(z.string()).optional().describe('Fields to return in the documents'),
        filter: z.string().optional().describe('Filter query to apply'),
      },
      async ({ indexUid, limit, offset, fields, filter }: GetDocumentsParams) => {
        try {
          const response = await apiClient.get(`/indexes/${indexUid}/documents`, {
            params: {
              limit,
              offset,
              fields: fields?.join(','),
              filter,
            },
          });
          return {
            content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }],
          };
        } catch (error) {
          return createErrorResponse(error);
        }
      }
    );
  • src/index.ts:65-65 (registration)
    Top-level call to registerDocumentTools(server) in the main MCP server initialization, which includes the 'get-documents' tool among others.
    registerDocumentTools(server);
  • TypeScript interface defining the parameters for the get-documents handler function.
    interface GetDocumentsParams {
      indexUid: string;
      limit?: number;
      offset?: number;
      fields?: string[];
      filter?: string;
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/devlimelabs/meilisearch-ts-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server