https://github.com/meilisearch/meilisearch-mcp
A Model Context Protocol (MCP) server for interacting with Meilisearch through LLM interfaces.
https://github.com/meilisearch/meilisearch-mcp
Last synced: 23 days ago
JSON representation
A Model Context Protocol (MCP) server for interacting with Meilisearch through LLM interfaces.
- Host: GitHub
- URL: https://github.com/meilisearch/meilisearch-mcp
- Owner: meilisearch
- License: mit
- Created: 2024-12-23T14:53:05.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-02-27T13:38:26.000Z (about 2 months ago)
- Last Synced: 2025-03-19T03:46:49.490Z (29 days ago)
- Language: Python
- Size: 83 KB
- Stars: 48
- Watchers: 3
- Forks: 5
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- Awesome-MCP-Servers-directory - Meilisearch - Interact & query with Meilisearch (Full-text & semantic search API) (Search)
- awesome-mcp-servers - Meilisearch - A Model Context Protocol (MCP) server for interacting with Meilisearch through LLM interfaces. (Table of Contents / AI Services)
- awesome-mcp-servers - Meilisearch - A Model Context Protocol (MCP) server for interacting with Meilisearch through LLM interfaces. (Table of Contents / AI Services)
- awesome-mcp-servers - Meilisearch - Interact & query with Meilisearch (Full-text & semantic search API) (Official Servers)
README
# 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](https://github.com/devlimelabs/meilisearch-ts-mcp)## Installation
```bash
# Clone repository
git clone
cd meilisearch-mcp# Create virtual environment and install
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e .
```## Requirements
- Python ≥ 3.9
- Running Meilisearch instance
- Node.js (for testing with MCP Inspector)## Usage
### Environment Variables
```bash
MEILI_HTTP_ADDR=http://localhost:7700 # Default Meilisearch URL
MEILI_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 status
- `update-connection-settings`: Update URL and/or API key to connect to a different Meilisearch instanceExample usage through MCP:
```json
// Get current settings
{
"name": "get-connection-settings"
}// Update connection settings
{
"name": "update-connection-settings",
"arguments": {
"url": "http://new-host:7700",
"api_key": "new-api-key"
}
}
```### 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:
```json
// Search in a specific index
{
"name": "search",
"arguments": {
"query": "search term",
"indexUid": "movies",
"limit": 10
}
}// Search across all indices
{
"name": "search",
"arguments": {
"query": "search term",
"limit": 5,
"sort": ["releaseDate:desc"]
}
}
```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
```bash
python -m src.meilisearch_mcp
```### Usage with Claude Desktop
To use this with Claude Desktop, add the following to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"meilisearch": {
"command": "uvx",
"args": ["-n", "meilisearch-mcp"]
}
}
}
```### Testing with MCP Inspector
```bash
npx @modelcontextprotocol/inspector python -m src.meilisearch_mcp
```## Available Tools
### Connection Management
- `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
- `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:
- `limit`: Maximum number of tasks to return
- `from`: Number of tasks to skip
- `reverse`: Sort order of tasks
- `batchUids`: Filter by batch UIDs
- `uids`: Filter by task UIDs
- `canceledBy`: Filter by cancellation source
- `types`: Filter by task types
- `statuses`: Filter by task statuses
- `indexUids`: Filter by index UIDs
- `afterEnqueuedAt`/`beforeEnqueuedAt`: Filter by enqueue time
- `afterStartedAt`/`beforeStartedAt`: Filter by start time
- `afterFinishedAt`/`beforeFinishedAt`: Filter by finish time
- `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## Contributing
1. Fork repository
2. Create feature branch
3. Commit changes
4. Create pull request## License
MIT