当前位置: 首页 > news >正文

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=us

2.异常处理

今天所做的第二项工作是给项目增加异常处理,原因前面也讲到过,在写系统时,要默认自己写的功能回运行失败,所以需要给功能模块加上必要的异常处理,在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

http://www.jsqmd.com/news/663099/

相关文章:

  • 我用AI管知识库后,再也回不去了
  • 【行业首份智能编码故障白皮书】:基于178万行AI生成代码的故障热力图与根因诊断模型
  • 编程语言的可扩展性:分类、机制与实例深度解析
  • DeOldify背后的循环神经网络:LSTM在时序色彩预测中的作用浅析
  • UGUI源码架构探秘——从核心接口到渲染管线
  • 【技术解析】MaskNet:用Instance-Guided Mask与MaskBlock革新深度推荐模型
  • 揭秘AI代码摘要真实准确率:2026奇点大会最新Benchmark数据揭示92.7%误摘要率背后的架构盲区
  • 如何5分钟快速拯救损坏视频:untrunc视频修复工具的终极秘籍
  • 【紧急预警】AGI基础理论断层加剧:符号学派论文引用率骤降41%,但军工与金融领域正秘密重启形式化方法——你该站哪一队?
  • 扒了10家儿童编程课,这几家值得家长参考
  • 2026 AI 大模型技术体系综合开源影响力榜单发布,中国开源实力领跑全球
  • 【AGI可解释性生死线】:20年AI架构师亲授3大透明度破局框架,错过再等十年?
  • Android端AI模型部署前哨:在PyTorch 2.8中完成模型转换与优化
  • 代码可维护性正在崩塌,2026奇点大会预警:78.6%的LLM生成代码已超复杂度临界阈值
  • Espeak跨平台安装与多语言配置实战指南
  • 端侧大模型部署全教程:离线运行,隐私与性能双保障
  • 3个步骤让Zotero完美识别中文文献:Jasminum插件实用指南
  • ESP32-S3实战:用I2S接口播放SD卡里的WAV音乐(附完整代码)
  • 漫画下载神器终极指南:轻松离线阅读8大平台漫画
  • 终极游戏模组管理指南:如何用Nexus Mods App轻松管理100+插件
  • 2026年烘焙连锁店灯箱实力厂商推荐,热门的连锁店灯箱企业如何赋能商业未来
  • Python实战:基于NGSIM数据集的跟驰车辆轨迹分析与特征提取
  • 宝塔面板如何设置网站强制HTTPS_配置Nginx自动跳转规则
  • 从踩坑到精通:Python3中os.chmod()修改文件权限的那些‘坑’与最佳实践
  • 如何成为一个AI Agent 工程师?
  • 【NLP实战】基于NLTK词性标注的英语缩写消歧:以he‘s/she‘s为例
  • 触屏设备适合哪些HTML函数工具_移动端优化功能介绍【介绍】
  • 3分钟搞定B站缓存视频转换:m4s转MP4完整教程
  • 告别理论!用Python复现5G NR PRACH/PUSCH功率控制算法(附代码与Log分析)
  • Linux运维实战:手把手教你用fdisk和mount命令挂载移动硬盘(含NTFS格式报错解决)