news 2026/4/23 3:53:54

18.MCP工程化接入实践:配置抽离、异常兜底与项目文档收口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 3:52:32

目标检测到底在做什么:分类、检测、分割的区别(三)

当我们说 YOLO 是“目标检测模型”时,它到底在解决什么任务? 这一篇的重点不是模型结构,也不是代码,而是先把任务边界讲清楚。 一、同样是处理图片,不同任务问的问题完全不同 假设现在有一张街景图,里面有…

作者头像 李华
网站建设 2026/4/23 3:52:26

一天一个Python库:greenlet - 轻量级并发,协程切换的基石

正文 异步/等待解决了什么问题? 在传统同步I/O操作中(如文件读取或Web API调用),调用线程会被阻塞直到操作完成。这在UI应用中会导致界面冻结,在服务器应用中则造成线程资源的浪费。async/await通过非阻塞的异步操作解…

作者头像 李华
网站建设 2026/4/18 23:48:14

KICS 认知公尺:一把无法拒绝的公尺与人类规则意志的复活

KICS 认知公尺:一把无法拒绝的公尺与人类规则意志的复活摘要: 面对 AI 幻觉泛滥与全球监管真空,KICS 以四封密函向权力心脏精准喊话——给政客监管抓手以填补主权真空,给资本万亿美元基础设施以锚定未来关税区,给学界规…

作者头像 李华
网站建设 2026/4/18 23:47:38

Vue-Quill-Editor + ElementUI 实现Word上传功能:从配置到实战避坑指南

Vue-Quill-Editor ElementUI 实现Word上传功能全流程解析 在企业级后台管理系统开发中,富文本编辑器与文件上传功能的结合是刚需。最近在重构公司内部知识库系统时,我遇到了一个典型需求:让内容编辑人员能够直接将Word文档上传到富文本编辑器…

作者头像 李华