使用MultiServerMCPClient集成Airbnb MCP到LangGraph时遇KeyError问题
解决MultiServerMCPClient集成LangGraph时的KeyError: 'transport'问题
问题场景
尝试将Airbnb MCP作为工具集成到LangGraph智能体中,使用MultiServerMCPClient编写代码时触发KeyError: 'transport'错误,但相同的Airbnb MCP配置在mcp_use库的MCPAgent和MCPClient中可正常运行。
错误原因
- 配置字典中存在大量多余的转义引号(
\"),导致MultiServerMCPClient无法正确解析连接配置 connections参数格式错误:MultiServerMCPClient要求直接传入服务器配置字典,而非嵌套在"mcpServers"键下的结构- 智能体输入参数中同样存在多余转义引号,可能引发后续解析异常
修复步骤
- 移除所有配置和参数中的转义引号,Python字典的键值无需额外用引号包裹
- 调整
connections参数结构,直接传入服务器配置的键值对 - 修正
agent.astream的输入消息格式
修复后完整代码
from langchain_mcp_adapters.client import MultiServerMCPClient from langgraph.prebuilt import create_react_agent from langchain_openai import AzureChatOpenAI from src.mcp_use.adapters.langchain_adapter import LangChainAdapter from dotenv import load_dotenv import asyncio from mcp_use import MCPAgent, MCPClient load_dotenv() async def main(): # 修正后的配置:移除所有转义引号,去掉外层mcpServers嵌套 config = { "airbnb": { "command": "npx", "args": ["-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt"] } } # 初始化MultiServerMCPClient,直接传入修正后的connections client = MultiServerMCPClient(connections=config) tools = await client.get_tools() print(f"获取到的工具:{tools}") # 初始化LLM(移除转义引号) llm = AzureChatOpenAI( temperature=0, api_version="2024-12-01-preview", azure_deployment="gpt-4o" ) # 创建LangGraph智能体(移除转义引号) agent = create_react_agent( model=llm, tools=tools, name="agenttool", prompt="你是拥有Airbnb工具的助手,必须使用工具回答,不要自行编造内容" ) # 调用智能体(移除转义引号,修正消息格式) async for chunk in agent.astream({ "messages": [{"role": "user", "content": "show me the top 5 hotels in San Francisco"}] }): print(chunk) if __name__ == "__main__": asyncio.run(main())
验证说明
修复后,MultiServerMCPClient将能正确启动Airbnb MCP服务器并生成对应工具,LangGraph智能体可正常调用工具完成查询请求。
内容的提问来源于stack exchange,提问作者Archana Acharya T
相关产品推荐
相关产品推荐

