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
| 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; }