swap-indexes
Swap two or more indexes in Meilisearch to reorganize search data without downtime, enabling index updates and schema changes.
Instructions
Swap two or more indexes in Meilisearch
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| indexes | Yes | JSON array of index pairs to swap, e.g. [["movies", "movies_new"]] |
Implementation Reference
- src/tools/index-tools.ts:162-182 (handler)The handler function for the 'swap-indexes' MCP tool. Parses JSON input of index pairs, validates structure, calls API to swap indexes, and returns formatted response or error.async ({ indexes }: SwapIndexesParams) => { try { // Parse the indexes string to ensure it's valid JSON const parsedIndexes = JSON.parse(indexes); // Ensure indexes is an array of arrays if (!Array.isArray(parsedIndexes) || !parsedIndexes.every(pair => Array.isArray(pair) && pair.length === 2)) { return { isError: true, content: [{ type: 'text', text: 'Indexes must be a JSON array of pairs, e.g. [["movies", "movies_new"]]' }], }; } const response = await apiClient.post('/swap-indexes', parsedIndexes); return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }], }; } catch (error) { return createErrorResponse(error); } }
- src/tools/index-tools.ts:159-161 (schema)Zod input schema defining the 'indexes' parameter as a string containing JSON array of index pairs.{ indexes: z.string().describe('JSON array of index pairs to swap, e.g. [["movies", "movies_new"]]'), },
- src/tools/index-tools.ts:156-183 (registration)Registration of the 'swap-indexes' tool with the MCP server using server.tool(), including description, schema, and handler.server.tool( 'swap-indexes', 'Swap two or more indexes in Meilisearch', { indexes: z.string().describe('JSON array of index pairs to swap, e.g. [["movies", "movies_new"]]'), }, async ({ indexes }: SwapIndexesParams) => { try { // Parse the indexes string to ensure it's valid JSON const parsedIndexes = JSON.parse(indexes); // Ensure indexes is an array of arrays if (!Array.isArray(parsedIndexes) || !parsedIndexes.every(pair => Array.isArray(pair) && pair.length === 2)) { return { isError: true, content: [{ type: 'text', text: 'Indexes must be a JSON array of pairs, e.g. [["movies", "movies_new"]]' }], }; } const response = await apiClient.post('/swap-indexes', parsedIndexes); return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }], }; } catch (error) { return createErrorResponse(error); } } );
- src/tools/index-tools.ts:37-39 (schema)TypeScript interface defining the parameters for the swap-indexes handler.interface SwapIndexesParams { indexes: string; }