Skip to content

Commit 923ad90

Browse files
committed
tweak: ensure repeated tool is noted to user
Signed-off-by: vsoch <vsoch@users.noreply.github.com>
1 parent 43cb5c4 commit 923ad90

4 files changed

Lines changed: 15 additions & 5 deletions

File tree

mcpserver/cli/manager.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ def get_manager(mcp, cfg: MCPConfig):
2222

2323
# Handle explicit registration of specific paths (Tools, Prompts, Resources)
2424
for endpoint, emoji in register_explicit_capabilities(mcp, cfg):
25+
# A repeated function will return None
26+
if not endpoint:
27+
continue
2528
print(f" {emoji} Registered: {endpoint.name}")
2629

2730
# Handle SSL

mcpserver/tools/manager.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from fastmcp.tools import Tool
88

99
from mcpserver.events import get_event_manager
10+
from mcpserver.logger import logger
1011

1112
from .base import BaseTool
1213
from .system.system import SystemTool
@@ -110,6 +111,7 @@ def register_tool(self, mcp, tool_path: str, name: str = None):
110111
func = self.load_function(tool_path)
111112
actual_name = name or func.__name__
112113
if f"tool:{actual_name}" in self.registered_keys:
114+
logger.warning(f"tool {actual_name} is already registered.")
113115
return
114116
endpoint = Tool.from_function(func, name=actual_name)
115117
mcp.add_tool(endpoint)

mcpserver/tools/system/system.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,18 @@ class SystemTool(BaseTool):
1010
Primary interface for cluster identity and negotiation.
1111
"""
1212

13-
def setup(self, manager=None):
13+
def setup_providers(self):
1414
from resource_secretary.providers import discover_providers
1515

16-
self.manager = manager
1716
self.catalog = discover_providers()
17+
self.active_providers = [inst for category in self.catalog.values() for inst in category]
18+
19+
def setup(self, manager=None):
20+
self.manager = manager
21+
try:
22+
self.setup_providers()
23+
except:
24+
self.active_providers = []
1825

1926
# Capture model config from environment or manager defaults
2027
# manager.args would contain the CLI values from populate_start_args
@@ -24,8 +31,6 @@ def setup(self, manager=None):
2431
"base": os.getenv("RESOURCE_SECRETARY_API_BASE"),
2532
}
2633

27-
self.active_providers = [inst for category in self.catalog.values() for inst in category]
28-
2934
def build_manifest(self) -> Dict[str, Any]:
3035
manifest = {}
3136
for category, instances in self.catalog.items():

mcpserver/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "0.0.17"
1+
__version__ = "0.0.18"
22
AUTHOR = "Vanessa Sochat"
33
AUTHOR_EMAIL = "vsoch@users.noreply.github.com"
44
NAME = "mcp-serve"

0 commit comments

Comments
 (0)