deepset-mcp 0.0.2__tar.gz
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.
- deepset_mcp-0.0.2/.github/workflows/ai_agent.yml +27 -0
- deepset_mcp-0.0.2/.github/workflows/ci.yml +71 -0
- deepset_mcp-0.0.2/.github/workflows/docker_push.yml +45 -0
- deepset_mcp-0.0.2/.github/workflows/pypi_release.yml +47 -0
- deepset_mcp-0.0.2/.gitignore +28 -0
- deepset_mcp-0.0.2/.python-version +1 -0
- deepset_mcp-0.0.2/Dockerfile +57 -0
- deepset_mcp-0.0.2/Makefile +62 -0
- deepset_mcp-0.0.2/PKG-INFO +288 -0
- deepset_mcp-0.0.2/README.md +249 -0
- deepset_mcp-0.0.2/REPO.md +132 -0
- deepset_mcp-0.0.2/assets/claude_desktop_projects.png +0 -0
- deepset_mcp-0.0.2/assets/claude_desktop_with_tools.png +0 -0
- deepset_mcp-0.0.2/assets/deepset-mcp-3.gif +0 -0
- deepset_mcp-0.0.2/entrypoint.sh +16 -0
- deepset_mcp-0.0.2/pyproject.toml +147 -0
- deepset_mcp-0.0.2/src/deepset_mcp/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/agents/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/agents/debugging/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/agents/debugging/debugging_agent.py +37 -0
- deepset_mcp-0.0.2/src/deepset_mcp/agents/debugging/system_prompt.md +214 -0
- deepset_mcp-0.0.2/src/deepset_mcp/agents/generalist/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/agents/generalist/generalist_agent.py +38 -0
- deepset_mcp-0.0.2/src/deepset_mcp/agents/generalist/system_prompt.md +241 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/README.md +536 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/client.py +277 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/custom_components/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/custom_components/models.py +25 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/custom_components/protocols.py +17 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/custom_components/resource.py +56 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/exceptions.py +70 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/haystack_service/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/haystack_service/protocols.py +13 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/haystack_service/resource.py +55 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/indexes/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/indexes/models.py +63 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/indexes/protocols.py +53 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/indexes/resource.py +138 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/integrations/__init__.py +1 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/integrations/models.py +49 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/integrations/protocols.py +27 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/integrations/resource.py +57 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline/__init__.py +17 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline/log_level.py +9 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline/models.py +235 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline/protocols.py +83 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline/resource.py +378 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline_template/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline_template/models.py +56 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline_template/protocols.py +17 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/pipeline_template/resource.py +88 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/protocols.py +122 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/secrets/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/secrets/models.py +16 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/secrets/protocols.py +29 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/secrets/resource.py +112 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/shared_models.py +17 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/transport.py +336 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/user/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/user/protocols.py +11 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/user/resource.py +38 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/workspace/__init__.py +7 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/workspace/models.py +23 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/workspace/protocols.py +41 -0
- deepset_mcp-0.0.2/src/deepset_mcp/api/workspace/resource.py +94 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/README.md +425 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/__init__.py +1 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/agent_configs/debugging_agent.yml +10 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/agent_configs/generalist_agent.yml +6 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/dp_validation_error_analysis/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/dp_validation_error_analysis/eda.ipynb +757 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/dp_validation_error_analysis/prepare_interaction_data.ipynb +167 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/dp_validation_error_analysis/preprocessing_utils.py +213 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/agent_benchmark_runner.py +561 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/agent_loader.py +110 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/cli.py +39 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/cli_agent.py +373 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/cli_index.py +71 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/cli_pipeline.py +73 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/cli_tests.py +226 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/cli_utils.py +61 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/config.py +73 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/config_loader.py +64 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/interactive.py +140 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/models.py +203 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/repl.py +67 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/setup_actions.py +238 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/streaming.py +360 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/teardown_actions.py +196 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/runner/tracing.py +21 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/chat_rag_answers_wrong_format.yml +16 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/documents_output_wrong.yml +13 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/jinja_str_instead_of_complex_type.yml +11 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/jinja_syntax_error.yml +11 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/missing_output_mapping.yml +14 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/no_query_input.yml +13 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/pipelines/chat_agent_jinja_str.yml +141 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/pipelines/chat_agent_jinja_syntax.yml +141 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/pipelines/chat_rag_answers_wrong_format.yml +181 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/pipelines/chat_rag_missing_output_mapping.yml +189 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/pipelines/rag_documents_wrong_format.yml +193 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/pipelines/rag_no_query_input.yml +191 -0
- deepset_mcp-0.0.2/src/deepset_mcp/benchmark/tasks/pipelines/standard_index.yml +167 -0
- deepset_mcp-0.0.2/src/deepset_mcp/initialize_embedding_model.py +12 -0
- deepset_mcp-0.0.2/src/deepset_mcp/main.py +133 -0
- deepset_mcp-0.0.2/src/deepset_mcp/prompts/deepset_copilot_prompt.md +271 -0
- deepset_mcp-0.0.2/src/deepset_mcp/prompts/deepset_debugging_agent.md +214 -0
- deepset_mcp-0.0.2/src/deepset_mcp/store.py +5 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tool_factory.py +473 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/__init__.py +0 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/custom_components.py +52 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/doc_search.py +83 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/haystack_service.py +358 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/haystack_service_models.py +97 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/indexes.py +129 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/model_protocol.py +16 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/pipeline.py +335 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/pipeline_template.py +116 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/secrets.py +45 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/tokonomics/__init__.py +73 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/tokonomics/decorators.py +396 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/tokonomics/explorer.py +347 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/tokonomics/object_store.py +177 -0
- deepset_mcp-0.0.2/src/deepset_mcp/tools/workspace.py +61 -0
- deepset_mcp-0.0.2/test/__init__.py +0 -0
- deepset_mcp-0.0.2/test/integration/__init__.py +0 -0
- deepset_mcp-0.0.2/test/integration/conftest.py +54 -0
- deepset_mcp-0.0.2/test/integration/test_integration_haystack_service_resource.py +39 -0
- deepset_mcp-0.0.2/test/integration/test_integration_index_resource.py +379 -0
- deepset_mcp-0.0.2/test/integration/test_integration_integrations_resource.py +73 -0
- deepset_mcp-0.0.2/test/integration/test_integration_pipeline_logs.py +207 -0
- deepset_mcp-0.0.2/test/integration/test_integration_pipeline_resource.py +381 -0
- deepset_mcp-0.0.2/test/integration/test_integration_pipeline_template_resource.py +145 -0
- deepset_mcp-0.0.2/test/integration/test_integration_secret_resource.py +194 -0
- deepset_mcp-0.0.2/test/integration/test_integration_workspace_resource.py +64 -0
- deepset_mcp-0.0.2/test/unit/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/api/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/api/custom_components/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/api/custom_components/test_custom_components_resource.py +125 -0
- deepset_mcp-0.0.2/test/unit/api/haystack_service/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/api/haystack_service/test_haystack_service_resource.py +113 -0
- deepset_mcp-0.0.2/test/unit/api/indexes/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/api/indexes/test_index_resource.py +412 -0
- deepset_mcp-0.0.2/test/unit/api/integrations/__init__.py +1 -0
- deepset_mcp-0.0.2/test/unit/api/integrations/test_integration_resource.py +192 -0
- deepset_mcp-0.0.2/test/unit/api/pipeline/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/api/pipeline/test_pipeline_resource.py +1082 -0
- deepset_mcp-0.0.2/test/unit/api/pipeline/test_pipeline_resource_search.py +478 -0
- deepset_mcp-0.0.2/test/unit/api/pipeline_template/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/api/pipeline_template/test_pipeline_template_resource.py +270 -0
- deepset_mcp-0.0.2/test/unit/api/secrets/test_secret_resource.py +206 -0
- deepset_mcp-0.0.2/test/unit/api/test_transport.py +227 -0
- deepset_mcp-0.0.2/test/unit/api/user/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/api/user/test_user_resource.py +76 -0
- deepset_mcp-0.0.2/test/unit/api/workspace/__init__.py +1 -0
- deepset_mcp-0.0.2/test/unit/api/workspace/test_workspace_resource.py +308 -0
- deepset_mcp-0.0.2/test/unit/conftest.py +281 -0
- deepset_mcp-0.0.2/test/unit/test_async_deepset_client.py +158 -0
- deepset_mcp-0.0.2/test/unit/tools/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/tools/test_custom_components.py +269 -0
- deepset_mcp-0.0.2/test/unit/tools/test_doc_search.py +304 -0
- deepset_mcp-0.0.2/test/unit/tools/test_haystack_service.py +516 -0
- deepset_mcp-0.0.2/test/unit/tools/test_indexes.py +429 -0
- deepset_mcp-0.0.2/test/unit/tools/test_pipeline.py +1210 -0
- deepset_mcp-0.0.2/test/unit/tools/test_pipeline_template.py +354 -0
- deepset_mcp-0.0.2/test/unit/tools/test_secrets.py +180 -0
- deepset_mcp-0.0.2/test/unit/tools/test_workspace.py +239 -0
- deepset_mcp-0.0.2/test/unit/tools/tokonomics/__init__.py +0 -0
- deepset_mcp-0.0.2/test/unit/tools/tokonomics/test_decorators.py +452 -0
- deepset_mcp-0.0.2/test/unit/tools/tokonomics/test_explorable.py +165 -0
- deepset_mcp-0.0.2/test/unit/tools/tokonomics/test_explorer.py +447 -0
- deepset_mcp-0.0.2/test/unit/tools/tokonomics/test_integration.py +439 -0
- deepset_mcp-0.0.2/test/unit/tools/tokonomics/test_object_ref.py +161 -0
- deepset_mcp-0.0.2/test/unit/tools/tokonomics/test_object_store.py +220 -0
- deepset_mcp-0.0.2/uv.lock +2841 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: AI Agent
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types: [labeled]
|
|
6
|
+
issue_comment:
|
|
7
|
+
types: [created]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
process-ai-issue:
|
|
11
|
+
if: |
|
|
12
|
+
(github.event_name == 'issues' && github.event.label.name == 'deepset-ai') ||
|
|
13
|
+
(github.event_name == 'issue_comment' && contains(github.event.issue.labels.*.name, 'deepset-ai'))
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Send Issue to deepset AI Platform
|
|
17
|
+
env:
|
|
18
|
+
DEEPSET_API_TOKEN: ${{ secrets.DEEPSET_API_TOKEN }}
|
|
19
|
+
ISSUE_URL: ${{ github.event.issue.html_url }}
|
|
20
|
+
REPOSITORY: ${{ github.repository }}
|
|
21
|
+
run: |
|
|
22
|
+
curl --request POST \
|
|
23
|
+
--url https://api.cloud.deepset.ai/api/v1/workspaces/default/pipelines/github-agent-claude/search \
|
|
24
|
+
--header 'accept: application/json' \
|
|
25
|
+
--header 'authorization: Bearer ${{ env.DEEPSET_API_TOKEN }}' \
|
|
26
|
+
--header 'content-type: application/json' \
|
|
27
|
+
--data '{"debug": false, "view_prompts": false, "queries": ["${{ env.ISSUE_URL }}"], "params": {"agent": {"repo": "${{ env.REPOSITORY }}"}}}'
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
name: Run CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
name: Run Tests
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Install uv
|
|
17
|
+
uses: astral-sh/setup-uv@v5
|
|
18
|
+
|
|
19
|
+
- name: Install Python
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version-file: ".python-version"
|
|
23
|
+
|
|
24
|
+
- name: Install project
|
|
25
|
+
run: uv sync --locked --all-extras --dev
|
|
26
|
+
|
|
27
|
+
- name: Run tests
|
|
28
|
+
run: uv run --dev pytest -m "not integration"
|
|
29
|
+
|
|
30
|
+
lint:
|
|
31
|
+
name: Run Linting
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v4
|
|
35
|
+
|
|
36
|
+
- name: Install uv
|
|
37
|
+
uses: astral-sh/setup-uv@v5
|
|
38
|
+
|
|
39
|
+
- name: Install Python
|
|
40
|
+
uses: actions/setup-python@v5
|
|
41
|
+
with:
|
|
42
|
+
python-version-file: ".python-version"
|
|
43
|
+
|
|
44
|
+
- name: Install project
|
|
45
|
+
run: uv sync --locked --all-extras --group lint
|
|
46
|
+
|
|
47
|
+
- name: Run lint
|
|
48
|
+
run: uv run ruff check
|
|
49
|
+
|
|
50
|
+
- name: Run format
|
|
51
|
+
run: uv run ruff format --check
|
|
52
|
+
|
|
53
|
+
types:
|
|
54
|
+
name: Run mypy
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
steps:
|
|
57
|
+
- uses: actions/checkout@v4
|
|
58
|
+
|
|
59
|
+
- name: Install uv
|
|
60
|
+
uses: astral-sh/setup-uv@v5
|
|
61
|
+
|
|
62
|
+
- name: Install Python
|
|
63
|
+
uses: actions/setup-python@v5
|
|
64
|
+
with:
|
|
65
|
+
python-version-file: ".python-version"
|
|
66
|
+
|
|
67
|
+
- name: Install project
|
|
68
|
+
run: uv sync --locked --all-extras --group types
|
|
69
|
+
|
|
70
|
+
- name: Run types
|
|
71
|
+
run: uv run mypy src/ test/
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Docker image release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
tags: ["v[0-9].[0-9]+.[0-9]+*"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build-and-push:
|
|
12
|
+
name: Build base image
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
if: github.repository_owner == 'deepset-ai'
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Set up QEMU
|
|
21
|
+
uses: docker/setup-qemu-action@v3
|
|
22
|
+
|
|
23
|
+
- name: Set up Docker Buildx
|
|
24
|
+
uses: docker/setup-buildx-action@v3
|
|
25
|
+
|
|
26
|
+
- name: Login to DockerHub
|
|
27
|
+
uses: docker/login-action@v3
|
|
28
|
+
with:
|
|
29
|
+
username: ${{ secrets.DOCKER_HUB_USER }}
|
|
30
|
+
password: ${{ secrets.DOCKER_HUB_TOKEN }}
|
|
31
|
+
|
|
32
|
+
- name: Docker meta
|
|
33
|
+
id: meta
|
|
34
|
+
uses: docker/metadata-action@v5
|
|
35
|
+
with:
|
|
36
|
+
images: deepset/deepset-mcp-server
|
|
37
|
+
|
|
38
|
+
- name: Build and push Docker image
|
|
39
|
+
uses: docker/build-push-action@v6
|
|
40
|
+
with:
|
|
41
|
+
context: .
|
|
42
|
+
platforms: linux/amd64,linux/arm64
|
|
43
|
+
push: true
|
|
44
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
45
|
+
labels: ${{ steps.meta.outputs.labels }}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Publish deepset-mcp distribution to PyPI and TestPyPI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags:
|
|
5
|
+
- 'v*.*.*' # matches v1.0.0, v0.10.0, etc.
|
|
6
|
+
- 'v*.*.*-rc*' # matches v1.0.2-rc1, v0.10.0-rc2, etc.
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
name: Build distribution
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
with:
|
|
14
|
+
persist-credentials: false
|
|
15
|
+
- name: Install uv
|
|
16
|
+
uses: astral-sh/setup-uv@v5
|
|
17
|
+
- name: Set up Python
|
|
18
|
+
run: uv python install
|
|
19
|
+
- name: Install the project
|
|
20
|
+
run: uv sync --locked --all-extras --dev
|
|
21
|
+
- name: Build a binary wheel and a source tarball
|
|
22
|
+
run: uv build
|
|
23
|
+
- name: Store the distribution packages
|
|
24
|
+
uses: actions/upload-artifact@v4
|
|
25
|
+
with:
|
|
26
|
+
name: python-package-distributions
|
|
27
|
+
path: dist/
|
|
28
|
+
publish-to-pypi:
|
|
29
|
+
name: >-
|
|
30
|
+
Publish deepset-mcp distribution to PyPI
|
|
31
|
+
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
|
|
32
|
+
needs:
|
|
33
|
+
- build
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
environment:
|
|
36
|
+
name: pypi
|
|
37
|
+
url: https://pypi.org/p/deepset-mcp
|
|
38
|
+
permissions:
|
|
39
|
+
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
40
|
+
steps:
|
|
41
|
+
- name: Download all the dists
|
|
42
|
+
uses: actions/download-artifact@v4
|
|
43
|
+
with:
|
|
44
|
+
name: python-package-distributions
|
|
45
|
+
path: dist/
|
|
46
|
+
- name: Publish distribution to PyPI
|
|
47
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
data/
|
|
7
|
+
wheels/
|
|
8
|
+
*.egg-info
|
|
9
|
+
|
|
10
|
+
# Virtual environments
|
|
11
|
+
.venv
|
|
12
|
+
|
|
13
|
+
# env files
|
|
14
|
+
.env
|
|
15
|
+
.env.prod
|
|
16
|
+
.env.dev
|
|
17
|
+
.env.test
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
agent_runs/
|
|
21
|
+
|
|
22
|
+
misc.xml
|
|
23
|
+
modules.xml
|
|
24
|
+
profiles_settings.xml
|
|
25
|
+
deepset-mcp-server.iml
|
|
26
|
+
Project_Default.xml
|
|
27
|
+
pyright-overrides.xml
|
|
28
|
+
vcs.xml
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# ─── BUILD STAGE ───────────────────────────────────────────────────────────────
|
|
2
|
+
FROM python:3.11-slim AS builder
|
|
3
|
+
|
|
4
|
+
# 1. Install curl & build tools for uv & any C extensions
|
|
5
|
+
RUN apt-get update \
|
|
6
|
+
&& apt-get install -y --no-install-recommends curl build-essential git \
|
|
7
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
8
|
+
|
|
9
|
+
# 2. Install uv standalone and symlink it
|
|
10
|
+
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
|
|
11
|
+
&& ln -sf /root/.local/bin/uv /usr/local/bin/uv
|
|
12
|
+
|
|
13
|
+
WORKDIR /src
|
|
14
|
+
|
|
15
|
+
# We need git for uv-dynamic-versioning
|
|
16
|
+
COPY .git/ .git/
|
|
17
|
+
|
|
18
|
+
# 3. Copy in only what uv needs to build the locked venv
|
|
19
|
+
COPY pyproject.toml uv.lock README.md entrypoint.sh ./
|
|
20
|
+
COPY src/deepset_mcp/ src/deepset_mcp/
|
|
21
|
+
|
|
22
|
+
# 4. Create & populate .venv from uv.lock
|
|
23
|
+
RUN uv sync --locked
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# ─── RUNTIME STAGE ─────────────────────────────────────────────────────────────
|
|
28
|
+
FROM python:3.11-slim
|
|
29
|
+
|
|
30
|
+
# 2. Create an unprivileged user with a home directory
|
|
31
|
+
RUN groupadd --system appgroup \
|
|
32
|
+
&& useradd --system --create-home --home-dir /home/appuser --gid appgroup appuser
|
|
33
|
+
|
|
34
|
+
ENV HOME=/home/appuser
|
|
35
|
+
|
|
36
|
+
WORKDIR /app
|
|
37
|
+
|
|
38
|
+
# 5. Copy in the pre-built venv and your project sources
|
|
39
|
+
COPY --from=builder /src/.venv /app/.venv
|
|
40
|
+
COPY --from=builder /src/pyproject.toml /app/pyproject.toml
|
|
41
|
+
COPY --from=builder /src/uv.lock /app/uv.lock
|
|
42
|
+
COPY --from=builder /src/README.md /app/README.md
|
|
43
|
+
COPY --from=builder /src/src/deepset_mcp /app/src/deepset_mcp
|
|
44
|
+
COPY --from=builder /src/entrypoint.sh /app/entrypoint.sh
|
|
45
|
+
|
|
46
|
+
RUN chmod +x /app/entrypoint.sh
|
|
47
|
+
|
|
48
|
+
# 6. Ensure appuser owns all of /app
|
|
49
|
+
RUN chown -R appuser:appgroup /app
|
|
50
|
+
|
|
51
|
+
# 7. Put the venv’s bin first in PATH
|
|
52
|
+
ENV PATH="/app/.venv/bin:${PATH}"
|
|
53
|
+
|
|
54
|
+
# 9. Switch to non-root user
|
|
55
|
+
USER appuser
|
|
56
|
+
|
|
57
|
+
ENTRYPOINT ["/app/entrypoint.sh"]
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
.PHONY: help install test test-unit test-integration test-integration-slow test-all lint lint-fix format format-check types clean
|
|
2
|
+
|
|
3
|
+
# Default target
|
|
4
|
+
help:
|
|
5
|
+
@echo "Available commands:"
|
|
6
|
+
@echo " install Install dependencies with uv"
|
|
7
|
+
@echo " test-unit Run unit tests only (excludes integration tests)"
|
|
8
|
+
@echo " test-integration Run integration tests without extra slow tests"
|
|
9
|
+
@echo " test-integration-slow Run integration tests including extra slow tests"
|
|
10
|
+
@echo " test-all Run all tests"
|
|
11
|
+
@echo " lint Run ruff check"
|
|
12
|
+
@echo " lint-fix Run ruff check with --fix"
|
|
13
|
+
@echo " format Run ruff format"
|
|
14
|
+
@echo " format-check Run ruff format with --check"
|
|
15
|
+
@echo " types Run mypy type checking"
|
|
16
|
+
@echo " clean Clean up cache files"
|
|
17
|
+
|
|
18
|
+
# Install dependencies
|
|
19
|
+
install:
|
|
20
|
+
uv sync --locked --all-extras --all-groups
|
|
21
|
+
|
|
22
|
+
# Test commands
|
|
23
|
+
test-unit:
|
|
24
|
+
uv run --dev pytest -m "not integration"
|
|
25
|
+
|
|
26
|
+
test-integration:
|
|
27
|
+
uv run --dev pytest -m "integration and not extra_slow"
|
|
28
|
+
|
|
29
|
+
test-integration-slow:
|
|
30
|
+
uv run --dev pytest -m "integration"
|
|
31
|
+
|
|
32
|
+
test-all:
|
|
33
|
+
uv run --dev pytest
|
|
34
|
+
|
|
35
|
+
# Shorthand for test-unit (most common use case)
|
|
36
|
+
test: test-unit
|
|
37
|
+
|
|
38
|
+
# Linting commands
|
|
39
|
+
lint:
|
|
40
|
+
uv run ruff check
|
|
41
|
+
|
|
42
|
+
lint-fix:
|
|
43
|
+
uv run ruff check --fix
|
|
44
|
+
|
|
45
|
+
# Formatting commands
|
|
46
|
+
format:
|
|
47
|
+
uv run ruff format
|
|
48
|
+
|
|
49
|
+
format-check:
|
|
50
|
+
uv run ruff format --check
|
|
51
|
+
|
|
52
|
+
# Type checking
|
|
53
|
+
types:
|
|
54
|
+
uv run mypy src/ test/
|
|
55
|
+
|
|
56
|
+
# Clean up
|
|
57
|
+
clean:
|
|
58
|
+
find . -type f -name "*.pyc" -delete
|
|
59
|
+
find . -type d -name "__pycache__" -delete
|
|
60
|
+
find . -type d -name ".pytest_cache" -exec rm -rf {} +
|
|
61
|
+
find . -type d -name ".mypy_cache" -exec rm -rf {} +
|
|
62
|
+
find . -type d -name ".ruff_cache" -exec rm -rf {} +
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: deepset-mcp
|
|
3
|
+
Version: 0.0.2
|
|
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
|
+
Keywords: Agents,Haystack,LLM,MCP,deepset,pipelines
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Programming Language :: Python
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Requires-Dist: fastapi
|
|
19
|
+
Requires-Dist: glom
|
|
20
|
+
Requires-Dist: httpx
|
|
21
|
+
Requires-Dist: mcp>=1.10.1
|
|
22
|
+
Requires-Dist: model2vec
|
|
23
|
+
Requires-Dist: numpy
|
|
24
|
+
Requires-Dist: pydantic>=2.0.0
|
|
25
|
+
Requires-Dist: pyyaml
|
|
26
|
+
Requires-Dist: rich
|
|
27
|
+
Provides-Extra: analysis
|
|
28
|
+
Requires-Dist: jupyterlab; extra == 'analysis'
|
|
29
|
+
Requires-Dist: matplotlib; extra == 'analysis'
|
|
30
|
+
Requires-Dist: pandas; extra == 'analysis'
|
|
31
|
+
Requires-Dist: seaborn; extra == 'analysis'
|
|
32
|
+
Provides-Extra: cli
|
|
33
|
+
Requires-Dist: anthropic-haystack>=2.7.0; extra == 'cli'
|
|
34
|
+
Requires-Dist: haystack-ai>=2.15.1; extra == 'cli'
|
|
35
|
+
Requires-Dist: langfuse-haystack; extra == 'cli'
|
|
36
|
+
Requires-Dist: mcp-haystack>=0.4.0; extra == 'cli'
|
|
37
|
+
Requires-Dist: typer; extra == 'cli'
|
|
38
|
+
Description-Content-Type: text/markdown
|
|
39
|
+
|
|
40
|
+
# MCP Server for the deepset AI platform
|
|
41
|
+
|
|
42
|
+
The deepset MCP server exposes tools that MCP clients like Claude or Cursor can use to interact with the deepset AI platform.
|
|
43
|
+
|
|
44
|
+
Agents can use these tools to:
|
|
45
|
+
|
|
46
|
+
- develop and iterate on Pipelines or Indexes
|
|
47
|
+
- debug Pipelines and Indexes
|
|
48
|
+
- search the deepset AI platform documentation
|
|
49
|
+
|
|
50
|
+
## Contents
|
|
51
|
+
|
|
52
|
+
- [1. Installation](#installation)
|
|
53
|
+
- [1.1. Claude Desktop](#claude-desktop-app)
|
|
54
|
+
- [1.2. Other MCP Clients](#other-mcp-clients)
|
|
55
|
+
- [1.3. Advanced Configuration](#advanced-configuration)
|
|
56
|
+
- [2. Prompts](#prompts)
|
|
57
|
+
- [3. Use Cases](#use-cases)
|
|
58
|
+
- [3.1. Creating Pipelines](#creating-pipelines)
|
|
59
|
+
- [3.2. Debugging Pipelines](#debugging-pipelines)
|
|
60
|
+
- [4. CLI](#cli)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+

|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
## Installation
|
|
70
|
+
|
|
71
|
+
### Claude Desktop App
|
|
72
|
+
|
|
73
|
+
**Prerequisites:**
|
|
74
|
+
- [Claude Desktop App](https://claude.ai/download) needs to be installed
|
|
75
|
+
- You need to be on the Claude Pro, Team, Max, or Enterprise plan
|
|
76
|
+
- You need an installation of [Docker](https://docs.docker.com/desktop/) ([Go here](#using-uv-instead-of-docker) if you want to use `uv` instead of Docker)
|
|
77
|
+
- You need an [API key](https://docs.cloud.deepset.ai/docs/generate-api-key) for the deepset platform
|
|
78
|
+
|
|
79
|
+
**Steps:**
|
|
80
|
+
1. Go to: `/Users/your_user/Library/Application Support/Claude` (Mac)
|
|
81
|
+
2. Either open or create `claude_desktop_config.json`
|
|
82
|
+
3. Add the following json as your config (or update your existing config if you are already using other MCP servers)
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"deepset": {
|
|
88
|
+
"command": "/usr/local/bin/docker",
|
|
89
|
+
"args": [
|
|
90
|
+
"run",
|
|
91
|
+
"-i",
|
|
92
|
+
"-e",
|
|
93
|
+
"DEEPSET_WORKSPACE",
|
|
94
|
+
"-e",
|
|
95
|
+
"DEEPSET_API_KEY",
|
|
96
|
+
"deepset/deepset-mcp-server:main"
|
|
97
|
+
],
|
|
98
|
+
"env": {
|
|
99
|
+
"DEEPSET_WORKSPACE":"<WORKSPACE>",
|
|
100
|
+
"DEEPSET_API_KEY":"<DEEPSET_API_KEY>"
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
4. Quit and start the Claude Desktop App
|
|
109
|
+
5. The deepset server should appear in the "Search and Tools" menu (this takes a few seconds as the Docker image needs to be downloaded and started)
|
|
110
|
+
|
|
111
|
+

|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
#### Using uv instead of Docker
|
|
116
|
+
|
|
117
|
+
Running the server with uv gives you faster startup time and consumes slightly less resources on your system.
|
|
118
|
+
|
|
119
|
+
1. [Install uv](https://docs.astral.sh/uv/guides/install-python/) if you don't have it yet
|
|
120
|
+
2. Put the following into your `claude_desktop_config.json`
|
|
121
|
+
|
|
122
|
+
```python
|
|
123
|
+
{
|
|
124
|
+
"mcpServers": {
|
|
125
|
+
"deepset": {
|
|
126
|
+
"command": "uvx",
|
|
127
|
+
"args": [
|
|
128
|
+
"deepset-mcp"
|
|
129
|
+
],
|
|
130
|
+
"env": {
|
|
131
|
+
"DEEPSET_WORKSPACE":"<WORKSPACE>",
|
|
132
|
+
"DEEPSET_API_KEY":"<DEEPSET_API_KEY>"
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
This will load the [deepset-mcp package from PyPi](https://pypi.org/project/deepset-mcp/) and install it into a temporary virtual environment.
|
|
141
|
+
|
|
142
|
+
3. Quit and start the Claude Desktop App
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
### Other MCP Clients
|
|
147
|
+
|
|
148
|
+
`deepset-mcp` can be used with other MCP clients.
|
|
149
|
+
|
|
150
|
+
Here is where you need to configure `deepset-mcp` for:
|
|
151
|
+
|
|
152
|
+
- [Cursor](https://docs.cursor.com/context/mcp#using-mcp-json)
|
|
153
|
+
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code/mcp#configure-mcp-servers)
|
|
154
|
+
- [Gemini CLI](https://cloud.google.com/gemini/docs/codeassist/use-agentic-chat-pair-programmer#configure-mcp-servers)
|
|
155
|
+
|
|
156
|
+
Generally speaking, depending on your installation, you need to configure an MCP client with one of the following commands:
|
|
157
|
+
|
|
158
|
+
`uvx deepset-mcp --workspace your_workspace --api-key your_api_key`
|
|
159
|
+
|
|
160
|
+
If you installed the deepset-mcp package globally and added it to your `PATH`, you can just run:
|
|
161
|
+
|
|
162
|
+
`deepset-mcp --workspace your_workspace --api-key your_api_key`
|
|
163
|
+
|
|
164
|
+
The server runs locally using `stdio` to communicate with the client.
|
|
165
|
+
|
|
166
|
+
### Advanced Configuration
|
|
167
|
+
|
|
168
|
+
#### Tool Selection
|
|
169
|
+
|
|
170
|
+
You can customize which tools the MCP server should expose.
|
|
171
|
+
Use the `´--tools`-option in your config to explicitly specify which tools should be exposed.
|
|
172
|
+
|
|
173
|
+
You can list available tools with: `deepset-mcp --list-tools`.
|
|
174
|
+
|
|
175
|
+
To only expose the `list_pipelines` and `get_pipeline` tools you would use the following command:
|
|
176
|
+
|
|
177
|
+
`deepset-mcp --tools list_pipelines get_pipeline`
|
|
178
|
+
|
|
179
|
+
For smooth operations, you should always expose the `get_from_object_store` and `get_slice_from_object_store` tools.
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
#### Allowing access to multiple workspaces
|
|
183
|
+
|
|
184
|
+
The basic configuration uses a hardcoded workspace which you pass in via the `DEEPSET_WORKSPACE` environment variable.
|
|
185
|
+
If you want to allow an agent to access resources from multiple workspaces, you can use `--workspace-mode explicit`
|
|
186
|
+
in your config.
|
|
187
|
+
|
|
188
|
+
For example:
|
|
189
|
+
|
|
190
|
+
```json
|
|
191
|
+
{
|
|
192
|
+
"mcpServers": {
|
|
193
|
+
"deepset": {
|
|
194
|
+
"command": "uvx",
|
|
195
|
+
"args": [
|
|
196
|
+
"deepset-mcp",
|
|
197
|
+
"--workspace-mode",
|
|
198
|
+
"explicit"
|
|
199
|
+
],
|
|
200
|
+
"env": {
|
|
201
|
+
"DEEPSET_API_KEY":"<DEEPSET_API_KEY>"
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
An agent using the MCP server now has access to all workspaces that the API-key has access to. When interacting with most
|
|
210
|
+
resources, you will need to tell the agent what workspace it should use to perform an action. Instead of prompting it
|
|
211
|
+
with "list my pipelines", you would now have to prompt it with "list my pipelines in the staging workspace".
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
## Prompts
|
|
215
|
+
|
|
216
|
+
All tools exposed through the MCP server have minimal prompts. Any Agent interacting with these tools benefits from an additional system prompt.
|
|
217
|
+
|
|
218
|
+
View the **recommended prompt** [here](src/deepset_mcp/prompts/deepset_debugging_agent.md).
|
|
219
|
+
|
|
220
|
+
This prompt is also exposed as the `deepset_recommended_prompt` on the MCP server.
|
|
221
|
+
In Claude Desktop, click `add from deepset` to add the prompt to your context.
|
|
222
|
+
A better way to add system prompts in Claude Desktop is through "Projects".
|
|
223
|
+
|
|
224
|
+
You can customize the system prompt to your specific needs.
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
## Use Cases
|
|
228
|
+
|
|
229
|
+
The primary way to use the deepset MCP server is through an LLM that interacts with the deepset MCP tools in an agentic way.
|
|
230
|
+
|
|
231
|
+
### Creating Pipelines
|
|
232
|
+
|
|
233
|
+
Tell the LLM about the type of pipeline you want to build. Creating new pipelines will work best if you use terminology
|
|
234
|
+
that is similar to what is used on the deepset AI platform or in Haystack.
|
|
235
|
+
|
|
236
|
+
Your prompts should be precise and specific.
|
|
237
|
+
|
|
238
|
+
Examples:
|
|
239
|
+
|
|
240
|
+
- "Build a RAG pipeline with hybrid retrieval that uses claude-sonnet-4 from Anthropic as the LLM."
|
|
241
|
+
- "Build an Agent that can iteratively search the web (deep research). Use SerperDev for web search and GPT-4o as the LLM."
|
|
242
|
+
|
|
243
|
+
You can also instruct the LLM to deploy pipelines, and it can issue search requests against pipelines to test them.
|
|
244
|
+
|
|
245
|
+
**Best Practices**
|
|
246
|
+
|
|
247
|
+
- be specific in your requests
|
|
248
|
+
- point the LLM to examples, if there is already a similar pipeline in your workspace, then ask it to look at it first,
|
|
249
|
+
if you have a template in mind, ask it to look at the template
|
|
250
|
+
- instruct the LLM to iterate with you locally before creating the pipeline, have it validate the drafts and then let it
|
|
251
|
+
create it once the pipeline is up to your standards
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
### Debugging Pipelines
|
|
255
|
+
|
|
256
|
+
The `deepset-mcp` tools allow LLMs to debug pipelines on the deepset AI platform.
|
|
257
|
+
Primary tools used for debugging are:
|
|
258
|
+
- get_logs
|
|
259
|
+
- validate_pipeline
|
|
260
|
+
- search_pipeline
|
|
261
|
+
- search_pipeline_templates
|
|
262
|
+
- search_component_definition
|
|
263
|
+
|
|
264
|
+
You can ask the LLM to check the logs of a specific pipeline in case it is already deployed but has errors.
|
|
265
|
+
The LLM will find errors in the logs and devise strategies to fix them.
|
|
266
|
+
If your pipeline is not deployed yet, the LLM can autonomously validate it and fix validation errors.
|
|
267
|
+
|
|
268
|
+
## CLI
|
|
269
|
+
You can use the MCP server as a Haystack Agent through a command-line interface.
|
|
270
|
+
|
|
271
|
+
Install with `uvx tool install "deepset-mcp[cli]"`.
|
|
272
|
+
|
|
273
|
+
Start the interactive CLI with:
|
|
274
|
+
|
|
275
|
+
`deepset agent chat`
|
|
276
|
+
|
|
277
|
+
You can set environment variables before starting the Agent via:
|
|
278
|
+
|
|
279
|
+
```shell
|
|
280
|
+
export DEEPSET_API_KEY=your_key
|
|
281
|
+
export DEEPSET_WORKSPACE=your_workspace
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
You can also provide an `.env` file using the `--env-file` option:
|
|
285
|
+
|
|
286
|
+
`deepset agent chat --env-file your/env/.file`
|
|
287
|
+
|
|
288
|
+
The agent will load environment variables from the file on startup.
|