我们可以提供多个 MCP Client,然后每个 Client 通过 get_tools 方法获取工具,然后把工具集合起来传给 Agent,下面给出示例代码:
# 第一步:定义 MCP Stdio 协议客户端的通用方法
async def create_mcp_stdio_client(name, params):
config = {
name: {
"transport": "stdio",
**params,
}
}
print(config)
client = MultiServerMCPClient(config)
tools = await client.get_tools()
return client, tools
# 第二步:定义 MCP Client 1
async def get_stdio_terminal_tools():
params = {
"command": "python",
"args": [
"/Users/sam/Work/AI/coding_agent/app/mcp/terminal.py",
],
}
client, tools = await create_mcp_stdio_client("terminal", params)
return tools
# 第三步:定义 MCP Client 2
async def get_stdio_rag_tools():
params = {
"command": "python",
"args": [
"/Users/sam/Work/AI/coding_agent/app/mcp/rag.py",
],
}
client, tools = await create_mcp_stdio_client("rag", params)
return tools
# 第四步:将多个 MCP Client Tools 合并
terminal_tools = await get_stdio_terminal_tools()
rag_tools = await get_stdio_rag_tools()
tools = terminal_tools + rag_tools
print(tools)
# 第五步:生成 Agent
agent = initialize_agent(
llm=llm_qwen,
tools=tools,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
max_iterations=50,
)