什么是MCP协议?怎么用?一篇让你从零到精通的教程,覆盖所有使用场景,还附Python实战!
作为一个AI圈的"伪技术宅",最近被朋友问到"MCP协议是啥?怎么用?还有哪些方式可以用?"带你从零搞懂MCP(Model Context Protocol)是什么、怎么用、还能怎么用,最后用一个Python实战案例(抓AI热点新闻,生成小红书图片)把理论落地。文章会通俗易懂,像讲故事一样娓娓道来,干货满满,走起!
一、MCP协议是啥?AI的"超级连接器",通俗点就是"外挂神器"
MCP全称是Model Context Protocol(模型上下文协议),由Anthropic在2024年11月开源推出。简单说,它是一个标准化协议,让AI大模型(比如Claude、GPT)能轻松跟外部世界"握手"------连接各种数据源和工具,不用每次都费劲写一堆定制代码。
想象一下,你家有个超级聪明的机器人助手,啥都会算,但就是个"宅男",不认识冰箱、手机,也不会上网查天气。MCP就像给它装了个"万能插头",插上就能跟冰箱聊库存、跟手机查日程、跟天气网站问明天穿啥。以前这些得手动搭线,现在有了MCP,标准化了,插上就用,效率起飞!
技术上,MCP用的是客户端-服务器架构:
- MCP主机(Host):比如Claude Desktop,负责跟你互动。
- MCP客户端(Client):主机里的"中间人",对接服务器。
- MCP服务器(Server):提供功能的"工具箱",比如抓新闻、读文件、调API。 通信靠JSON-RPC 2.0,走STDIO(标准输入输出)或SSE(服务器推送事件)。
一句话总结:MCP是AI的"超级连接器",让模型能实时获取外部数据,变得更聪明、更实用。
二、如何使用MCP协议?以Claude Desktop为例,三步走!
用MCP不复杂,核心就三步:装环境、搭服务器、连主机。我以Claude Desktop为例(最成熟的MCP主机),讲得像"做饭指南"一样,手把手带你上手。
1. 装环境:准备"食材"
- 下载Claude Desktop: 浏览器输入 claude.ai/download,选macOS(.dmg)或Windows(.exe,支持x64和ARM64),下载安装。双击启动,注册Anthropic账号登录。
- 安装开发环境: 装Python(推荐3.9+),去 python.org 下载,装好后命令行输入python --version确认。
2. 搭服务器:炒个"小菜"
- 啥是服务器? 服务器是个小程序,负责干活(比如抓新闻)。官方有现成的(比如Filesystem、GitHub),但我们自己写一个"AI新闻服务器"。
- 怎么搭? 用Python写脚本,监听主机请求,处理后返回结果。后面会给代码,先记住:服务器跑起来后得告诉主机"我在哪"。
3. 连主机:端上桌开吃
- 配置Claude Desktop: 打开Claude安装目录,找或新建claude_desktop_config.json,写上: {"servers": [{"name": "news_server", "command": "python news_server.py"}]} 保存,重启Claude,它就连上了。
- 测试: 在Claude输入"给我抓点AI热点新闻",服务器跑好就会返回结果。
Claude Pro如何订阅使用?
下载了Claude Desktop,登陆账号之后,就是免费版额度,如果订阅了Claude Pro就会自动升级为Pro订阅计划限制。
PS:想要订阅使用ClaudePro可以参考本文:(2025最新)Claude 3.7 Sonnet怎么样?如何使用Claude 3.7 Sonnet?如何使用Claude Code?如何升级订阅CluadePro
Claude Pro订阅的作用:
Claude Desktop不强制订阅Claude Pro(每月20美元,英国好像是18刀)也能用,但免费版对话量有限(比如一天20次)。订阅Pro后使用量提升5倍(可达100次),高峰期响应更快,还能用更强模型(Claude 3.7 Sonnet),抓取更稳定。
三、除了Claude Desktop,MCP还能咋用?五大场景开眼界!
MCP虽是新生事物,但生态发展很快。截止2025年3月12日,已有不少主流AI工具和编辑器宣布支持MCP。以下是几个代表性客户端(基于现有资料和社区反馈整理):
1. Claude Desktop
- 支持情况:作为Anthropic自家产品,Claude的桌面版是最早支持MCP的客户端。
- 特点:可以直接连接本地文件系统、GitHub等资源,适合开发者调试。
2. Cursor
- 支持情况:知名AI代码编辑器Cursor在最新版本中加入了MCP支持。
- 特点:结合代码上下文,通过MCP调用外部工具,极大提升开发效率。
3. Windsurf
- 支持情况:新兴AI编辑器,已集成MCP。
- 特点:专注于轻量化,支持本地资源访问,社区评价颇高。
4. Zed
- 支持情况:高性能代码编辑器,内置MCP支持。
- 特点:主打提示模板和工具集成,适合快速构建AI工作流。
5. Cline(VSCode插件)
- 支持情况:作为VSCode的AI插件,支持MCP并提供市场(MCP Market)。
- 特点:开发者友好,可以快速安装社区Server。
6. 其他潜力玩家
- Genkit:Firebase的AI SDK,通过插件支持MCP,适合Web开发者。
- 未来趋势:社区预测,像ChatGPT、Copilot等大厂产品可能会跟进,毕竟标准化是大势所趋。
一句话总结:目前MCP生态以开发者工具为主,Claude Desktop和Cursor是主力军,未来有望扩展到更多消费级应用。
四、Python实战1:本地计算机的文件系统中读取
这是一个官方的例子,在本教程中,您将扩展Claude for Desktop,以便它可以从计算机的文件系统中读取、写入新文件、移动文件,甚至搜索文件。
不用担心------在执行这些操作之前它会征求您的许可!
1. 下载 Claude 桌面版
首先下载Claude for Desktop,选择 macOS 或 Windows。(Claude for Desktop 尚不支持 Linux。) 按照安装说明进行操作。 如果您已经拥有 Claude 桌面版,请点击计算机上的 Claude 菜单并选择"检查更新...",确保它是最新版本。
2. 添加文件系统 MCP 服务器
为了添加此文件系统功能,我们将在 Claude for Desktop 中安装预构建的文件系统 MCP 服务器。这是Anthropic 和社区创建的数十台服务器之一。 首先打开计算机上的 Claude 菜单并选择"设置..."请注意,这些不是应用程序窗口本身中的 Claude 帐户设置。 在 Mac 上它应该是这样的:
单击设置窗格左侧栏中的"开发人员",然后单击"编辑配置":
这将在以下位置创建一个配置文件:
- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
- windows:%APPDATA%\Claude\claude_desktop_config.json
如果您还没有,它将在您的文件系统中显示该文件。 在任何文本编辑器中打开配置文件。将文件内容替换为以下内容:
- MacOS/Linux
perl
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/Users/username/Downloads"
]
}
}
}
- windows
perl
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"C:\Users\username\Desktop",
"C:\Users\username\Downloads"
]
}
}
}
配置文件如何工作?
claude_desktop_config.json配置文件告诉 Claude for Desktop 每次启动应用程序时要启动哪些 MCP 服务器。 在本例中,我们添加了一个名为"filesystem"的服务器, 它将使用 Nodenpx命令安装和运行@modelcontextprotocol/server-filesystem。
此服务器将允许您在 Claude for Desktop 中访问文件系统。
tips:确保将其替换 "C:\Users\username\Desktop", "C:\Users\username\Downloads"为您的计算机文件路径应指向您希望 Claude 能够访问和修改的有效目录。它已设置为适用于桌面和下载两个路径,但您也可以添加更多路径。 为确保此程序正常运行,您的计算机上还需要安装Node.js。要验证是否已安装 Node,请在您的计算机上打开命令行。
- 在 macOS 上,从"应用程序"文件夹打开"终端"
- 在 Windows 上,按 Windows + R,输入"cmd",然后按 Enter
进入命令行后,输入以下命令验证是否已安装 Node:
css
node --version
如果出现错误"未找到命令"或"无法识别节点",请从nodejs.org下载 Node 。
3. 重启Claude
更新配置文件后,您需要重新启动 Claude for Desktop。 重新启动后,您应该会看到在输入框的右下角看到一个锤子(
添加图片注释,不超过 140 字(可选)
)图标:
单击锤子图标后,您应该会看到 Filesystem MCP Server 附带的工具:
如果您的服务器没有被 Claude for Desktop 接收,请继续执行故障排除部分以获取调试提示。
4.尝试一下!
现在您可以与 Claude 对话并询问有关您的文件系统的信息。它应该知道何时调用相关工具。 你可以尝试问 Claude 的事情:
- 你能写一首诗并保存到我的桌面吗?
- 我的下载文件夹中有哪些与工作相关的文件?
- 您能将我桌面上的所有图像移到一个名为"图像"的新文件夹中吗?
根据需要,Claude会调用相关工具,并在采取行动前征求你的同意:
MCP Python实战2:用MCP抓AI热点新闻,生成小红书图片!
场景:从"AI宅男"到"小红书达人"
咱们用Claude Desktop的MCP功能,抓AI热点新闻,生成图片,直接输出适合小红书发布的内容!
完整代码:从抓取到生成,手把手注释
python
import json
import requests
from bs4 import BeautifulSoup
from datetime import datetime
import sys
import base64
import os
# 方案1:用html2image(需wkhtmltopdf)
try:
from html2image import Html2Image
USE_PLAYWRIGHT = False
except ImportError:
USE_PLAYWRIGHT = True
# 方案2:用playwright(备选)
if USE_PLAYWRIGHT:
from playwright.sync_api import sync_playwright
# 模拟MCP服务器:抓AI热点新闻
def fetch_ai_news():
url = "https://news.google.com/search?q=AI+artificial+intelligence"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
try:
response = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(response.text, "html.parser")
news_items = soup.select("h3.ipQwMb a")[:4] # 抓取前4条新闻
news_list = [
{"title": item.text, "url": "https://news.google.com" + item["href"][1:]}
for item in news_items
]
return news_list
except Exception as e:
print(f"抓取新闻失败:{e}")
return []
# 生成HTML内容,模仿小红书图片风格
def generate_html(news_list):
current_date = datetime.now().strftime("%Y.%m.%d") # 当天日期,如2025.03.12
html = """
<html>
<head><style>
body { font-family: Arial; background: #fff; margin: 0; padding: 20px; }
.container { border: 10px solid #a084e8; padding: 20px; max-width: 600px; margin: auto; background: #fff; }
h2 { color: #a084e8; text-align: center; font-size: 24px; }
p.date { color: #666; text-align: center; font-size: 14px; }
ul { list-style: none; padding: 0; }
li { margin: 10px 0; padding-left: 20px; position: relative; }
li:before { content: "⓿"; color: #a084e8; position: absolute; left: 0; }
a { color: #1a73e8; text-decoration: none; }
.footer { color: #999; font-size: 12px; text-align: center; margin-top: 20px; }
.character { position: absolute; bottom: 20px; right: 20px; width: 100px; opacity: 0.7; }
</style></head>
<body>
<div class="container">
<h2>AI每日资讯</h2>
<p class="date">{} AI资讯总结</p>
<ul>
""".format(current_date)
for i, news in enumerate(news_list, 1):
html += f'<li><a href="{news["url"]}">{news["title"]}</a></li>'
html += """
</ul>
<p class="footer">由MCP协议驱动,AI自动生成</p>
</div>
<img src="https://via.placeholder.com/100" class="character">
</body>
</html>
"""
with open("news.html", "w", encoding="utf-8") as f:
f.write(html)
return html
# HTML转图片:支持两种方案
def html_to_image(html_file):
if not USE_PLAYWRIGHT:
hti = Html2Image(size=(600, 400))
hti.screenshot(html_file=html_file, save_as="news.png")
else:
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.set_viewport_size({"width": 600, "height": 400})
page.goto(f"file://{os.path.abspath(html_file)}")
page.screenshot(path="news.png")
browser.close()
return "news.png"
# 模拟小红书API上传
def upload_to_xiaohongshu(image_path):
with open(image_path, "rb") as f:
image_data = base64.b64encode(f.read()).decode("utf-8")
print(f"模拟上传图片到小红书:{image_path}")
print(f"图片Base64预览(前50字符):{image_data[:50]}")
return {"status": "success", "url": "http://xiaohongshu.com/fake_url"}
# MCP服务器主逻辑
def mcp_server():
while True:
request = sys.stdin.readline().strip()
if not request:
continue
try:
req_data = json.loads(request)
if req_data.get("method") == "get_ai_news"):
news_list = fetch_ai_news()
if not news_list:
raise Exception("未抓取到新闻")
html_content = generate_html(news_list)
image_path = html_to_image("news.html")
upload_result = upload_to_xiaohongshu(image_path)
response = {
"id": req_data["id"],
"result": {"news": news_list, "image": image_path, "upload": upload_result},
"error": None
}
print(json.dumps(response), flush=True)
except Exception as e:
error_response = {"id": req_data.get("id", 0), "result": None, "error": str(e)}
print(json.dumps(error_response), flush=True)
if __name__ == "__main__":
print("启动MCP新闻服务器...")
mcp_server()
上诉html转图片依赖参考
- 必须:pip install requests beautifulsoup4
- 图片生成(二选一):
- 方案1:pip install html2image,需装wkhtmltopdf(Windows从 wkhtmltopdf.org 下载,macOS用brew install wkhtmltopdf)。
- 方案2:pip install playwright,然后playwright install(下载Chromium,约200MB)。
运行效果
命令行输入:python news_server.py 输出(2025年3月12日):
erlang
启动MCP新闻服务器...
{"id": 1, "result": {"news": [{"title": "AI突破新纪录", "url": "..."}, ...], "image": "news.png", "upload": {"status": "success", "url": "http://xiaohongshu.com/fake_url"}}, "error": null}
模拟上传图片到小红书:news.png
图片Base64预览(前50字符):iVBORw0KGgoAAAANSUhEUgAA...
五、总结:MCP协议,AI的"全能接口"!
MCP是AI的"超级连接器",Claude Desktop是最成熟的使用方式,但你还能用Cursor、Docker、Cloudflare Workers等玩法,甚至自己开发服务器。
Claude Pro订阅能让Claude Desktop体验更强,但不强制。
咱们的案例中,MCP帮Claude Desktop抓新闻、生成小红书图片,效率拉满!去 claude.ai/download 下载Claude Desktop试试,或者看看 modelcontextprotocol.io 的教程,探索更多玩法!有问题评论区问我,随时解惑~(求个赞,哈哈!)
引用的文献
PS:ClaudePro订阅:(2025最新)Claude 3.7 Sonnet怎么样?如何使用Claude 3.7 Sonnet?如何使用Claude Code?如何升级订阅CluadePro
- Anthropic官方文档. (2024). Model Context Protocol (MCP) Specification. modelcontextprotocol.io/
- Claude Desktop下载页面. (2025). Claude Desktop Download. claude.ai/download
- Python官方文档. (2025). Requests库使用指南. requests.readthedocs.io/
- BeautifulSoup文档. (2025). BeautifulSoup4解析HTML. www.crummy.com/software/Be...
- Html2Image文档. (2025). HTML转图片指南. github.com/vgalin/html...
- Playwright文档. (2025). Playwright Python指南. playwright.dev/python/