使用claude-agent-sdk-python时,如何调用子代理仅加载所需MCP服务器?
为Claude子代理单独配置特定MCP服务器
你可以通过在启动子代理的Task工具中单独指定所需的MCP服务器实例来解决这个问题,不需要在主代理的ClaudeAgentOptions里传入所有MCP服务器。具体操作如下:
- 提前创建好各功能对应的MCP服务器实例
# 示例:创建不同用途的MCP服务器 document_mcp = create_sdk_mcp_server( # 文档处理MCP的专属配置参数 ) data_analysis_mcp = create_sdk_mcp_server( # 数据分析MCP的专属配置参数 )
- 主代理仅配置自身需要的MCP服务器
main_options = ClaudeAgentOptions( mcp_servers=self.get_main_agent_mcp_servers(), # 只传主代理自用的MCP allowed_tools=self.get_allowed_tools(), )
- 在触发子代理的
Task工具中指定专属MCP服务器
启动子代理时,在Task对象里通过mcp_server参数传入该子代理对应的MCP实例即可:
# 示例:启动文档处理子代理,仅传入它需要的MCP服务器 document_subagent_task = Task( name="document_processor", description="处理文档解析与提取任务的子代理", mcp_server=document_mcp, # 这里只传该子代理所需的MCP # 其他子代理配置(如system_prompt、allowed_tools等) )
这样配置后,每个子代理只会加载你指定的那一个MCP服务器,不会继承主代理的全量MCP列表,既能减少系统负载,也能降低不必要的成本。
内容的提问来源于stack exchange,提问作者Labeeb
相关产品推荐
相关产品推荐

