基于 MCP 实现推荐业务场景案例架构设计
作者:xiaoxin.gao · 2025-08-14 · 阅读时间:6分钟
Anthropic 推出的 MCP(模型上下文协议)取得了成功,这显然激发了 AI 行业里的其他参与者,大家都想来定义一些开放协议,好用在 AI Agent 系统(Agentic Systems)的集成里。

—1—MCP 架构设计
MCP(模型上下文协议)是由 Anthropic 定义的一个开放协议,标准化应用程序如何为大语言模型(LLM)提供上下文。更具体地说,它试图标准化基于 LLM 的应用程序与其他环境集成的协议。
在 AI Agent 系统(Agentic Systems)中,上下文可以通过多种方式提供:
- 外部数据:这是长期记忆的一部分。
- 工具:系统与环境交互的能力。
- 动态提示词:可以作为系统提示词(System Prompt)的一部分注入。
第一、为什么要标准化?
目前,AI Agent 应用的开发流程很混乱:
- 有许多 AI Agent 框架存在细微差异。虽然看到生态系统蓬勃发展令人鼓舞,但这些细微差异很少能带来足够的价值,但可能会显著改变你的代码编写方式。
- 与外部数据源的集成通常是临时实现的,并且使用不同的协议,即使在组织内部也是如此。对于不同公司来说,这显然是如此。
- 工具在代码库中以略微不同的方式定义。如何将工具附加到增强型 LLM 上也是不同的。
目标是提高我们创新 AI Agent 应用的速度、安全性以及将相关数据带入上下文的便利性。
第二、MCP 架构设计

- MCP Host:使用 LLM 为核心并希望通过 MCP 访问数据的程序。
- MCP Client:与 MCP Server 保持 1:1 连接的客户端。
- MCP Server:每个 MCP Server 都通过标准化的模型上下文协议公开特定功能的轻量级程序。
- Local Data Sources:你计算机上的文件、数据库和服务,MCP Server 可以安全访问。
- Remote Data Sources:通过互联网可用的外部系统(比如:通过 API),MCP Server 可以连接到这些系统。
第三、通过 MCP 分离控制责任
MCP Server 公开三个主要元素(Prompts、Resoures、Tools),这些元素是有意设计的,以帮助实现特定的控制分离。

-
Prompts
- 提示词被设计为用户控制的。
- 后端的程序员可以公开特定的提示词(适用于与后端服务公开的数据交互),这些提示词可以注入到使用 LLM 的应用程序中,并暴露给给定应用程序的用户。
-
Resoures
- 资源被设计为应用程序控制的。
- Resources 资源是任何可以被利用 LLM 构建的应用程序使用的数据(文本或二进制)。
- 应用程序的程序员(通常是 AI 应用开发工程师)负责将这些信息编码到应用程序中。通常,这里没有自动化,LLM 不参与此选择。
-
Tools
- 工具被设计为大模型控制的。
- 如果我们赋予应用程序如何与环境交互的代理权,我们使用 Tools 工具来实现这一点。
- MCP Server 公开一个端点,可以列出所有可用 Tools 工具及其描述和所需参数,应用程序可以将此列表传递给 LLM,以便它决定哪些 Tools 工具适用于手头的任务以及如何调用它们。
—2—基于 MCP 实现招聘推荐业务场景
第一、招聘推荐业务场景剖析
很多企业内部都有推荐业务的场景,特别是对于招聘推荐业务,招聘场景涉及到企业用人端的招聘服务,也涉及到个人用户的简历数据,这些数据往往散落在不同的平台中。为了更高效的实现人才的匹配,招聘平台就需要利用 AI Agent 智能体根据招聘岗位需求快速找到最合适的候选人,这就是招聘的推荐业务场景。
在这个业务场景中,通过 MCP 统一协议连接多个系统,AI Agent 智能体可以自主决策,从而按需获取岗位数据、职位数据、简历数据等,从而将招聘找人效率提高 30%+。
第二、基于 MCP 的整体流程设计
如下所示:
- 招聘平台内部需要提供 API 接口能力;
- 提供获取岗位 JD 的 API 接口能力;
- 提供内部封装的简历排序能力;
- AI Agent 智能体根据 MCP Server 调用结果,给出对应的简历推荐理由。
第三、基于 MCP 的整体架构设计

第四、MCP Server 的代码实现
如下所示:
import requests
import json
from mcp.server.fastmcp import FastMCP
# 创建 MCP 服务器
mcp = FastMCP()
@mcp.tool()
def get_job_list(job_name="", page=1, page_size=20):
"""
获取职位列表和对应的jobId
参数:
职位名称: 职位的名称关键词,如"安全"、"工程师"等
页码: 分页查询的页码,默认为1
每页数量: 每页返回的职位数量,默认为20
"""
payload = {
"jobTitle": job_name,
"page": page,
"limit": page_size
}
try:
response = requests.post(URL, headers=HEADERS, data=json.dumps(payload))
response.raise_for_status() # 检查请求是否成功
return response.json()
except Exception as e:
return {"错误": f"获取职位列表失败: {str(e)}"}
第五、配置到 MCP Client 中
Client 调用如下所示:

随着 MCP Server 数量的增加,可能会面临以下挑战:
-
MCP Server 选择难题
- 客户端在选择合适的 MCP Server 进行调用时可能会遇到困难,这需要花费大量时间来尝试不同的调用方案。
- 由于服务器的不同排列组合,尝试的成本可能会急剧增加。在这种情况下,可能需要在客户端开发更高级的记忆功能,以记住成功的调用路径;同时,在服务器端实施服务评级机制,以便优先选择性能更优的服务器进行调用。
-
安全性和授权问题
- 目前的开源 MCP 版本尚未考虑授权和访问权限的问题,这可能导致 MCP Server 向客户端植入恶意信息,或者客户端将本地的个人隐私信息上传到网络中,从而引发安全风险。
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- API 集成成本全景解析:从 2 千到 15 万美元的隐藏账单与 ROI 攻略
- 2025年小本生意新风口:如何借助 AI 实现低成本高效率创业?
- 使用 python 和 flask 构建 restful api
- rpa vs. api:差异与应用场景
- 微服务 API 安全实战:防护策略与漏洞修复
- 从零开始掌握Reddit获取API密钥与数据分析
- API在保险公司数字化转型中的作用
- GraphQL API 实战:架构设计、性能优化与安全防护
- 连接mqtt与rest api:完整教程
- Java String API 的强大功能:2024 年 A+ 指南 – Aloa
- 使用FileSystem API读写HDFS数据
- 五大PHP REST API框架
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册