MCP才是AI的“万能插座”
文章目录
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01
前言
2026年了,你要是还没听过AI Agent,那你在程序员圈基本等于“原始人”了。
我上周去参加技术沙龙,左边坐了个写了5年Java的老哥,一杯接一杯灌冰美式,愁得头发都白了一半,说现在投30份简历才2个回复,薪资还被砍20%,天天写CRUD写得怀疑人生。右边两个95后小伙子,聊得眉飞色舞,说刚落地了个私有化智能体项目,年薪直接干到80万,猎头电话都被打爆了。
这差距,简直比我和王思聪的钱包差距还大!
我当时就坐不住了,赶紧凑过去取经。结果人家说,现在做AI Agent根本不用你从头训模型,也不用你会什么高深的深度学习,只要搞懂三个东西——MCP、SKILLS、Context Engineer,你也能写出能帮你打工的AI助理。
我半信半疑,回家捣鼓了3天,真的写出了一个能帮我管任务、查天气、生成工作报告的AI助理!今天就把这个压箱底的干货分享给大家,保证看完你也能上手,少走3年弯路!
别再瞎写工具调用了!MCP才是AI的“万能插座”
先问大家一个问题:你写AI应用的时候,是不是最头疼工具调用?
今天要接个天气API,明天要接个数据库,后天又要接个邮件服务,每个工具都要单独写适配代码,参数格式不一样,返回结果不一样,报错处理也不一样,写得你头都大了。更气人的是,好不容易写好了,大模型调用的时候还经常出错,要么参数传错,要么返回结果解析失败,简直就是“大型翻车现场”。
别慌!MCP就是来拯救你的!
MCP全称Model Context Protocol,翻译过来就是“模型上下文协议”,是Anthropic公司去年开源的。你可以把它理解成AI界的“万能插座”——不管你是什么工具,CLI也好,API也好,系统能力也好,只要插上MCP这个插座,大模型就能直接用,不用再写任何适配代码。
它牛就牛在这三个地方:
- 标准化:统一了工具的定义格式、参数校验、返回结构和错误处理,就像所有电器都用统一的插头一样,插上就能用
- 上下文感知:能把AI的会话历史、用户权限这些信息同步给工具,让工具更智能。比如你跟AI说“帮我查一下明天的天气”,它会自动知道你在哪个城市,不用你再重复一遍
- 安全管控:内置了权限隔离、调用审计和沙箱执行,再也不用担心AI不小心删了你的数据库,或者泄露了公司机密
以前你写工具调用,可能要花一周时间适配10个工具,现在用MCP,10分钟就能搞定!这效率,直接提升了100倍有没有!
别让大模型从零干活了!SKILLS才是“预制菜”神器
解决了工具调用的问题,你可能又会遇到新的麻烦:大模型太笨了!
你让它做个“用户行为数据分析”,它得先拆解任务:先查数据库,再清洗数据,再计算指标,再生成图表,最后写报告。结果呢?要么拆解错了,要么中间某一步出错了,要么生成的报告根本没法用。
这就像你让一个从来没做过饭的人,从买菜开始给你做一桌满汉全席,不翻车才怪!
那怎么办呢?答案就是SKILLS!
SKILLS是什么?你可以把它理解成AI界的“预制菜”。我们把那些重复的、复杂的业务流程,比如“用户行为数据分析”、“生成周报”、“出差行程规划”,提前打包成一个个“技能包”,里面包含了完整的流程、Prompt逻辑和错误处理。大模型只要调用这个技能包,就能一步到位完成任务,不用再从零开始拆解。
它解决了两个最头疼的问题:
- 减少大模型的推理压力:不用让大模型每次都想“第一步该做什么,第二步该做什么”,直接调用现成的技能就行,大大降低了出错的概率
- 实现业务能力的复用:一个技能包写好之后,所有的AI Agent都能调用,不用每个人都重复造轮子
比如我写的那个个人助理Agent,就封装了“添加任务”、“查看任务列表”、“生成任务报告”这几个技能。我只要跟它说“明天去北京出差”,它会自动调用“添加任务”技能,同时调用“查询天气”工具,告诉我北京明天的天气,还会提醒我带外套。
这体验,简直不要太丝滑!
别再只会写Prompt了!Context Engineer才是AI的“大脑秘书”
很多人以为,做AI应用只要会写Prompt就行了。大错特错!
我敢说,80%的AI Agent故障,都不是大模型能力不行,而是上下文管理混乱导致的。
比如:
- 聊了没几句,AI就失忆了,之前说过的话全忘了
- 上下文塞满了没用的信息,导致核心信息被截断,AI开始胡说八道
- 敏感信息没有脱敏,不小心把用户的手机号、身份证号泄露了
这就像一个人,脑子一团乱麻,记不住事情,分不清主次,你还指望他能帮你干活?
这时候,你就需要Context Engineer——上下文工程。
很多人会把Context Engineer和Prompt Engineering搞混,其实它们完全不是一回事:
- Prompt Engineering是“给AI说一句正确的话”,针对的是单次大模型调用
- Context Engineer是“给AI搭建一套完整的信息处理系统”,贯穿AI从启动到任务结束的全流程
如果说Prompt Engineering是“一句话的艺术”,那Context Engineer就是“整个大脑的工程”。
Context Engineer主要包括这五个模块:
- 上下文采集与标准化:收集所有的信息,统一格式,过滤掉没用的垃圾信息
- 上下文存储与记忆管理:把信息分成短期记忆、中期记忆和长期记忆,分别存在不同的地方,就像我们人类的大脑一样
- 上下文路由与分发:把正确的信息,在正确的时间,发给正确的模块,避免信息泛滥
- 上下文压缩与优化:当上下文太长的时候,自动压缩,只保留核心信息,解决大模型上下文窗口限制的问题
- 上下文安全与合规:脱敏敏感信息,管控数据权限,避免数据泄露
有了Context Engineer,AI就像有了一个专业的大脑秘书,帮它整理信息、管理记忆、过滤垃圾,再也不会失忆和胡说八道了!
实战:3天写出能帮你打工的个人助理AI
讲完了理论,咱们来点干货!我手把手教你用pydantic-ai框架,3天写出一个能帮你管任务、查天气的个人助理AI。
技术栈选择
- 框架:pydantic-ai(强烈推荐!封装了所有和大模型通信、MCP协议解析的逻辑,让你专注于业务逻辑)
- 大模型:DeepSeek-V4-Pro(性价比高,推理速度快)
- 向量库:FAISS(本地运行,速度超快)
- 文本向量化模型:all-MiniLM-L6-v2(轻量,本地就能跑)
第一步:写个简单的交互界面
首先,我们需要一个和AI聊天的界面。不用搞什么复杂的Web页面,用终端就行,简单又高效。
class TUI:
def __init__(self):
self.running = True
def print_welcome(self) -> None:
print("=" * 50)
print("Task Assistant Agent 已就绪,请开始对话")
print("输入 'exit' 或 'quit' 退出程序")
print("=" * 50)
print()
def print_message(self, message: str) -> None:
print(f"[助手]: {message}")
def get_user_input(self) -> str:
try:
user_input = input("你: ").strip()
return user_input
except (EOFError, KeyboardInterrupt):
return ""
def should_exit(self, user_input: str) -> bool:
return user_input.lower() in ["exit", "quit"]
def print_goodbye(self) -> None:
print()
print("=" * 50)
print("感谢使用,再见!")
print("=" * 50)
然后写个主循环,让AI能一直和你聊天:
def run() -> None:
tui = TUI()
tui.print_welcome()
while tui.running:
user_input = tui.get_user_input()
if not user_input:
continue
if tui.should_exit(user_input):
tui.running = False
tui.print_goodbye()
break
try:
# 处理用户输入
response = process_input(user_input)
tui.print_message(response)
except Exception as e:
error_msg = f"处理请求时出错: {str(e)}"
tui.print_message(error_msg)
if __name__ == "__main__":
run()
第二步:创建AI Agent核心
接下来,我们创建AI Agent的核心部分。用pydantic-ai框架,创建一个Agent只需要两行代码:
from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIChatModel
from pydantic_ai.providers.deepseek import DeepSeekProvider
# 构造大模型连接实例
model = OpenAIChatModel("deepseek-v4-pro", provider=DeepSeekProvider())
# 构造Agent
agent = Agent(
model,
system_prompt="""你是一个任务助手,帮助用户管理日常任务。
你有以下能力:
1. 添加新任务:从用户的输入中提取任务内容和优先级,然后添加到任务列表
2. 查看任务列表:列出所有任务或按优先级/状态筛选
3. 生成任务报告:按时间整理任务,提供统计信息
添加任务时,默认优先级为 medium(中等),除非用户明确指定 high(高)或 low(低)。
请用中文回复。"""
)
然后,我们给Agent注册几个工具函数,让它能添加任务、查看任务列表和生成任务报告:
@agent.tool
def add_task(content: str, priority: str = "medium") -> AddTaskResult:
"""添加一个新任务"""
# 实现添加任务的逻辑
pass
@agent.tool
def list_tasks(priority_filter: str | None = None, status_filter: str | None = None) -> TaskListResult:
"""列出所有任务"""
# 实现查看任务列表的逻辑
pass
@agent.tool
def get_task_report() -> TaskReportResult:
"""生成按时间整理的任务报告"""
# 实现生成任务报告的逻辑
pass
第三步:接入MCP和SKILLS
有了Agent核心,我们再接入MCP和SKILLS,让它更强大。
接入MCP非常简单,只要写个配置文件,然后加载就行:
def load_mcp_config(config_path: str) -> list[MCPServerStdio]:
# 读取MCP配置文件,返回MCP服务器列表
pass
# 在创建Agent的时候传入MCP配置
agent = Agent(
model,
system_prompt=system_prompt,
toolsets=load_mcp_config("mcp_config.json")
)
接入SKILLS也不难,我们把所有的技能都放在skills目录下,每个技能是一个SKILL.md文件。然后用向量库实现技能的自动检索和加载:
class SkillInferenceEngine:
def __init__(self, vector_store: SkillVectorStore):
self.vs = vector_store
self.threshold = 0.65 # 相似度阈值
def infer(self, query: str) -> Optional[Skill]:
skill, score = self.vs.search(query)
if score >= self.threshold:
return skill
else:
return None
第四步:添加上下文管理
最后,我们给Agent添加上下文管理功能,让它能记住之前说过的话,并且在上下文太长的时候自动压缩:
class ContextManager:
def __init__(self):
self.__contexts = []
self.__compress_agent = None
def update_messages(self, messages):
self.__contexts = messages
def get_messages(self):
return self.__contexts
def compress_messages_and_update(self, messages):
if not self.__compress_agent:
model = OpenAIChatModel("deepseek-v4-pro", provider=DeepSeekProvider())
self.__compress_agent = Agent(
model,
instructions="总结本次对话,省略闲聊内容及无关话题。重点梳理任务要点与后续工作计划。"
)
compress_content = self.__compress_agent.run_sync(message_history=messages)
self.__contexts = compress_content
然后在主循环里,每次和大模型通信的时候,都带上历史消息,并且在token超过阈值的时候自动压缩:
def run() -> None:
context_manager = ContextManager()
tui = TUI()
agent = create_agent()
skill_engine = preprocess()
tui.print_welcome()
while tui.running:
user_input = tui.get_user_input()
if not user_input:
continue
if tui.should_exit(user_input):
tui.running = False
tui.print_goodbye()
break
try:
# 命中技能
target_skill = skill_engine.infer(user_input)
instructions = target_skill.content if target_skill else None
# 获取历史消息
message_history = context_manager.get_messages()
# 调用大模型
result = agent.run_sync(
user_input,
instructions=instructions,
message_history=message_history
)
# 打印结果
tui.print_message(result.output)
# 更新上下文
usage = result.usage()
if usage.total_tokens > 1000:
context_manager.compress_messages_and_update(result.all_messages)
else:
context_manager.update_messages(result.all_messages)
except Exception as e:
error_msg = f"处理请求时出错: {str(e)}"
tui.print_message(error_msg)
搞定!现在你就有了一个能帮你管任务、查天气、生成工作报告的AI助理了!
写在最后
怎么样?是不是没有你想象的那么难?
很多人觉得AI Agent很高深,要懂高数,要懂深度学习,要从头训模型。其实根本不是这样!现在的AI开发,已经进入了“工程化”时代,大部分的底层技术都已经被封装好了,我们只要学会怎么用这些工具和框架,就能快速开发出自己的AI应用。
今天讲的MCP、SKILLS、Context Engineer,就是2026年AI Agent开发的三大核心基础设施。搞懂了这三个东西,你就能从“只会写CRUD的传统程序员”,转型成“年薪百万的AI工程师”。
别再犹豫了!现在就是AI最好的时代,赶紧动手试试吧!下一个年薪80万的,说不定就是你!
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)