5分钟手把手教你开发一个MCP服务
一、MCP服务是什么?
别被“云服务”唬住!MCP = Mini Cloud Provider(迷你云服务),就是用几行代码搭个能响应请求的小服务器。比如:
- 用户发来一条消息 → 你的服务处理 → 返回结果
- 可以是“天气预报”“笑话生成器”甚至“AI算命”!
为什么选它?
- 小白友好:5分钟跑起来,代码比你的早餐三明治还简单。
- 技能树点亮:为微服务、API设计打下基础,简历上能写“有云服务开发经验”。
- 脑洞大开:想做什么功能?随你!
二、工具准备:三件套搞定一切
- 语言选择:Python + Flask
- Flask是Python的轻量级Web框架,安装只需一句:
pip install flask
- 代码简洁,适合快速验证逻辑。
- Flask是Python的轻量级Web框架,安装只需一句:
- 文本编辑器:VS Code(或任何你喜欢的)
- 代码高亮、调试方便,新手友好。
- 终端:命令行(Windows用PowerShell,Mac用Terminal)
- 运行代码、测试API的核心工具。
三、3步5分钟:从0到1的代码
Step 1:创建项目结构
代码语言:javascript代码运行次数:0运行复制mkdir my_mcp_service
cd my_mcp_service
touch app.py # 主程序文件
Step 2:编写核心代码(app.py )
代码语言:javascript代码运行次数:0运行复制from flask import Flask, request, jsonify
app = Flask(__name__)
# 定义一个“回声服务”API
@app.route('/mcp/echo', methods=['POST'])
def echo_service():
data = request.json
response = {
"status": "success",
"message": "Echo received!",
"your_data": data
}
return jsonify(response)
# 彩蛋功能:随机笑话生成器
@app.route('/mcp/joke', methods=['GET'])
def random_joke():
jokes = [
"程序员为什么分不清万圣节和圣诞节?因为Oct 31 == Dec 25!",
"为什么Python程序员总在咖啡店工作?因为他们的代码需要'Java'!"
]
import random
return jsonify({"joke": random.choice(jokes)})
if __name__ == '__main__':
app.run(port=5000, debug=True)
Step 3:运行服务
在终端输入:
代码语言:javascript代码运行次数:0运行复制python app.py
看到 Running on http://127.0.0.1:5000/
,恭喜!你的云服务已上线!
四、测试你的MCP服务:玩转API
测试“回声功能”(POST请求)
用curl
命令测试:
curl -X POST http://localhost:5000/mcp/echo \
-H "Content-Type: application/json" \
-d '{"name": "Zoe", "message": "Hello MCP!"}'
预期响应:
代码语言:javascript代码运行次数:0运行复制{
"status": "success",
"message": "Echo received!",
"your_data": {"name": "Zoe", "message": "Hello MCP!"}
}
测试“笑话彩蛋”(GET请求)
直接在浏览器输入:http://localhost:5000/mcp/joke
或用curl
:
curl http://localhost:5000/mcp/joke
可能返回:
代码语言:javascript代码运行次数:0运行复制{"joke": "程序员为什么分不清万圣节和圣诞节..." }
五、扩展你的MCP服务:脑洞大开!
1. 添加“防作弊”Token认证
在echo_service
中加入验证逻辑:
def echo_service():
token = request.headers.get('X-API-Key')
if token != 'my_secret_token':
return jsonify({"error": "Invalid Token"}), 401
# 原有逻辑...
调用时需添加Header:
代码语言:javascript代码运行次数:0运行复制-H "X-API-Key: my_secret_token"
2. 数据库集成:存用户数据
用SQLite存储用户信息:
代码语言:javascript代码运行次数:0运行复制import sqlite3
conn = sqlite3.connect('users.db')
conn.execute('''CREATE TABLE IF NOT EXISTS users (name TEXT, message TEXT);''')
@app.route('/mcp/save', methods=['POST'])
def save_data():
data = request.json
conn.execute("INSERT INTO users VALUES (?, ?)",
(data['name'], data['message']))
connmit()
return jsonify({"status": "Data saved!"})
3. 部署到云:让全世界访问!
用Heroku免费部署:
- 注册Heroku账号,安装CLI工具。
- 在项目目录执行:
heroku create my-cool-mcp
git init
git add .
git commit -m "first commit"
git push heroku master
几分钟后,你的服务就能通过 /
访问!
六、隐藏彩蛋:网页版笑话按钮
1. 创建静态网页(index.html )
在项目目录新建index.html
:
<!DOCTYPE html>
<html>
<body>
<h1>欢迎来到MCP世界!</h1>
<button onclick="fetchJoke()">随机笑话</button>
<p id="joke"></p>
<script>
async function fetchJoke() {
const res = await fetch('/mcp/joke');
const data = await res.json();
document.getElementById('joke').innerText = data.joke;
}
</script>
</body>
</html>
2. 修改app.py 支持静态文件
代码语言:javascript代码运行次数:0运行复制@app.route('/')
def index():
return app.send_static_file('index.html') # 需将html放在static目录
效果:访问http://localhost:5000/
即可看到网页版笑话按钮!
七、总结:你已经完成了什么?
- 搭建了一个迷你云服务,能处理POST/GET请求。
- 学会了用Flask快速开发API。
- 了解了部署到云的基本流程。
- 加入了趣味彩蛋和扩展功能。
下一步行动建议
- 挑战升级:尝试用Docker容器化你的服务。
- 性能监控:用Prometheus监控服务状态。
- 安全加固:将Token认证升级为JWT(JSON Web Token)。
附:常见问题速查表
问题 | 解决方案 |
---|---|
服务启动报错port 5000 occupied | 换个端口:app.run(port=5001) |
浏览器访问显示404 | 检查路径是否正确,重启服务 |
数据库操作失败 | 确保SQLite库已安装(pip install pysqlite3) |
最后的话
MCP服务就像乐高积木,你可以随意拼接功能模块。下次想学微服务、Serverless甚至AI API时,记得回头看看这个5分钟的“小可爱”——它可是所有复杂系统的起点!