Skip to content

Commit eb264cf

Browse files
committed
feat: improve programmatic use
1 parent 4e86788 commit eb264cf

2 files changed

Lines changed: 21 additions & 20 deletions

File tree

src/deepset_mcp/py.typed

Whitespace-only changes.

src/deepset_mcp/server.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,17 @@
99
from mcp.server.fastmcp import FastMCP
1010

1111
from deepset_mcp.api.client import AsyncDeepsetClient
12-
from deepset_mcp.config import DOCS_SEARCH_TOOL_NAME
12+
from deepset_mcp.config import DEEPSET_DOCS_DEFAULT_SHARE_URL
1313
from deepset_mcp.store import initialize_store
1414
from deepset_mcp.tool_factory import register_tools
1515
from deepset_mcp.tool_models import DeepsetDocsConfig, WorkspaceMode
16+
from deepset_mcp.tool_registry import TOOL_REGISTRY
1617

1718

1819
def configure_mcp_server(
1920
mcp_server_instance: FastMCP,
20-
tools_to_register: set[str],
21-
workspace_mode: WorkspaceMode,
21+
workspace_mode: WorkspaceMode | str,
22+
tools_to_register: set[str] | None = None,
2223
deepset_api_key: str | None = None,
2324
deepset_api_url: str | None = None,
2425
deepset_workspace: str | None = None,
@@ -31,23 +32,28 @@ def configure_mcp_server(
3132
"""Configure the MCP server with the specified tools and settings.
3233
3334
:param mcp_server_instance: The FastMCP server instance to configure
34-
:param tools_to_register: Set of tool names to register with the server
35-
:param workspace_mode: The workspace mode (static or dynamic)
35+
:param workspace_mode: The workspace mode ("static" or "dynamic")
36+
:param tools_to_register: Set of tool names to register with the server.
37+
Will register all tools if set to None.
3638
:param deepset_api_key: Optional Deepset API key for authentication
3739
:param deepset_api_url: Optional Deepset API base URL
3840
:param deepset_workspace: Optional workspace name for static mode
39-
:param deepset_docs_shareable_prototype_url: Optional URL for shared prototype
41+
:param deepset_docs_shareable_prototype_url: Shareable prototype URL that allows access to a docs search pipeline.
42+
Will fall back to the default shareable prototype URL if set to None.
4043
:param get_api_key_from_authorization_header: Whether to extract API key from authorization header
4144
:param object_store_backend: Object store backend type ('memory' or 'redis')
4245
:param object_store_redis_url: Redis connection URL (required if backend='redis')
4346
:param object_store_ttl: TTL in seconds for stored objects
4447
:raises ValueError: If required parameters are missing or invalid
4548
"""
46-
if DOCS_SEARCH_TOOL_NAME in tools_to_register and deepset_docs_shareable_prototype_url is None:
47-
raise ValueError(
48-
f"The {DOCS_SEARCH_TOOL_NAME} tool requires a shareable prototype URL. "
49-
"Please provide 'deepset_docs_shareable_prototype_url' or remove the tool from registration."
50-
)
49+
if tools_to_register is None:
50+
tools_to_register = set(TOOL_REGISTRY.keys())
51+
52+
if deepset_docs_shareable_prototype_url is None:
53+
deepset_docs_shareable_prototype_url = DEEPSET_DOCS_DEFAULT_SHARE_URL
54+
55+
if isinstance(workspace_mode, str):
56+
workspace_mode = WorkspaceMode(workspace_mode)
5157

5258
if workspace_mode == WorkspaceMode.STATIC and deepset_workspace is None:
5359
raise ValueError(
@@ -61,15 +67,10 @@ def configure_mcp_server(
6167
"Please provide 'deepset_api_key' or enable 'get_api_key_from_authorization_header'."
6268
)
6369

64-
if deepset_docs_shareable_prototype_url is not None:
65-
workspace_name, pipeline_name, api_key_docs = asyncio.run(
66-
fetch_shared_prototype_details(deepset_docs_shareable_prototype_url)
67-
)
68-
docs_config = DeepsetDocsConfig(
69-
api_key=api_key_docs, workspace_name=workspace_name, pipeline_name=pipeline_name
70-
)
71-
else:
72-
docs_config = None
70+
workspace_name, pipeline_name, api_key_docs = asyncio.run(
71+
fetch_shared_prototype_details(deepset_docs_shareable_prototype_url)
72+
)
73+
docs_config = DeepsetDocsConfig(api_key=api_key_docs, workspace_name=workspace_name, pipeline_name=pipeline_name)
7374

7475
# Initialize the store before registering tools
7576
store = initialize_store(backend=object_store_backend, redis_url=object_store_redis_url, ttl=object_store_ttl)

0 commit comments

Comments
 (0)