MCP Pytest Server
by kieranlal
# Meilisearch MCP Server
A Model Context Protocol (MCP) server for interacting with Meilisearch through LLM interfaces like Claude.
<a href="https://glama.ai/mcp/servers/tbc3n51jja"><img width="380" height="200" src="https://glama.ai/mcp/servers/tbc3n51jja/badge" alt="Meilisearch Server MCP server" /></a>
## 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
## Installation
```bash
# Clone repository
git clone <repository_url>
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 instance
Example 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