Meilisearch MCP Server
A Model Context Protocol (MCP) server for interacting with Meilisearch through LLM interfaces like Claude.
Features
- Index and document management
- Settings configuration and management
- Task monitoring and API key management
- Built-in logging and monitoring tools
- Dynamic connection configuration to switch between Meilisearch instances
- Smart search across single or multiple indices
- This is a Python implementation, there is Typescript integration if you need to work with a Meilisearch MCP server within the browser
Installation
1# Clone repository 2git clone <repository_url> 3cd meilisearch-mcp 4 5# Create virtual environment and install 6uv venv 7source .venv/bin/activate # On Windows: .venv\Scripts\activate 8uv pip install -e .
Requirements
- Python ≥ 3.9
- Running Meilisearch instance
- Node.js (for testing with MCP Inspector)
Usage
Environment Variables
1MEILI_HTTP_ADDR=http://localhost:7700 # Default Meilisearch URL 2MEILI_MASTER_KEY=your_master_key # Optional: Default Meilisearch API key
Dynamic Connection Configuration
The server provides tools to view and update connection settings at runtime:
get-connection-settings
: View current connection URL and API key statusupdate-connection-settings
: Update URL and/or API key to connect to a different Meilisearch instance
Example usage through MCP:
1// Get current settings 2{ 3 "name": "get-connection-settings" 4} 5 6// Update connection settings 7{ 8 "name": "update-connection-settings", 9 "arguments": { 10 "url": "http://new-host:7700", 11 "api_key": "new-api-key" 12 } 13}
Search Functionality
The server provides a flexible search tool that can search across one or all indices:
search
: Search through Meilisearch indices with optional parameters
Example usage through MCP:
1// Search in a specific index 2{ 3 "name": "search", 4 "arguments": { 5 "query": "search term", 6 "indexUid": "movies", 7 "limit": 10 8 } 9} 10 11// Search across all indices 12{ 13 "name": "search", 14 "arguments": { 15 "query": "search term", 16 "limit": 5, 17 "sort": ["releaseDate:desc"] 18 } 19}
Available search parameters:
query
: The search query (required)indexUid
: Specific index to search in (optional)limit
: Maximum number of results per index (optional, default: 20)offset
: Number of results to skip (optional, default: 0)filter
: Filter expression (optional)sort
: Sorting rules (optional)
Running the Server
1python -m src.meilisearch_mcp
Usage with Claude Desktop
To use this with Claude Desktop, add the following to your claude_desktop_config.json
:
1{ 2 "mcpServers": { 3 "meilisearch": { 4 "command": "uvx", 5 "args": ["-n", "meilisearch-mcp"] 6 } 7 } 8}
Testing with MCP Inspector
1npx @modelcontextprotocol/inspector python -m src.meilisearch_mcp
Available Tools
Connection Management
get-connection-settings
: View current Meilisearch connection URL and API key statusupdate-connection-settings
: Update URL and/or API key to connect to a different instance
Index Management
create-index
: Create a new index with optional primary keylist-indexes
: List all available indexesget-index-metrics
: Get detailed metrics for a specific index
Document Operations
get-documents
: Retrieve documents from an index with paginationadd-documents
: Add or update documents in an index
Search
search
: Flexible search across single or multiple indices with filtering and sorting options
Settings Management
get-settings
: View current settings for an indexupdate-settings
: Update index settings (ranking, faceting, etc.)
API Key Management
get-keys
: List all API keyscreate-key
: Create new API key with specific permissionsdelete-key
: Delete an existing API key
Task Management
get-task
: Get information about a specific taskget-tasks
: List tasks with optional filters:limit
: Maximum number of tasks to returnfrom
: Number of tasks to skipreverse
: Sort order of tasksbatchUids
: Filter by batch UIDsuids
: Filter by task UIDscanceledBy
: Filter by cancellation sourcetypes
: Filter by task typesstatuses
: Filter by task statusesindexUids
: Filter by index UIDsafterEnqueuedAt
/beforeEnqueuedAt
: Filter by enqueue timeafterStartedAt
/beforeStartedAt
: Filter by start timeafterFinishedAt
/beforeFinishedAt
: Filter by finish time
cancel-tasks
: Cancel pending or enqueued tasksdelete-tasks
: Delete completed tasks
System Monitoring
health-check
: Basic health checkget-health-status
: Comprehensive health statusget-version
: Get Meilisearch version informationget-stats
: Get database statisticsget-system-info
: Get system-level information
Contributing
- Fork repository
- Create feature branch
- Commit changes
- Create pull request
License
MIT