零基础学MCP:AI工具开发入门教程
·
🤖 零基础学MCP:AI工具开发入门教程
作者 李金雨 --中文编程倡导者
前言:什么是MCP?
想象你是一个智能机器人的指挥官,MCP就是你和机器人之间的暗号系统。
- 你说人话:“帮我算数学题”
- MCP翻译成机器指令:
计算器(题目="1+2") - 机器人执行:返回3
MCP = 让AI听懂人话并调用工具的协议
第一章:最简单的MCP实现
1.1 基础框架(只需要30行代码)
import json
class 我的小助手:
"""一个超简单的AI助手"""
def __init__(self):
# 工具箱:存放所有工具的地方
self.工具箱 = {}
def 添加工具(self, 工具名, 工具函数):
"""把工具放进工具箱"""
self.工具箱[工具名] = 工具函数
def 处理请求(self, 用户说的话):
"""核心:解析用户的话,调用对应工具"""
# 约定暗号格式:使用[工具名]执行 参数
if "使用[" in 用户说的话 and "]执行" in 用户说的话:
# 提取工具名
开始 = 用户说的话.index("使用[") + 3
结束 = 用户说的话.index("]执行")
工具名 = 用户说的话[开始:结束]
# 提取参数
参数部分 = 用户说的话[结束+3:]
# 执行工具
if 工具名 in self.工具箱:
结果 = self.工具箱[工具名](参数部分)
return f"执行结果:{结果}"
else:
return f"没有找到【{工具名}】这个工具"
return "请按格式说:使用[工具名]执行 参数"
# 创建我的第一个AI助手
小爱 = 我的小助手()
1.2 添加第一个工具
# 定义一个计算器工具
def 计算器(算式):
"""能算数学题的函数"""
try:
结果 = eval(算式)
return f"{算式} = {结果}"
except:
return "算不出来,检查一下算式吧"
# 把计算器放进工具箱
小爱.添加工具("计算器", 计算器)
# 测试一下
print(小爱.处理请求("使用[计算器]执行 123 + 456"))
# 输出:执行结果:123 + 456 = 579
第二章:让AI自己决定用哪个工具
2.1 问题:用户不会暗号怎么办?
上面的例子要求用户必须说使用[计算器]执行,太不人性化了!
解决方案:让AI自动理解用户的话
class 智能MCP:
"""能理解自然语言的AI助手"""
def __init__(self):
self.工具箱 = {}
self.工具说明 = {}
def 添加工具(self, 工具名, 说明, 函数):
"""添加工具时附带说明"""
self.工具箱[工具名] = 函数
self.工具说明[工具名] = 说明
def AI理解(self, 用户输入):
"""模拟AI理解用户意图(实际应该调用大模型)"""
# 简单的关键词匹配(教学演示用)
if "天气" in 用户输入:
return {"工具": "查天气", "参数": 用户输入}
elif "计算" in 用户输入 or "等于" in 用户输入:
return {"工具": "计算器", "参数": 用户输入}
elif "翻译" in 用户输入:
return {"工具": "翻译", "参数": 用户输入}
else:
return {"工具": "聊天", "参数": 用户输入}
def 处理请求(self, 用户输入):
"""智能处理用户请求"""
# 第一步:AI理解用户想做什么
意图 = self.AI理解(用户输入)
# 第二步:调用对应的工具
工具名 = 意图["工具"]
参数 = 意图["参数"]
if 工具名 in self.工具箱:
结果 = self.工具箱[工具名](参数)
return self.美化回答(结果)
else:
return f"我还不会{工具名}这个技能"
def 美化回答(self, 结果):
"""把结果说得更友好"""
return f"🤖 小助手:{结果}"
# 创建智能助手
小明 = 智能MCP()
# 添加各种工具
小明.添加工具("计算器", "做数学题", lambda x: f"答案是{eval(x.replace('计算', '').replace('等于', ''))}")
小明.添加工具("查天气", "查天气", lambda x: "今天晴天,25度")
小明.添加工具("翻译", "翻译文字", lambda x: "Hello (这是翻译结果)")
# 测试:说人话就能用
print(小明.处理请求("今天天气怎么样"))
# 输出:🤖 小助手:今天晴天,25度
print(小明.处理请求("帮我计算 100 加 200 等于多少"))
# 输出:🤖 小助手:答案是300
第三章:真正的AI决策(使用大模型)
3.1 核心:让AI输出结构化指令
class 真智能MCP:
"""使用真实AI模型进行决策"""
def __init__(self, 调用AI的函数):
self.工具箱 = {}
self.调用AI = 调用AI函数 # 比如调用ChatGPT的接口
def 处理请求(self, 用户输入):
"""核心流程:AI思考 → 输出JSON → 执行工具"""
# 1. 告诉AI有哪些工具可用
工具列表 = "\n".join([
f"- {名}: {说明}"
for 名, (说明, _) in self.工具箱.items()
])
# 2. 让AI输出JSON格式的指令
提示词 = f"""
你有这些工具:
{工具列表}
用户说:"{用户输入}"
请判断要用哪个工具,输出JSON:
{{"工具名": "xxx", "参数": "xxx"}}
如果不需要工具,输出:
{{"回答": "你的回答"}}
"""
# 3. AI返回结构化输出(关键步骤!)
AI输出 = self.调用AI(提示词)
# 4. 解析JSON并执行
try:
指令 = json.loads(AI输出)
if "工具名" in 指令:
工具名 = 指令["工具名"]
参数 = 指令["参数"]
# 从工具箱取出工具并执行
执行函数 = self.工具箱[工具名][1]
结果 = 执行函数(参数)
return f"🎯 使用了{工具名}工具\n📊 结果:{结果}"
else:
return f"🤖 {指令['回答']}"
except:
return "我有点混乱,能再说一遍吗?"
# 模拟AI接口(实际应该调用真实大模型)
def 模拟AI(提示):
"""模拟AI的智能决策"""
if "天气" in 提示:
return '{"工具名": "查天气", "参数": "北京"}'
elif "计算" in 提示:
return '{"工具名": "计算器", "参数": "1+2"}'
else:
return '{"回答": "你好,我能帮你做什么?"}'
# 创建真正的智能助手
真助手 = 真智能MCP(模拟AI)
# 添加工具
真助手.工具箱["查天气"] = ("查询任意城市天气", lambda x: f"{x}的天气:晴天")
真助手.工具箱["计算器"] = ("做数学计算", lambda x: f"{x} = {eval(x)}")
# 测试
print(真助手.处理请求("北京天气"))
# 输出:🎯 使用了查天气工具
# 📊 结果:北京的天气:晴天
第四章:实战项目——万能学习助手
让我们把学到的知识用起来,做一个能帮中学生学习的AI助手!
import json
import random
class 万能学习助手:
"""帮你学习各科知识的AI助手"""
def __init__(self):
# 注册所有学习工具
self.工具 = {
"数学工具": self.数学题,
"英语工具": self.翻译单词,
"物理工具": self.计算物理,
"查资料工具": self.查百科,
"做笔记工具": self.记笔记,
}
# 存储笔记
self.笔记本 = []
def AI决策(self, 问题):
"""AI判断该用哪个工具"""
# 关键词匹配(简化版)
if any(word in 问题 for word in ["数学", "计算", "等于", "方程"]):
return "数学工具"
elif any(word in 问题 for word in ["英语", "翻译", "单词"]):
return "英语工具"
elif any(word in 问题 for word in ["物理", "速度", "力", "能量"]):
return "物理工具"
elif any(word in 问题 for word in ["笔记", "记录"]):
return "做笔记工具"
else:
return "查资料工具"
def 数学题(self, 问题):
"""解数学题"""
# 提取数字和运算符
if "+" in 问题:
nums = [int(n) for n in 问题.split("+")]
return f"答案:{sum(nums)}"
elif "平方" in 问题:
return "平方就是自己乘自己,比如3²=9"
else:
return "让我想想...建议你把算式写清楚,比如:3+5"
def 翻译单词(self, 问题):
"""中英文互译"""
词库 = {
"苹果": "apple",
"电脑": "computer",
"学习": "study",
"hello": "你好",
"world": "世界"
}
for 中文, 英文 in 词库.items():
if 中文 in 问题:
return f"翻译结果:{中文} → {英文}"
if 英文 in 问题:
return f"翻译结果:{英文} → {中文}"
return f"暂时不知道{问题}的翻译,我会学习的!"
def 计算物理(self, 问题):
"""物理计算"""
if "速度" in 问题:
return "速度公式:v = s / t (速度 = 路程 ÷ 时间)"
elif "重力" in 问题:
return "重力公式:G = m × g (g ≈ 9.8 N/kg)"
else:
return "物理很神奇!具体什么问题?"
def 查百科(self, 问题):
"""查资料"""
百科 = {
"Python": "Python是一种编程语言,像给电脑写指令",
"AI": "AI是人工智能,让机器像人一样思考",
"MCP": "MCP是模型上下文协议,让AI调用工具"
}
for 关键词, 解释 in 百科.items():
if 关键词 in 问题:
return f"📚 {解释}"
return f"关于「{问题}」,建议你上网搜索哦"
def 记笔记(self, 问题):
"""记录学习笔记"""
self.笔记本.append(问题)
return f"✅ 已记录:{问题}\n📒 现在有{len(self.笔记本)}条笔记"
def 运行(self):
"""启动助手"""
print("="*50)
print("🎓 万能学习助手启动啦!")
print("💡 你可以问我:")
print(" - 数学题:3+5等于多少")
print(" - 英语:苹果的英文")
print(" - 物理:速度公式")
print(" - 笔记:记录我学会了MCP")
print("="*50)
while True:
用户输入 = input("\n🧑🎓 学生:")
if 用户输入 in ["退出", "拜拜", "88"]:
print("🤖 加油学习!下次见~")
break
# AI决策并执行
要用的工具 = self.AI决策(用户输入)
结果 = self.工具[要用的工具](用户输入)
print(f"🤖 {结果}")
# 启动助手
if __name__ == "__main__":
助手 = 万能学习助手()
助手.运行()
第五章:核心要点总结
📚 你学到的核心概念
# MCP的核心公式
MCP = 工具注册 + AI决策 + 结构化输出 + 工具执行
# 关键步骤:
1. 注册工具:把Python函数放进工具箱
2. AI决策:让AI理解用户意图,输出JSON
3. 解析JSON:你的代码读取AI的想法
4. 执行工具:调用对应的Python函数
5. 返回结果:把答案说给用户听
🎯 三个最重要的认知
- AI不会直接执行代码(太危险)
- AI只输出文本(JSON格式)
- 你的程序负责解析和执行(安全可控)
💡 作业挑战
试试自己做一个:
- 背单词助手:记录生词,随机测试
- 番茄钟助手:定时提醒学习休息
- 错题本助手:记录和分析错题
🚀 延伸学习
# 当你学会基础后,可以:
- 接入真实的AI模型(OpenAI、讯飞、百度)
- 添加网络工具(搜索、翻译API)
- 做成本地应用(使用tkinter做界面)
- 连接硬件(树莓派、micro:bit)
写在最后
MCP就像给了AI一双手,让它能真正做事,不只是聊天。
你现在已经掌握了:
- ✅ MCP的基本原理
- ✅ 如何注册工具
- ✅ 如何让AI决策
- ✅ 如何解析和执行
动手试试吧!编程就像打游戏,看100遍攻略不如自己打一关!
有问题随时问,祝你编程愉快!🎉
更多推荐


所有评论(0)