Skip to content

Commit 0d148a0

Browse files
committed
return parameter in list toolkit functions
1 parent 053eb2e commit 0d148a0

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

camel_toolkits_mcp/router.py

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -439,9 +439,27 @@ def list_toolkit_functions(toolkit_name: str, include_methods: bool = True):
439439
# Try to get function info
440440
if isinstance(tool, FunctionTool):
441441
doc = tool.func.__doc__ or "No description available"
442+
443+
# Get parameter information
444+
params = {}
445+
try:
446+
signature = inspect.signature(tool.func)
447+
for param_name, param in signature.parameters.items():
448+
if param_name == 'self':
449+
continue
450+
params[param_name] = {
451+
"required": param.default == param.empty,
452+
"default": None if param.default == param.empty else param.default,
453+
"type": str(param.annotation) if param.annotation != param.empty else "unknown"
454+
}
455+
except Exception:
456+
# If we can't get signature, create empty params dict
457+
pass
458+
442459
functions[name] = {
443460
"type": "tool",
444-
"description": doc.strip()
461+
"description": doc.strip(),
462+
"parameters": params
445463
}
446464
else:
447465
functions[name] = {
@@ -463,9 +481,27 @@ def list_toolkit_functions(toolkit_name: str, include_methods: bool = True):
463481
# Add methods defined directly on the toolkit
464482
if inspect.ismethod(member):
465483
doc = member.__doc__ or "No description available"
484+
485+
# Get parameter information
486+
params = {}
487+
try:
488+
signature = inspect.signature(member)
489+
for param_name, param in list(signature.parameters.items()):
490+
if param_name == 'self':
491+
continue
492+
params[param_name] = {
493+
"required": param.default == param.empty,
494+
"default": None if param.default == param.empty else param.default,
495+
"type": str(param.annotation) if param.annotation != param.empty else "unknown"
496+
}
497+
except Exception:
498+
# If we can't get signature, create empty params dict
499+
pass
500+
466501
functions[name] = {
467502
"type": "method",
468-
"description": doc.strip()
503+
"description": doc.strip(),
504+
"parameters": params
469505
}
470506

471507
return {

0 commit comments

Comments
 (0)