99from mcp .server .fastmcp import FastMCP
1010
1111from 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
1313from deepset_mcp .store import initialize_store
1414from deepset_mcp .tool_factory import register_tools
1515from deepset_mcp .tool_models import DeepsetDocsConfig , WorkspaceMode
16+ from deepset_mcp .tool_registry import TOOL_REGISTRY
1617
1718
1819def 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