deepset-mcp
Official# deepset-mcp
**The official MCP server and Python SDK for the Haystack Enterprise Platform**
deepset-mcp enables AI agents to build and debug pipelines on the [Haystack Enterprise Platform](https://www.deepset.ai/products-and-services/deepset-ai-platform) through 45+ specialized tools. It also provides a Python SDK for programmatic access to many platform resources.
## Documentation
š **[View the full documentation](https://deepset-ai.github.io/deepset-mcp-server/)**
## Quick Links
- š **[Haystack Enterprise Platform](https://www.deepset.ai/products-and-services/deepset-ai-platform)**
- š **[Installation Guide](https://deepset-ai.github.io/deepset-mcp-server/installation/)**
- š ļø **[MCP Server Guide](https://deepset-ai.github.io/deepset-mcp-server/guides/mcp_server/)**
- š **[Python SDK Guide](https://deepset-ai.github.io/deepset-mcp-server/guides/api_sdk/)**
## Development
### Installation
Install the project using [uv](https://docs.astral.sh/uv/):
```bash
# Install uv first
pipx install uv
# Install project with all dependencies
uv sync --locked --all-extras --all-groups
```
### Local Development
If you want to test your changes locally, follow these steps:
1. Add a script run-deepset-mcp.sh that uses the binary from the project's virtual env
```bash
#!/usr/bin/env bash
# Wrapper to run the local deepset-mcp server for Cursor MCP.
# Use this as command so it doesn't depend on uv or PATH.
set -e
cd "$(dirname "$0")"
exec .venv/bin/deepset-mcp
```
2. Use it this way in Cursor:
```bash
"deepset": {
"command": "/bin/bash",
"args": ["/Users/*****/****/deepset-mcp-server/run-deepset-mcp.sh"],
"cwd": "/Users/*****/****/deepset-mcp-server",
"env": {
"DEEPSET_WORKSPACE": "WORKSPACE",
"DEEPSET_API_KEY": "API_KEY"
}
}
```
Note: If you change the codebase, make sure to restart the MCP server.
### Code Quality & Testing
Run code quality checks and tests using the Makefile:
```bash
# Install dependencies
make install
# Code quality
make lint # Run ruff linting
make format # Format code with ruff
make types # Run mypy type checking
# Testing
make test # Run unit tests (default)
make test-unit # Run unit tests only
make test-integration # Run integration tests
make test-all # Run all tests
# Clean up
make clean # Remove cache files
```
### Documentation
Documentation is built using [MkDocs](https://www.mkdocs.org/) with the Material theme:
- Configuration: `mkdocs.yml`
- Content: `docs/` directory
- Auto-generated API docs via [mkdocstrings](https://mkdocstrings.github.io/)
- Deployed via GitHub Pages (automated via GitHub Actions on push to main branch)
TDQS
Scored across 109 tools
Most tools target a distinct resource+action, but several clusters overlap heavily: search_pipeline, search_pipeline_with_params and search_pipeline_with_filters are near-duplicates, and list_search_history, list_pipeline_search_history, list_pipeline_traces and list_sessions all describe browsing past runs with subtly different semantics from the same OData fields. The cost trio (get_cost_over_time/totals/breakdown) and the evaluator/experiment run tools (get_experiment_run, list_experiment_runs, list_evaluation_runs, get_evaluation_run) require careful reading to distinguish.
The surface is overwhelmingly a predictable snake_case verb_noun pattern (list_pipelines, create_deployment, get_experiment_results, delete_dataset). Deviations are minor and readable: object-store helpers follow a noun_object_store shape (yq_object_store, grep_object_store, sed_object_store), and a few verbs are nonstandard (load_skill, try_evaluator, rerun_failed_experiment). No camelCase or chaotic mixing.
109 tools is far beyond a well-scoped set and forces the agent to sift many near-adjacent options. The breadth spans genuinely different domains (pipelines, deployments, indexes, costs, datasets, experiments, evaluators, components, docs, object store, workspaces, secrets), but the volume plus per-domain granularity (e.g. three search variants, five object-store helpers, four deployment-tag/revision tools) makes discovery costly.
Coverage is unusually deep: full pipeline version lifecycle (create/patch/restore/validate/deploy), deployment revisions/activation/tags/stats, index create/update/deploy/validate, dataset and experiment CRUD, evaluator versioning and scoring runs. Gaps remain: no delete for pipelines, indexes or workspaces, and secrets are only list/get with no create/update/delete, so some lifecycle work is a dead end.