dynamic mcp tool registration

This commit is contained in:
Saumya 2025-08-07 14:32:17 +05:30
parent c7adfa6796
commit 8c6ce0923a
1 changed files with 37 additions and 2 deletions

View File

@ -256,12 +256,47 @@ class CredentialProfileTool(AgentBuilderBaseTool):
change_description=f"Configured {display_name or profile.display_name} with {len(enabled_tools)} tools"
)
try:
from agent.tools.mcp_tool_wrapper import MCPToolWrapper
mcp_config_for_wrapper = {
'name': profile.toolkit_name,
'qualifiedName': f"composio.{profile.toolkit_slug}",
'config': {
'profile_id': profile_id,
'toolkit_slug': profile.toolkit_slug,
'mcp_qualified_name': profile.mcp_qualified_name
},
'enabledTools': enabled_tools,
'instructions': '',
'isCustom': True,
'customType': 'composio'
}
mcp_wrapper_instance = MCPToolWrapper(mcp_configs=[mcp_config_for_wrapper])
await mcp_wrapper_instance.initialize_and_register_tools()
updated_schemas = mcp_wrapper_instance.get_schemas()
for method_name, schema_list in updated_schemas.items():
for schema in schema_list:
self.thread_manager.tool_registry.tools[method_name] = {
"instance": mcp_wrapper_instance,
"schema": schema
}
logger.info(f"Dynamically registered MCP tool: {method_name}")
logger.info(f"Successfully registered {len(updated_schemas)} MCP tools dynamically for {profile.toolkit_name}")
except Exception as e:
logger.warning(f"Could not dynamically register MCP tools in current runtime: {str(e)}. Tools will be available on next agent run.")
return self.success_response({
"message": f"Profile '{profile.profile_name}' updated with {len(enabled_tools)} tools",
"message": f"Profile '{profile.profile_name}' configured with {len(enabled_tools)} tools and registered in current runtime",
"enabled_tools": enabled_tools,
"total_tools": len(enabled_tools),
"version_id": new_version.version_id,
"version_name": new_version.version_name
"version_name": new_version.version_name,
"runtime_registration": "success"
})
except Exception as e: