
阿里云《AI云原生应用架构白皮书》中提到AI工具标准化和MCP实践,其中也提到了从第一个MCP Server开始,不仅仅是新建MCP Server,还要考虑对现有API重构为MCP Server。
我们在GitHub上开源了阿里云AI架构Hands-on Lab、最佳实践和Samples,本篇作为其中的MCP实践篇。

构建极简的MCP Server:Hello MCP
构建MCP Server,其实不复杂,现在各种AI Coding都可以帮我们快速生成代码,这次介绍的Hello MCP也是AI生成的。既然AI能够快速生成,就不需要苦苦的手敲每一行代码。
这次的Hello MCP非常简单,从Mook数据中返回用户查询的天气信息,就这些。Mook天气数据只包括4行,如下。
{
"北京": {"temperature": "22°C", "condition": "晴天"},
"上海": {"temperature": "25°C", "condition": "多云"},
"深圳": {"temperature": "28°C", "condition": "小雨"},
"广州": {"temperature": "27°C", "condition": "阴天"}
}这有啥好值得做成MCP的呢?其实MCP也是给AI一个调用的入口,MCP Client调用到MCP Server之后再怎么处理,都是MCP Server自己的事情,从Mook数据中返回数据,或者从数据库中查询,或者调用天气预报平台的接口进行查询,等等这些处理都可以。所以,我们先用Mook数据来实现。
先看下整体代码目录。
hello-mcp/
├── mcp-version/ # MCP 协议版本
│ ├── weather_server.py # MCP 服务器实现
│ ├── mcp.json # MCP 配置文件
│ └── requirements.txt # 依赖文件
└── flask-api-version/ # Flask API 版本
├── weather_api.py # Flask API 实现
└── requirements.txt # 依赖文件下面把整个mcp-weather.py代码拆解开来看,就下面几部分。
if method == "initialize":
return {
"jsonrpc": "2.0",
"id": request.get("id"),
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {}
},
"serverInfo": {
"name": "weather-server",
"version": "1.0.0"
}
}
}2. 如果用户请求的是tools/list,直接返回所支持的城市列表。
elif method == "tools/list":
return {
"jsonrpc": "2.0",
"id": request.get("id"),
"result": {
"tools": [{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称"
}
},
"required": ["city"]
}
}]
}
}3. 如果用户请求的是tools/call,并且输入了city字段,并且对应的Mook数据中还有就进行返回对应的天气信息。
elif method == "tools/call":
tool_name = request["params"]["name"]
if tool_name == "get_weather":
city = request["params"]["arguments"]["city"]
weather = self.weather_data.get(city, {"temperature": "未知", "condition": "数据不可用"})
return {
"jsonrpc": "2.0",
"id": request.get("id"),
"result": {
"content": [{
"type": "text",
"text": f"{city}的天气:温度 {weather['temperature']},天气状况:{weather['condition']}"
}]
}
}我们再来看下mcp.json,供IDE、其他平台添加Hello MCP这个MCP Server来使用。
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["weather_server.py"],
"env": {}
}
}
}重构Flask API为MCP Server
前面也说了,不仅仅是新建MCP Server,真正使用的时候还需要对现有API进行重构。所以,我们也整理了Flask版本的查询天气Python代码。运行后可以通过浏览器直接访问到城市列表、各个城市天气情况。


以上两部分,分别是最简单的MCP Server搭建过程和传统API格式进行对比,都是对外提供了城市列表、查询城市天气的功能,只是调用方式不同,希望能让你从Hello MCP中了解MCP Server基础原理,以及如何针对现有API封装重构为MCP Server。
源代码
欢迎讨论与共建,完善AI卓越架构和AI原生应用架构白皮书增加Hands-on Lab、最佳实践、Samples
https://github.com/mumulab-cn/aliyun-ai-architecture-labs/tree/main/samples/hello-mcp