18.MCP工程化接入实践:配置抽离、异常兜底与项目文档收口
目 录
- 今天干了什么
- 核心变化
- 1.抽离MCP配置
- 2.异常处理
- 3.文档维护
今天干了什么
今天主要工作是对昨天接入系统的MCP服务做了工程化收口工作,抽离了项目配置、增加异常处理并完善了项目文档。目的当然是为了方便未来项目的迁移并增加项目的鲁棒性和完整性。
核心变化
1.抽离MCP配置
系统用到了智谱的MCP搜索服务,关注这个服务的一些配置,比如API、URL以及一些调用服务所要用到的基础参数,我是写死在项目中的,前面也讲过这种方式的问题,所以今天首先做的工作就是抽离项目配置。首先,在app/config.py中补几项新的配置信息:
ZHIPU_API_KEY=os.getenv("ZHIPU_API_KEY")MCP_SEARCH_URL=os.getenv("MCP_SEARCH_URL","https://open.bigmodel.cn/api/mcp/web_search_prime/mcp")MCP_SEARCH_RECENCY=os.getenv("MCP_SEARCH_RECENCY","oneMonth")MCP_SEARCH_CONTENT_SIZE=os.getenv("MCP_SEARCH_CONTENT_SIZE","medium")MCP_SEARCH_LOCATION=os.getenv("MCP_SEARCH_LOCATION","us")然后在用到这些配置信息的地方也就是app/mcp_tools.py文件中引入这些配置,并在相应的使用位置做出使得的修改:
fromapp.configimport(ZHIPU_API_KEY,MCP_SEARCH_URL,MCP_SEARCH_RECENCY,MCP_SEARCH_CONTENT_SIZE,MCP_SEARCH_LOCATION,)最后一小步,就是在.env文件中写入需要统一管理的信息:
MCP_SEARCH_URL=https://open.bigmodel.cn/api/mcp/web_search_prime/mcp MCP_SEARCH_RECENCY=oneMonth MCP_SEARCH_CONTENT_SIZE=medium MCP_SEARCH_LOCATION=us2.异常处理
今天所做的第二项工作是给项目增加异常处理,原因前面也讲到过,在写系统时,要默认自己写的功能回运行失败,所以需要给功能模块加上必要的异常处理,在web_search_tool()中给功能逻辑块增加异常处理:
defweb_search_tool(query:str)->str:logger.info(f"[web_search_tool] query:{query}")try:raw_result=asyncio.run(_call_zhipu_web_search(query=query,recency=MCP_SEARCH_RECENCY,content_size=MCP_SEARCH_CONTENT_SIZE,location=MCP_SEARCH_LOCATION,))items=_parse_mcp_search_result(raw_result)ifnotitems:logger.warning("[web_search_tool] parsed result is empty, fallback to raw text")returnstr(raw_result)lines=[]foridx,iteminenumerate(items[:5],start=1):title=item.get("title","No title")link=item.get("link","")content=item.get("content","")lines.append(f"[{idx}]{title}\n"f"{content}\n"f"{link}")final_text="\n\n".join(lines)logger.info("[web_search_tool] search finished successfully")returnfinal_textexceptExceptionase:logger.exception("[web_search_tool] search failed")returnf"Web search failed:{str(e)}"3.文档维护
以前关于这个项目的文档只是写了未来将要接入MCP服务,如今这个项目已经接入了这个服务,所以需要对项目的相关介绍做必要的修改,需要修改的有项目的总体介绍、项目的当前特性、技术栈、项目目录、工具介绍、配置说明、测试用例和未来工作做出适当调整。
如果这篇文章对你有帮助,可以点个赞~
完整代码地址:https://github.com/1186141415/Paper-RAG-Agent-with-LangGraph
