Interact and query with Meilisearch full-text & semantic-search API.
Visit ProjectThe Meilisearch MCP Server is a Model Context Protocol server that enables any MCP-compatible client (including AI assistants like Claude and OpenAI models) to interact with Meilisearch, a powerful search engine, through natural conversation instead of direct API calls.
Installation:
pip install meilisearch-mcp
Configure Claude Desktop: Add server configuration to your Claude Desktop config file.
Start Meilisearch: Run either through Docker or by installing directly on your system.
Interact: Use natural language commands to manage Meilisearch data and search through AI conversation.
What is MCP?
MCP (Model Context Protocol) is a standard for AI agents to call external services.
What's the difference between MCP Server and direct Meilisearch API?
MCP Server provides a conversation interface, while direct API requires manual implementation.
Whichcpp versions of Python are supported?
Python versions 3.9 and above.
Can I use self-hosted Meilisearch instances?
Yes, you can connect to any Meilisearch instance by updating environment variables.
ā” Connect any LLM to Meilisearch and supercharge your AI with lightning-fast search capabilities! š
The Meilisearch MCP Server is a Model Context Protocol server that enables any MCP-compatible client (including Claude, OpenAI agents, and other LLMs) to interact with Meilisearch. This stdio-based server allows AI assistants to manage search indices, perform searches, and handle your data through natural conversation.
Why use this?
Get up and running in just 3 steps!
# Using pip
pip install meilisearch-mcp
# Or using uvx (recommended)
uvx -n meilisearch-mcp
Add this to your claude_desktop_config.json
:
{
"mcpServers": {
"meilisearch": {
"command": "uvx",
"args": ["-n", "meilisearch-mcp"]
}
}
}
# Using Docker (recommended)
docker run -d -p 7700:7700 getmeili/meilisearch:v1.6
# Or using Homebrew
brew install meilisearch
meilisearch
That's it! Now you can ask your AI assistant to search and manage your Meilisearch data! š
You: "Create a new index called 'products' with 'id' as the primary key"
AI: I'll create that index for you... ā Index 'products' created successfully!
You: "Add some products to the index"
AI: I'll add those products... ā Added 5 documents to 'products' index
You: "Search for products under $50 with 'electronics' in the category"
AI: I'll search for those products... Found 12 matching products!
You: "Search across all my indices for 'machine learning' and sort by date"
AI: Searching across all indices... Found 47 results from 3 indices:
- 'blog_posts': 23 articles about ML
- 'documentation': 15 technical guides
- 'tutorials': 9 hands-on tutorials
pip install meilisearch-mcp
# Clone repository
git clone https://github.com/meilisearch/meilisearch-mcp.git
cd meilisearch-mcp
# Create virtual environment and install
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e .
Perfect for containerized environments like n8n workflows!
# Pull the latest image
docker pull getmeili/meilisearch-mcp:latest
# Or a specific version
docker pull getmeili/meilisearch-mcp:0.5.0
# Run the container
docker run -it \
-e MEILI_HTTP_ADDR=http://your-meilisearch:7700 \
-e MEILI_MASTER_KEY=your-master-key \
getmeili/meilisearch-mcp:latest
# Build your own image
docker build -t meilisearch-mcp .
docker run -it \
-e MEILI_HTTP_ADDR=http://your-meilisearch:7700 \
-e MEILI_MASTER_KEY=your-master-key \
meilisearch-mcp
For n8n workflows, you can use the Docker image directly in your setup:
meilisearch-mcp:
image: getmeili/meilisearch-mcp:latest
environment:
- MEILI_HTTP_ADDR=http://meilisearch:7700
- MEILI_MASTER_KEY=masterKey
š Connection Management - View current connection settings - Switch between Meilisearch instances dynamically - Update API keys on the fly
š Index Operations - Create new indices with custom primary keys - List all indices with stats - Delete indices and their data - Get detailed index metrics
š Document Management - Add or update documents - Retrieve documents with pagination - Bulk import data
š Search Capabilities - Search with filters, sorting, and facets - Multi-index search - Semantic search with vectors - Hybrid search (keyword + semantic)
āļø Settings & Configuration - Configure ranking rules - Set up faceting and filtering - Manage searchable attributes - Customize typo tolerance
š Security - Create and manage API keys - Set granular permissions - Monitor key usage
š Monitoring & Health - Health checks - System statistics - Task monitoring - Version information
Configure default connection settings:
MEILI_HTTP_ADDR=http://localhost:7700 # Default Meilisearch URL
MEILI_MASTER_KEY=your_master_key # Optional: Default API key
Start Meilisearch:
docker run -d -p 7700:7700 getmeili/meilisearch:v1.6
Install Development Dependencies:
uv pip install -r requirements-dev.txt
Run Tests:
python -m pytest tests/ -v
Format Code:
black src/ tests/
npx @modelcontextprotocol/inspector python -m src.meilisearch_mcp
We'd love to hear from you! Here's how to get help and connect:
We welcome contributions! Here's how to get started:
git checkout -b feature/amazing-feature
)black
git commit -m 'Add amazing feature'
)git push origin feature/amazing-feature
)See our Contributing Guidelines for more details.
This project uses automated versioning and publishing. When the version in pyproject.toml
changes on the main
branch, the package is automatically published to PyPI.
See the Release Process section for detailed instructions.
This project is licensed under the MIT License - see the LICENSE file for details.
Meilisearch is an open-source search engine that offers a delightful search experience.
Learn more about Meilisearch at meilisearch.com
get-connection-settings
: View current Meilisearch connection URL and API key status - update-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 key - list-indexes
: List all available indexes - delete-index
: Delete an existing index and all its documents - get-index-metrics
: Get detailed metrics for a specific index #### Document Operations - get-documents
: Retrieve documents from an index with pagination - add-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 index - update-settings
: Update index settings (ranking, faceting, etc.) #### API Key Management - get-keys
: List all API keys - create-key
: Create new API key with specific permissions - delete-key
: Delete an existing API key #### Task Management - get-task
: Get information about a specific task - get-tasks
: List tasks with optional filters - cancel-tasks
: Cancel pending or enqueued tasks - delete-tasks
: Delete completed tasks #### System Monitoring - health-check
: Basic health check - get-health-status
: Comprehensive health status - get-version
: Get Meilisearch version information - get-stats
: Get database statistics - get-system-info
: Get system-level information ### Development Setup #### Prerequisites 1. Start Meilisearch server: bash # Using Docker (recommended for development) docker run -d -p 7700:7700 getmeili/meilisearch:v1.6 # Or using brew (macOS) brew install meilisearch meilisearch # Or download from https://github.com/meilisearch/meilisearch/releases
2. Install development tools: bash # Install uv for Python package management pip install uv # Install Node.js for MCP Inspector testing # Visit https://nodejs.org/ or use your package manager
### Running Tests This project includes comprehensive integration tests that verify MCP tool functionality: bash # Run all tests python -m pytest tests/ -v # Run specific test file python -m pytest tests/test_mcp_client.py -v # Run tests with coverage report python -m pytest --cov=src tests/ # Run tests in watch mode (requires pytest-watch) pytest-watch tests/
Important: Tests require a running Meilisearch instance on http://localhost:7700
. ### Code Quality bash # Format code with Black black src/ tests/ # Run type checking (if mypy is configured) mypy src/ # Lint code (if flake8 is configured) flake8 src/ tests/
### Contributing Guidelines 1. Fork and clone the repository 2. Set up development environment following the Development Setup section above 3. Create a feature branch from main
4. Write tests first if adding new functionality (Test-Driven Development) 5. Run tests locally to ensure all tests pass before committing 6. Format code with Black and ensure code quality 7. Commit changes with descriptive commit messages 8. Push to your fork and create a pull request ### Development Workflow bash # Create feature branch git checkout -b feature/your-feature-name # Make your changes, write tests first # Edit files... # Run tests to ensure everything works python -m pytest tests/ -v # Format code black src/ tests/ # Commit and push git add . git commit -m "Add feature description" git push origin feature/your-feature-name
### Testing Guidelines - All new features should include tests - Tests should pass before submitting PRs - Use descriptive test names and clear assertions - Test both success and error cases - Ensure Meilisearch is running before running tests ### Release Process This project uses automated versioning and publishing to PyPI. The release process is designed to be simple and automated. #### How Releases Work 1. Automated Publishing: When the version number in pyproject.toml
changes on the main
branch, a GitHub Action automatically: - Builds the Python package - Publishes it to PyPI using trusted publishing - Creates a new release on GitHub 2. Version Detection: The workflow compares the current version in pyproject.toml
with the previous commit to detect changes 3. PyPI Publishing: Uses PyPA's official publish action with trusted publishing (no manual API keys needed) #### Creating a New Release To create a new release, follow these steps: ##### 1. Determine Version Number Follow Semantic Versioning (MAJOR.MINOR.PATCH): - PATCH (e.g., 0.4.0 ā 0.4.1): Bug fixes, documentation updates, minor improvements - MINOR (e.g., 0.4.0 ā 0.5.0): New features, new MCP tools, significant enhancements - MAJOR (e.g., 0.5.0 ā 1.0.0): Breaking changes, major API changes ##### 2. Update Version and Create PR bash # 1. Create a branch from latest main git checkout main git pull origin main git checkout -b release/v0.5.0 # 2. Update version in pyproject.toml # Edit the version = "0.4.0" line to your new version # 3. Commit and push git add pyproject.toml git commit -m "Bump version to 0.5.0" git push origin release/v0.5.0 # 4. Create PR and get it reviewed/merged gh pr create --title "Release v0.5.0" --body "Bump version for release"
##### 3. Merge to Main Once the PR is approved and merged to main
, the GitHub Action will automatically: 1. Detect the version change 2. Build the package 3. Publish to PyPI at https://pypi.org/p/meilisearch-mcp 4. Make the new version available via pip install meilisearch-mcp
##### 4. Verify Release After merging, verify the release: bash # Check GitHub Action status gh run list --workflow=publish.yml # Verify on PyPI (may take a few minutes) pip index versions meilisearch-mcp # Test installation of new version pip install --upgrade meilisearch-mcp
### Release Workflow File The automated release is handled by .github/workflows/publish.yml
, which: - Triggers on pushes to main
branch - Checks if pyproject.toml
version changed - Uses Python 3.10 and official build tools - Publishes using trusted publishing (no API keys required) - Provides verbose output for debugging ### Troubleshooting Releases Release didn't trigger: Check that the version in pyproject.toml
actually changed between commits Build failed: Check the GitHub Actions logs for Python package build errors PyPI publish failed: Verify the package name and that trusted publishing is configured properly Version conflicts: Ensure the new version number hasn't been used before on PyPI ### Development vs Production Versions - Development: Install from source using pip install -e .
- Production: Install from PyPI using pip install meilisearch-mcp
- Specific version: Install using pip install meilisearch-mcp==0.5.0