deepset-mcp 0.0.3__py3-none-any.whl → 0.0.4rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. deepset_mcp/__init__.py +10 -0
  2. deepset_mcp/api/__init__.py +4 -0
  3. deepset_mcp/api/client.py +4 -0
  4. deepset_mcp/api/custom_components/__init__.py +4 -0
  5. deepset_mcp/api/custom_components/models.py +4 -0
  6. deepset_mcp/api/custom_components/protocols.py +4 -0
  7. deepset_mcp/api/custom_components/resource.py +4 -0
  8. deepset_mcp/api/exceptions.py +4 -0
  9. deepset_mcp/api/haystack_service/__init__.py +4 -0
  10. deepset_mcp/api/haystack_service/protocols.py +4 -0
  11. deepset_mcp/api/haystack_service/resource.py +4 -0
  12. deepset_mcp/api/indexes/__init__.py +4 -0
  13. deepset_mcp/api/indexes/models.py +4 -0
  14. deepset_mcp/api/indexes/protocols.py +4 -0
  15. deepset_mcp/api/indexes/resource.py +4 -0
  16. deepset_mcp/api/integrations/__init__.py +4 -0
  17. deepset_mcp/api/integrations/models.py +4 -0
  18. deepset_mcp/api/integrations/protocols.py +4 -0
  19. deepset_mcp/api/integrations/resource.py +4 -0
  20. deepset_mcp/api/pipeline/__init__.py +4 -0
  21. deepset_mcp/api/pipeline/log_level.py +4 -0
  22. deepset_mcp/api/pipeline/models.py +4 -0
  23. deepset_mcp/api/pipeline/protocols.py +8 -0
  24. deepset_mcp/api/pipeline/resource.py +4 -0
  25. deepset_mcp/api/pipeline_template/__init__.py +4 -0
  26. deepset_mcp/api/pipeline_template/models.py +4 -0
  27. deepset_mcp/api/pipeline_template/protocols.py +4 -0
  28. deepset_mcp/api/pipeline_template/resource.py +4 -0
  29. deepset_mcp/api/protocols.py +4 -0
  30. deepset_mcp/api/secrets/__init__.py +4 -0
  31. deepset_mcp/api/secrets/models.py +4 -0
  32. deepset_mcp/api/secrets/protocols.py +4 -0
  33. deepset_mcp/api/secrets/resource.py +4 -0
  34. deepset_mcp/api/shared_models.py +4 -0
  35. deepset_mcp/api/transport.py +4 -0
  36. deepset_mcp/api/user/__init__.py +4 -0
  37. deepset_mcp/api/user/protocols.py +4 -0
  38. deepset_mcp/api/user/resource.py +4 -0
  39. deepset_mcp/api/workspace/__init__.py +4 -0
  40. deepset_mcp/api/workspace/models.py +4 -0
  41. deepset_mcp/api/workspace/protocols.py +4 -0
  42. deepset_mcp/api/workspace/resource.py +4 -0
  43. deepset_mcp/config.py +8 -0
  44. deepset_mcp/initialize_embedding_model.py +4 -0
  45. deepset_mcp/main.py +8 -0
  46. deepset_mcp/store.py +4 -0
  47. deepset_mcp/tool_factory.py +11 -4
  48. deepset_mcp/tools/__init__.py +4 -0
  49. deepset_mcp/tools/custom_components.py +4 -0
  50. deepset_mcp/tools/doc_search.py +4 -0
  51. deepset_mcp/tools/haystack_service.py +4 -0
  52. deepset_mcp/tools/haystack_service_models.py +4 -0
  53. deepset_mcp/tools/indexes.py +4 -0
  54. deepset_mcp/tools/model_protocol.py +4 -0
  55. deepset_mcp/tools/pipeline.py +4 -0
  56. deepset_mcp/tools/pipeline_template.py +4 -0
  57. deepset_mcp/tools/secrets.py +4 -0
  58. deepset_mcp/tools/tokonomics/__init__.py +4 -0
  59. deepset_mcp/tools/tokonomics/decorators.py +4 -0
  60. deepset_mcp/tools/tokonomics/explorer.py +4 -0
  61. deepset_mcp/tools/tokonomics/object_store.py +4 -0
  62. deepset_mcp/tools/workspace.py +4 -0
  63. deepset_mcp-0.0.4rc1.dist-info/METADATA +761 -0
  64. deepset_mcp-0.0.4rc1.dist-info/RECORD +70 -0
  65. {deepset_mcp-0.0.3.dist-info → deepset_mcp-0.0.4rc1.dist-info}/entry_points.txt +0 -1
  66. deepset_mcp-0.0.4rc1.dist-info/licenses/LICENSE +202 -0
  67. deepset_mcp/agents/__init__.py +0 -0
  68. deepset_mcp/agents/debugging/__init__.py +0 -0
  69. deepset_mcp/agents/debugging/debugging_agent.py +0 -37
  70. deepset_mcp/agents/debugging/system_prompt.md +0 -214
  71. deepset_mcp/agents/generalist/__init__.py +0 -0
  72. deepset_mcp/agents/generalist/generalist_agent.py +0 -38
  73. deepset_mcp/agents/generalist/system_prompt.md +0 -241
  74. deepset_mcp/benchmark/README.md +0 -425
  75. deepset_mcp/benchmark/__init__.py +0 -1
  76. deepset_mcp/benchmark/agent_configs/debugging_agent.yml +0 -10
  77. deepset_mcp/benchmark/agent_configs/generalist_agent.yml +0 -6
  78. deepset_mcp/benchmark/dp_validation_error_analysis/__init__.py +0 -0
  79. deepset_mcp/benchmark/dp_validation_error_analysis/eda.ipynb +0 -757
  80. deepset_mcp/benchmark/dp_validation_error_analysis/prepare_interaction_data.ipynb +0 -167
  81. deepset_mcp/benchmark/dp_validation_error_analysis/preprocessing_utils.py +0 -213
  82. deepset_mcp/benchmark/runner/__init__.py +0 -0
  83. deepset_mcp/benchmark/runner/agent_benchmark_runner.py +0 -561
  84. deepset_mcp/benchmark/runner/agent_loader.py +0 -110
  85. deepset_mcp/benchmark/runner/cli.py +0 -39
  86. deepset_mcp/benchmark/runner/cli_agent.py +0 -373
  87. deepset_mcp/benchmark/runner/cli_index.py +0 -71
  88. deepset_mcp/benchmark/runner/cli_pipeline.py +0 -73
  89. deepset_mcp/benchmark/runner/cli_tests.py +0 -226
  90. deepset_mcp/benchmark/runner/cli_utils.py +0 -61
  91. deepset_mcp/benchmark/runner/config.py +0 -73
  92. deepset_mcp/benchmark/runner/config_loader.py +0 -64
  93. deepset_mcp/benchmark/runner/interactive.py +0 -140
  94. deepset_mcp/benchmark/runner/models.py +0 -203
  95. deepset_mcp/benchmark/runner/repl.py +0 -67
  96. deepset_mcp/benchmark/runner/setup_actions.py +0 -238
  97. deepset_mcp/benchmark/runner/streaming.py +0 -360
  98. deepset_mcp/benchmark/runner/teardown_actions.py +0 -196
  99. deepset_mcp/benchmark/runner/tracing.py +0 -21
  100. deepset_mcp/benchmark/tasks/chat_rag_answers_wrong_format.yml +0 -16
  101. deepset_mcp/benchmark/tasks/documents_output_wrong.yml +0 -13
  102. deepset_mcp/benchmark/tasks/jinja_str_instead_of_complex_type.yml +0 -11
  103. deepset_mcp/benchmark/tasks/jinja_syntax_error.yml +0 -11
  104. deepset_mcp/benchmark/tasks/missing_output_mapping.yml +0 -14
  105. deepset_mcp/benchmark/tasks/no_query_input.yml +0 -13
  106. deepset_mcp/benchmark/tasks/pipelines/chat_agent_jinja_str.yml +0 -141
  107. deepset_mcp/benchmark/tasks/pipelines/chat_agent_jinja_syntax.yml +0 -141
  108. deepset_mcp/benchmark/tasks/pipelines/chat_rag_answers_wrong_format.yml +0 -181
  109. deepset_mcp/benchmark/tasks/pipelines/chat_rag_missing_output_mapping.yml +0 -189
  110. deepset_mcp/benchmark/tasks/pipelines/rag_documents_wrong_format.yml +0 -193
  111. deepset_mcp/benchmark/tasks/pipelines/rag_no_query_input.yml +0 -191
  112. deepset_mcp/benchmark/tasks/pipelines/standard_index.yml +0 -167
  113. deepset_mcp-0.0.3.dist-info/METADATA +0 -289
  114. deepset_mcp-0.0.3.dist-info/RECORD +0 -115
  115. {deepset_mcp-0.0.3.dist-info → deepset_mcp-0.0.4rc1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,761 @@
1
+ Metadata-Version: 2.4
2
+ Name: deepset-mcp
3
+ Version: 0.0.4rc1
4
+ Summary: Collection of MCP tools and Agents to work with the deepset AI platform. Create, debug or learn about pipelines on the platform. Useable from the CLI, Cursor, Claude Code, or other MCP clients.
5
+ Project-URL: Homepage, https://deepset.ai
6
+ Author-email: Mathis Lucka <mathis.lucka@deepset.ai>, Tanay Soni <tanay.soni@deepset.ai>
7
+ License-Expression: Apache-2.0
8
+ License-File: LICENSE
9
+ Keywords: Agents,Haystack,LLM,MCP,deepset,pipelines
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: Freely Distributable
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: fastapi
23
+ Requires-Dist: glom
24
+ Requires-Dist: httpx
25
+ Requires-Dist: mcp>=1.10.1
26
+ Requires-Dist: model2vec
27
+ Requires-Dist: numpy
28
+ Requires-Dist: pydantic>=2.0.0
29
+ Requires-Dist: pyjwt[crypto]
30
+ Requires-Dist: pyyaml
31
+ Requires-Dist: rich
32
+ Description-Content-Type: text/markdown
33
+
34
+ # MCP Server for the deepset AI platform
35
+
36
+ This is the _official_ MCP server for the [deepset AI platform](https://www.deepset.ai/products-and-services/deepset-ai-platform).
37
+ It allows Agents in tools like Cursor or Claude Code to build and debug pipelines on the deepset platform.
38
+
39
+ The MCP server exposes up to 30 hand-crafted tools that are optimized for Agents interacting with the deepset platform.
40
+ Using the server, you benefit from faster creation of pipelines or indexes and speedy issue resolution through agentic debugging.
41
+
42
+
43
+
44
+ ## Contents
45
+
46
+ - [1. Installation](#installation)
47
+ - [1.1 Cursor](#cursor)
48
+ - [1.2 Claude Desktop](#claude-desktop-app)
49
+ - [1.3 Other MCP Clients](#other-mcp-clients)
50
+ - [1.4 Docker](#docker)
51
+ - [2. Configuration](#configuration)
52
+ - [2.1 Multiple Workspaces](#multiple-workspaces)
53
+ - [2.2 Manage Tools](#manage-tools)
54
+ - [2.3 Reduce Tool Count](#reduce-tool-count)
55
+ - [2.4 Prompts](#prompts)
56
+ - [3. Use Cases](#use-cases)
57
+ - [3.1. Creating Pipelines](#creating-pipelines)
58
+ - [3.2. Debugging Pipelines](#debugging-pipelines)
59
+ - [4. Reference](#reference)
60
+ - [4.1 deepset-mcp](#deepset-mcp)
61
+ - [4.2 Tools](#tools)
62
+ - [4.2.1 Pipelines](#pipelines)
63
+ - [4.2.2 Indexes](#indexes)
64
+ - [4.2.3 Templates](#templates)
65
+ - [4.2.4 Workspaces](#workspaces)
66
+ - [4.2.5 Secrets](#secrets)
67
+ - [4.2.6 Object Store](#object-store)
68
+ - [4.2.7 Components](#components)
69
+ - [4.2.8 Documentation](#documentation)
70
+ - [5. Known Limitations](#known-limitations)
71
+
72
+
73
+ ## Installation
74
+
75
+ Before configuring MCP clients to work with `deepset-mcp`, you need to install [uv](https://docs.astral.sh/uv/), a modern Python package manager.
76
+
77
+ If `uv` is not installed on your system, you can install it via:
78
+
79
+ `pipx install uv` (if Python is installed on your system)
80
+
81
+ or
82
+
83
+ _Mac/Linux_
84
+
85
+ `curl -LsSf https://astral.sh/uv/install.sh | sh` (if you do not want to manage a Python installation yourself)
86
+
87
+ _Windows_
88
+
89
+ `powershell -c "irm https://astral.sh/uv/install.ps1 | more"`
90
+
91
+ Once you have `uv` installed, you can follow one of the guides below to configure `deepset-mcp` with your MCP client of choice.
92
+
93
+ ### Cursor
94
+
95
+ **Prerequisites**
96
+ - Cursor needs to be installed
97
+ - You need an account with Cursor
98
+ - You need to [create an API key](https://docs.cloud.deepset.ai/docs/generate-api-key) for the deepset platform
99
+ - `uv` needs to be installed ([see above](#installation))
100
+
101
+ **Configuration**
102
+
103
+ Latest instructions on how to set up an MCP server for Cursor are covered in their [documentation](https://docs.cursor.com/context/mcp#using-mcp-json).
104
+ You can either configure the MCP server for a single Cursor project or globally across all projects.
105
+
106
+ To configure the `deepset-mcp` server for a single project:
107
+
108
+ 1. create a file with the name `mcp.json` in your `.cursor` directory at the root of the project
109
+ 2. Add the following configuration
110
+
111
+ ```json
112
+ {
113
+ "mcpServers": {
114
+ "deepset": {
115
+ "command": "uvx",
116
+ "args": ["deepset-mcp"],
117
+ "env": {
118
+ "DEEPSET_WORKSPACE": "the deepset workspace that you want to use",
119
+ "DEEPSET_API_KEY": "your deepset API key"
120
+ }
121
+ }
122
+ }
123
+ }
124
+ ```
125
+
126
+ This creates a virtual environment for the `deepset-mcp` package and runs the command to start the server.
127
+ The `deepset-mcp` server should appear in the "Tools & Integrations" section of your "Cursor Settings".
128
+ The tools on the server are now available to the Cursor Agent.
129
+
130
+ It is recommended to create a file named `.cursorrules` at the root of your project (if not already there)
131
+ and to add the [recommended prompt](#prompts) to the file.
132
+ This ensures optimal integration between the Cursor Agent and the deepset-mcp tools.
133
+
134
+
135
+ ### Claude Desktop App
136
+
137
+ **Prerequisites**
138
+ - [Claude Desktop App](https://claude.ai/download) needs to be installed
139
+ - You need to be on the Claude Pro, Team, Max, or Enterprise plan
140
+ - You need to [create an API key](https://docs.cloud.deepset.ai/docs/generate-api-key) for the deepset platform
141
+ - `uv` needs to be installed ([see above](#installation))
142
+
143
+ **Configuration**
144
+
145
+ Latest instructions on how to configure Claude Desktop with MCP can be found in [Anthropic's MCP documentation](https://modelcontextprotocol.io/quickstart/user).
146
+ To configure Claude Desktop with the `deepset-mcp`-package, follow these steps:
147
+
148
+
149
+ 1. Go to: `/Users/your_user/Library/Application Support/Claude` (Mac)
150
+ 2. Either open or create `claude_desktop_config.json`
151
+ 3. Add the following json as your config (or update your existing config if you are already using other MCP servers)
152
+
153
+ ```json
154
+ {
155
+ "mcpServers": {
156
+ "deepset": {
157
+ "command": "uvx",
158
+ "args": ["deepset-mcp"],
159
+ "env": {
160
+ "DEEPSET_WORKSPACE": "the deepset workspace that you want to use",
161
+ "DEEPSET_API_KEY": "your deepset API key"
162
+ }
163
+ }
164
+ }
165
+ }
166
+ ```
167
+ 4. Quit and start the Claude Desktop App
168
+ 5. The deepset server should appear in the "Search and Tools" menu (it might take a few seconds to start the server)
169
+
170
+ For best integration with Claude Desktop, it is recommended to create a Claude Desktop "Project" and to add the
171
+ [recommended prompt](#prompts) as the "project instructions".
172
+
173
+
174
+ ### Other MCP Clients
175
+
176
+ `deepset-mcp` can be used with other MCP clients.
177
+
178
+ Here is where you need to configure `deepset-mcp` for:
179
+
180
+ - [Claude Code](https://docs.anthropic.com/en/docs/claude-code/mcp#configure-mcp-servers)
181
+ - [Gemini CLI](https://cloud.google.com/gemini/docs/codeassist/use-agentic-chat-pair-programmer#configure-mcp-servers)
182
+
183
+ Depending on your installation, you need to configure an MCP client with one of the following commands:
184
+
185
+ `uvx deepset-mcp --workspace your_workspace --api-key your_api_key`
186
+
187
+ If you installed the deepset-mcp package globally and added it to your `PATH`, you can just run:
188
+
189
+ `deepset-mcp --workspace your_workspace --api-key your_api_key`
190
+
191
+ The server runs locally using `stdio` to communicate with the client.
192
+
193
+ ### Docker
194
+
195
+ In case you prefer to isolate the `deepset-mcp` server in a Docker container, you can use our [official Docker image](https://hub.docker.com/r/deepset/deepset-mcp-server) to run the server.
196
+
197
+ If running with Docker, you need to use the following configuration with your MCP Client:
198
+
199
+ ```json
200
+ {
201
+ "mcpServers": {
202
+ "deepset": {
203
+ "command": "/usr/local/bin/docker",
204
+ "args": [
205
+ "run",
206
+ "-i",
207
+ "-e",
208
+ "DEEPSET_WORKSPACE",
209
+ "-e",
210
+ "DEEPSET_API_KEY",
211
+ "deepset/deepset-mcp-server:main"
212
+ ],
213
+ "env": {
214
+ "DEEPSET_WORKSPACE":"<WORKSPACE>",
215
+ "DEEPSET_API_KEY":"<DEEPSET_API_KEY>"
216
+ }
217
+
218
+ }
219
+ }
220
+ }
221
+ ```
222
+
223
+
224
+ ## Configuration
225
+
226
+ ### Multiple Workspaces
227
+
228
+ In the default configuration, the Agent can only interact with resources in a fixed deepset workspace.
229
+ You configure this deepset workspace either through the `DEEPSET_WORKSPACE` environment variable
230
+ or the `--workspace` option.
231
+
232
+ The `--workspace-mode`-option (default: `static`) determines if the Agent can interact with a fixed, pre-configured workspace,
233
+ or if it should have access to resources in multiple workspaces.
234
+ If you want to allow an Agent to access resources from multiple workspaces, use `--workspace-mode dynamic`
235
+ in your configuration.
236
+
237
+ For example:
238
+
239
+ ```json
240
+ {
241
+ "mcpServers": {
242
+ "deepset": {
243
+ "command": "uvx",
244
+ "args": [
245
+ "deepset-mcp",
246
+ "--workspace-mode",
247
+ "dynamic"
248
+ ],
249
+ "env": {
250
+ "DEEPSET_API_KEY":"<DEEPSET_API_KEY>"
251
+ }
252
+
253
+ }
254
+ }
255
+ }
256
+ ```
257
+
258
+ An Agent using the MCP server can now access all workspaces that the API-key has access to. When interacting with most
259
+ resources, you need to tell the agent what workspace it should use to perform an action. Instead of prompting it
260
+ with "list my pipelines", you now have to prompt it with "list my pipelines in the staging workspace".
261
+
262
+
263
+ ### Manage Tools
264
+
265
+ Not all tools are needed for all tasks. You can toggle available tools in most MCP clients (e.g. [Cursor](https://docs.cursor.com/context/mcp#toggling-tools)).
266
+ If your MCP client does not support toggling tools, you can select which tools should be available by using the `--tools`-option.
267
+
268
+ Run `uvx deepset-mcp --list-tools` in your terminal to get a list of all available tools.
269
+
270
+ Then update your MCP configuration with the tools that you want to use with your MCP client.
271
+
272
+ Here is an exemplary Cursor `mcp.json` with tool selection:
273
+
274
+ ```json
275
+ {
276
+ "mcpServers": {
277
+ "deepset-mcp": {
278
+ "command": "uvx",
279
+ "args": [
280
+ "deepset-mcp",
281
+ "--tools",
282
+ "create_pipeline",
283
+ "get_from_object_store",
284
+ "get_slice_from_object_store",
285
+ "list_pipelines",
286
+ "search_templates"
287
+ ],
288
+ "env": {
289
+ "DEEPSET_WORKSPACE": "",
290
+ "DEEPSET_API_KEY": ""
291
+ }
292
+ }
293
+ }
294
+ }
295
+ ```
296
+
297
+ The MCP server now only exposes the five tools specifically added in the configuration file instead of exposing all tools.
298
+
299
+
300
+ ### Reduce Tool Count
301
+
302
+ You can view documentation for all tools in the [tools section](#tools). For many workflows, you will not need all tools.
303
+ In this case, it is recommended to deactivate tools that are not needed. Using fewer tools has the following benefits:
304
+
305
+ - some MCP clients limit the maximum number of tools
306
+ - the Agent will be more focused on the task at hand and not call tools that it does not need
307
+ - some savings for input tokens (minimal)
308
+
309
+ If you are working in `static` workspace mode, you can deactivate the following tools:
310
+ - `list_workspaces`
311
+ - `get_workspace`
312
+ - `create_workspace`
313
+
314
+ In `dynamic` workspace mode, activate the `list_workspaces` but not the `get_workspace` tool.
315
+ You only need to activate the `create_workspace`-tool if you want your Agent to create workspaces.
316
+
317
+ If you are not working with custom components, you can deactivate the following tools:
318
+ - `get_custom_components`
319
+ - `get_latest_custom_component_installation_logs`
320
+ - `list_custom_component_installations`
321
+
322
+ For components and templates, the `search` and `get` tools are often sufficient and the Agent does not need access to a dedicated `list` tool.
323
+ For that reason, if you need to lower the tool count, you can deactivate the following tools:
324
+ - `list_component_families`
325
+ - `list_templates`
326
+
327
+ `list_secrets` and `get_secret` return the same depth of information for each respective secret.
328
+ Therefore, you can deactivate the `get_secret`-tool.
329
+
330
+ If you need to reduce the tool count further, review your objectives and select the tools that the Agent will need to complete your planned tasks.
331
+
332
+ If your pipelines do not require an index, you can deactivate all [index tools](#indexes).
333
+ If you are only working with a single index that is already created and deployed, and you intend to create or debug connected pipelines, you could deactivate
334
+ all index tools except `get_index` because the Agent does not need to interact with the index beyond reading its configuration.
335
+
336
+ If you are only working on indexes but not pipelines, you might deactivate all [pipeline tools](#pipelines).
337
+
338
+
339
+ **Tools You Should Keep**
340
+
341
+
342
+ You should **not** deactivate any tools related to the [object store](#object-store). These tools are special tools that help
343
+ with lowering input token count for Agents and speeding up execution by allowing to call tools with outputs from other tools.
344
+
345
+ The [documentation tool](#documentation) and the [template tools](#templates) are important for most tasks. The Agent
346
+ frequently uses templates as examples for pipeline creation or debugging. The documentation helps the Agent to understand
347
+ the fundamentals of the platform.
348
+
349
+
350
+ ### Prompts
351
+
352
+ All tools exposed through the MCP server have minimal prompts. Any Agent interacting with these tools benefits from an additional system prompt.
353
+
354
+ View the **recommended prompt** [here](src/deepset_mcp/prompts/deepset_debugging_agent.md).
355
+
356
+ This prompt is also exposed as the `deepset_recommended_prompt` on the MCP server.
357
+
358
+ In Cursor, add the prompt to `.cursorrules`.
359
+
360
+ In Claude Desktop, create a "Project" and add the prompt as system instructions.
361
+
362
+ You may find that customizing the prompt for your specific needs yields best results.
363
+
364
+
365
+ ## Use Cases
366
+
367
+ The primary way to use the deepset MCP server is through an LLM that interacts with the deepset MCP tools in an agentic way.
368
+
369
+ ### Creating Pipelines
370
+
371
+ Tell the Agent about the type of pipeline you want to build. Creating new pipelines will work best if you use terminology
372
+ that is similar to what is used on the deepset AI platform or in Haystack.
373
+
374
+ Your prompts should be precise and specific.
375
+
376
+ Examples:
377
+
378
+ - "Build a RAG pipeline with hybrid retrieval that uses claude-sonnet-4 from Anthropic as the LLM."
379
+ - "Build an Agent that can iteratively search the web (deep research). Use SerperDev for web search and GPT-4o as the LLM."
380
+
381
+ You can also instruct the Agent to deploy pipelines, and it can issue search requests against pipelines to test them.
382
+
383
+ **Best Practices**
384
+
385
+ - be specific in your requests
386
+ - point the Agent to examples, if there is already a similar pipeline in your workspace, then ask it to look at it first,
387
+ if you have a template in mind, ask it to look at the template
388
+ - instruct the Agent to iterate with you locally before creating the pipeline, have it validate the drafts and then let it
389
+ create it once the pipeline is up to your standards
390
+
391
+
392
+ ### Debugging Pipelines
393
+
394
+ The `deepset-mcp` tools allow Agents to debug pipelines on the deepset AI platform.
395
+ Primary tools used for debugging are:
396
+ - get_logs
397
+ - validate_pipeline
398
+ - search_pipeline
399
+ - search_pipeline_templates
400
+ - search_component_definition
401
+
402
+ You can ask the Agent to check the logs of a specific pipeline in case it is already deployed but has errors.
403
+ The Agent will find errors in the logs and devise strategies to fix them.
404
+ If your pipeline is not deployed yet, the Agent can autonomously validate it and fix validation errors.
405
+
406
+ ## Reference
407
+
408
+ ### deepset-mcp
409
+
410
+ The `deepset-mcp`-command starts the `deepset-mcp` server.
411
+
412
+ You can run it in your terminal via `uvx deepset-mcp`.
413
+
414
+ If you want to run a specific version, you can run:
415
+
416
+ `uvx --from "deepset-mcp==0.0.3" deepset-mcp`
417
+
418
+ The following options are available:
419
+
420
+ | Option | Shorthand | Description |
421
+ |------------------|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
422
+ | --api-key | -k | The deepset API key to use. Can also be set it via the "DEEPSET_API_KEY" environment variable. |
423
+ | --workspace | -w | The deepset workspace to use. Can also be set via the "DEEPSET_WORKSPACE" environment variable. |
424
+ | --workspace-mode | -m | If you want to allow an Agent to access multiple workspaces (Options: static, dynamic; default: static) |
425
+ | --list-tools | -l | List all available tools (does not start the server). |
426
+ | --tools | -t | Pass a space separated list of tool names that you want the server to register. |
427
+ | --docs-share-url | -d | Pass a [shared prototype](https://docs.cloud.deepset.ai/docs/share-a-pipeline-prototype) URL to customize which pipeline the Agent uses for documentation search (default: official deepset documentation) |
428
+
429
+
430
+ ### Tools
431
+
432
+ The deepset-mcp package exposes a set of tools to interact with the deepset platform. Tools can be activated or deactivated
433
+ in most MCP clients. Users can also use the `--tools` option to configure which tools should be provided by the MCP server.
434
+
435
+ #### Pipelines
436
+
437
+ **List Pipelines**
438
+
439
+ | Parameter | Type | Description |
440
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
441
+ | workspace | str | The name of the workspace that the pipelines should be listed from (only exposed in `dynamic` workspace mode). |
442
+
443
+
444
+ The `list_pipelines`-tool returns a list of all pipelines in a workspace. The pipelines are returned in a condensed version without their full yaml configuration.
445
+
446
+ **Get Pipeline**
447
+
448
+ | Parameter | Type | Description |
449
+ |--------------------|------|------------------------------------------------------------------------------------------------|
450
+ | pipeline_name | str | The name of the pipeline to get. |
451
+ | workspace | str | The name of the workspace to get the pipeline from (only exposed in `dynamic` workspace mode). |
452
+
453
+
454
+ The `get_pipeline`-tool returns the full pipeline object including its yaml configuration.
455
+
456
+ **Create Pipeline**
457
+
458
+ | Parameter | Type | Description |
459
+ |--------------------|------|--------------------------------------------------------------------------------------------------------------|
460
+ | pipeline_name | str | The name to use for the new pipeline. |
461
+ | yaml_configuration | str | The yaml configuration defining the pipeline. |
462
+ | workspace | str | The name of the workspace that the pipeline should be created in (only exposed in `dynamic` workspace mode). |
463
+
464
+
465
+ The `create_pipeline`-tool returns a success message and the full pipeline object if pipeline creation was successful.
466
+ If there are validation errors during creation, the errors are returned alongside the pipeline object.
467
+
468
+ **Update Pipeline**
469
+
470
+ | Parameter | Type | Description |
471
+ |----------------------------|------|--------------------------------------------------------------------------------------------------------------|
472
+ | pipeline_name | str | The name of the pipeline to update. |
473
+ | original_config_snippet | str | A snippet from the current yaml configuration that should be replaced. |
474
+ | replacement_config_snippet | str | A snippet of yaml configuration that the original snippet should be replaced with. |
475
+ | workspace | str | The name of the workspace that the pipeline should be updated in (only exposed in `dynamic` workspace mode). |
476
+
477
+
478
+ The `update_pipeline`-tool returns a success message and the full pipeline object if the pipeline update was successful.
479
+ If there are validation errors during the update, the errors are returned alongside the pipeline object.
480
+
481
+ **Validate Pipeline**
482
+
483
+ | Parameter | Type | Description |
484
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
485
+ | yaml_configuration | str | The yaml configuration to validate. |
486
+ | workspace | str | The name of the workspace to validate the pipeline against (only exposed in `dynamic` workspace mode). |
487
+
488
+
489
+ The `validate_pipeline`-tool validates a pipeline configuration without creating it. Returns validation results including any errors or warnings found in the configuration.
490
+
491
+ **Get Pipeline Logs**
492
+
493
+ | Parameter | Type | Description |
494
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
495
+ | pipeline_name | str | The name of the pipeline to get logs for. |
496
+ | limit | int | The maximum number of log entries to return (default: 30). |
497
+ | level | str | The log level to filter by. Options: `info`, `warning`, `error`. |
498
+ | workspace | str | The name of the workspace to get pipeline logs from (only exposed in `dynamic` workspace mode). |
499
+
500
+
501
+ The `get_pipeline_logs`-tool returns log entries for a specific pipeline. Logs are returned in chronological order with the most recent entries first.
502
+
503
+ **Deploy Pipeline**
504
+
505
+ | Parameter | Type | Description |
506
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
507
+ | pipeline_name | str | The name of the pipeline to deploy. |
508
+ | workspace | str | The name of the workspace to deploy the pipeline from (only exposed in `dynamic` workspace mode). |
509
+
510
+
511
+ The `deploy_pipeline`-tool deploys a pipeline to make it active and available for execution.
512
+ Deployment takes up to 5 minutes. The tool will wait for the deployment before returning.
513
+ It returns a success message when the deployment was successful.
514
+
515
+ **Search Pipeline**
516
+
517
+ | Parameter | Type | Description |
518
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
519
+ | pipeline_name | str | The name of the pipeline to use for searching. |
520
+ | query | str | The search query to execute using the pipeline. |
521
+ | workspace | str | The name of the workspace containing the pipeline (only exposed in `dynamic` workspace mode). |
522
+
523
+
524
+ The `search_pipeline`-tool executes a search query using the specified pipeline. Returns search results based on the pipeline's configured search logic and data sources.
525
+
526
+ #### Indexes
527
+
528
+ **List Indexes**
529
+
530
+ | Parameter | Type | Description |
531
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
532
+ | workspace | str | The name of the workspace that the indexes should be listed from (only exposed in `dynamic` workspace mode). |
533
+
534
+ The `list_indexes`-tool returns a list of all indexes in a workspace. The indexes are returned in a condensed version without their full yaml configuration.
535
+
536
+ **Get Index**
537
+
538
+ | Parameter | Type | Description |
539
+ |--------------------|------|------------------------------------------------------------------------------------------------|
540
+ | index_name | str | The name of the index to get. |
541
+ | workspace | str | The name of the workspace to get the index from (only exposed in `dynamic` workspace mode). |
542
+
543
+ The `get_index`-tool returns the full index object including its yaml configuration.
544
+
545
+ **Create Index**
546
+
547
+ | Parameter | Type | Description |
548
+ |--------------------|------|--------------------------------------------------------------------------------------------------------------|
549
+ | index_name | str | The name to use for the new index. |
550
+ | yaml_configuration | str | The yaml configuration defining the index. |
551
+ | description | str | A description of the index purpose and contents. |
552
+ | workspace | str | The name of the workspace that the index should be created in (only exposed in `dynamic` workspace mode). |
553
+
554
+ The `create_index`-tool returns a success message and the full index object if index creation was successful.
555
+ If there are validation errors during creation, the errors are returned alongside the index object.
556
+
557
+ **Update Index**
558
+
559
+ | Parameter | Type | Description |
560
+ |------------------------|------|--------------------------------------------------------------------------------------------------------------|
561
+ | workspace | str | The name of the workspace that the index should be updated in (only exposed in `dynamic` workspace mode). |
562
+ | index_name | str | The name of the index to update. |
563
+ | updated_index_name | str | The new name for the index (optional). |
564
+ | yaml_configuration | str | The updated yaml configuration for the index (optional). |
565
+
566
+ The `update_index`-tool returns a success message and the full index object if the index update was successful.
567
+ If there are validation errors during the update, the errors are returned alongside the index object.
568
+
569
+ **Deploy Index**
570
+
571
+ | Parameter | Type | Description |
572
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
573
+ | workspace | str | The name of the workspace to deploy the index from (only exposed in `dynamic` workspace mode). |
574
+ | index_name | str | The name of the index to deploy. |
575
+
576
+ The `deploy_index`-tool deploys an index to make it active and available for use.
577
+ It returns a success message when the deployment was successful or validation errors if there are issues.
578
+
579
+
580
+ #### Templates
581
+
582
+ **List Templates**
583
+
584
+ | Parameter | Type | Description |
585
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
586
+ | workspace | str | The name of the workspace that the templates should be listed from (only exposed in `dynamic` workspace mode). |
587
+ | pipeline_type | str | The type of pipeline templates to list. Options: `query`, `indexing`. |
588
+
589
+ The `list_templates`-tool returns a list of all templates in a workspace for the specified pipeline type. Templates are returned with their basic information including name, description, and use cases.
590
+
591
+ **Get Template**
592
+
593
+ | Parameter | Type | Description |
594
+ |--------------------|------|------------------------------------------------------------------------------------------------|
595
+ | workspace | str | The name of the workspace to get the template from (only exposed in `dynamic` workspace mode). |
596
+ | template_name | str | The name of the template to get. |
597
+
598
+ The `get_template`-tool returns the full template object including its yaml configuration, description, name, use cases, and additional metadata.
599
+
600
+ **Search Templates**
601
+
602
+ | Parameter | Type | Description |
603
+ |--------------------|------|----------------------------------------------------------------------------------------------------------------|
604
+ | query | str | The search query to find matching templates. |
605
+ | workspace | str | The name of the workspace to search templates in (only exposed in `dynamic` workspace mode). |
606
+ | top_k | int | The maximum number of template results to return (default: 10). |
607
+ | pipeline_type | str | The type of pipeline templates to search. Options: `query`, `indexing`. |
608
+
609
+ The `search_templates`-tool searches for templates based on the provided query. Returns matching templates ranked by relevance with their basic information and use cases.
610
+
611
+ #### Workspaces
612
+
613
+ **List Workspaces**
614
+
615
+ | Parameter | Type | Description |
616
+ |-----------|------|-------------|
617
+ | - | - | - |
618
+
619
+ The `list_workspaces`-tool returns a list of all workspaces available to the user. Each workspace contains information about its name, ID, supported languages, and default idle timeout settings.
620
+
621
+ **Get Workspace**
622
+
623
+ | Parameter | Type | Description |
624
+ |----------------|------|------------------------------------------------------------------------------------------------|
625
+ | workspace_name | str | The name of the workspace to fetch details for. |
626
+
627
+ The `get_workspace`-tool returns detailed information about a specific workspace, including its unique ID, supported languages, and configuration settings.
628
+
629
+ **Create Workspace**
630
+
631
+ | Parameter | Type | Description |
632
+ |-----------|------|------------------------------------------------------------------------------------------------|
633
+ | name | str | The name for the new workspace. Must be unique. |
634
+
635
+ The `create_workspace`-tool creates a new workspace that can be used to organize pipelines, indexes, and other resources.
636
+ Returns success confirmation or error message.
637
+
638
+ #### Secrets
639
+
640
+ **List Secrets**
641
+
642
+ | Parameter | Type | Description |
643
+ |-----------|------|------------------------------------------------------------------------------------------------|
644
+ | limit | int | Maximum number of secrets to return (default: 10). |
645
+
646
+ The `list_secrets`-tool retrieves a list of all secrets available in the user's deepset organization with their names and IDs.
647
+
648
+ **Get Secret**
649
+
650
+ | Parameter | Type | Description |
651
+ |-----------|------|------------------------------------------------------------------------------------------------|
652
+ | secret_id | str | The unique identifier of the secret to retrieve. |
653
+
654
+ The `get_secret`-tool retrieves detailed information about a specific secret by its ID. The secret value itself is not returned for security reasons, only metadata.
655
+
656
+ #### Object Store
657
+
658
+ **Get From Object Store**
659
+
660
+ | Parameter | Type | Description |
661
+ |-----------|------|------------------------------------------------------------------------------------------------|
662
+ | object_id | str | The ID of the object to fetch in the format `@obj_001`. |
663
+ | path | str | The path of the object to fetch in the format `access.to.attr` (optional). |
664
+ | workspace | str | The name of the workspace (only exposed in `dynamic` workspace mode). |
665
+
666
+ The `get_from_object_store`-tool fetches an object from the object store. You can fetch a specific object by its ID or access nested paths within the object.
667
+
668
+ **Get Slice From Object Store**
669
+
670
+ | Parameter | Type | Description |
671
+ |-----------|------|------------------------------------------------------------------------------------------------|
672
+ | object_id | str | Identifier of the object. |
673
+ | start | int | Start index for slicing (default: 0). |
674
+ | end | int | End index for slicing (optional). |
675
+ | path | str | Navigation path to object to slice (optional). |
676
+ | workspace | str | The name of the workspace (only exposed in `dynamic` workspace mode). |
677
+
678
+ The `get_slice_from_object_store`-tool extracts a slice from a string or list object stored in the object store. Returns string representation of the slice.
679
+
680
+ #### Components
681
+
682
+ **List Component Families**
683
+
684
+ | Parameter | Type | Description |
685
+ |-----------|------|-------------|
686
+ | - | - | - |
687
+
688
+ The `list_component_families`-tool returns a list of all Haystack component families available on deepset, with their names and descriptions.
689
+
690
+ **Search Component Definitions**
691
+
692
+ | Parameter | Type | Description |
693
+ |-----------|------|------------------------------------------------------------------------------------------------|
694
+ | query | str | The search query to find matching components. |
695
+ | top_k | int | Maximum number of results to return (default: 5). |
696
+
697
+ The `search_component_definitions`-tool searches for components based on name or description using semantic similarity.
698
+ Returns matching components with similarity scores.
699
+
700
+ **Get Component Definition**
701
+
702
+ | Parameter | Type | Description |
703
+ |----------------|------|------------------------------------------------------------------------------------------------|
704
+ | component_type | str | Fully qualified component type (e.g., `haystack.components.routers.conditional_router.ConditionalRouter`). |
705
+
706
+ The `get_component_definition`-tool returns the detailed definition of a specific Haystack component, including its parameters, input and output connections, and documentation.
707
+
708
+ **Get Custom Components**
709
+
710
+ | Parameter | Type | Description |
711
+ |-----------|------|------------------------------------------------------------------------------------------------|
712
+ | workspace | str | The name of the workspace (only exposed in `dynamic` workspace mode). |
713
+
714
+ The `get_custom_components`-tool returns a list of all installed custom components.
715
+
716
+ **List Custom Component Installations**
717
+
718
+ | Parameter | Type | Description |
719
+ |-----------|------|------------------------------------------------------------------------------------------------|
720
+ | workspace | str | The name of the workspace (only exposed in `dynamic` workspace mode). |
721
+
722
+ The `list_custom_component_installations`-tool returns a list of custom component installations with their status and metadata.
723
+
724
+ **Get Latest Custom Component Installation Logs**
725
+
726
+ | Parameter | Type | Description |
727
+ |-----------|------|------------------------------------------------------------------------------------------------|
728
+ | workspace | str | The name of the workspace (only exposed in `dynamic` workspace mode). |
729
+
730
+ The `get_latest_custom_component_installation_logs`-tool returns the logs from the latest custom component installation for debugging and monitoring purposes.
731
+
732
+ #### Documentation
733
+
734
+ **Search Docs**
735
+
736
+ | Parameter | Type | Description |
737
+ |-----------|------|------------------------------------------------------------------------------------------------|
738
+ | query | str | The search query to execute against the documentation. |
739
+
740
+ The `search_docs`-tool allows you to search through deepset's official documentation to find information about features, API usage, best practices, and troubleshooting guides.
741
+ Returns formatted search results from the documentation.
742
+
743
+
744
+ ## Known Limitations
745
+
746
+ This MCP server is in Beta. Please report any issues you may face through a GitHub Issue.
747
+ Feature requests and feedback are also appreciated.
748
+
749
+ **Updating Deployed Pipelines**
750
+
751
+ When a pipeline is deployed and updated through the `update_pipeline` tool, the update takes 30 to 300 seconds to apply.
752
+ The tool is currently returning before the pipeline update is applied. This may lead to situations where the Agent might have
753
+ already fixed an issue with a pipeline but when it tests it through search, the fix is not applied yet.
754
+ This might lead to the Agent repeatedly trying different update strategies, although no further action might be required.
755
+ You can check the state of the update in the pipeline logs. If "Application Startup Complete" appears in the logs,
756
+ the pipeline update should be applied.
757
+
758
+ **Deploying Indexes**
759
+
760
+ When an index is deployed, we are currently not waiting for the deployment to complete before returning a success message.
761
+ If the Agent deploys an index and tries a search immediately after, the search request may fail because the deployment is still in progress.