大数跨境
0
0

AI卓越架构开源之Hello MCP,极简的MCP Server构建方式,将Flask API重构为MCP

AI卓越架构开源之Hello MCP,极简的MCP Server构建方式,将Flask API重构为MCP 沐然云计算
2025-10-16
0
导读:阿里云《AI云原生应用架构白皮书》中提到AI工具标准化和MCP实践
阿里云《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代码拆解开来看,就下面几部分。
  1. 如果用户请求是initialize初始化,直接返回固定的JSON格式数据。
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

【声明】内容源于网络
0
0
沐然云计算
生成式AI与云计算领域知识分享、开发与架构经验交流,以动手实践为驱动的Hands-on Lab方式进阶、关注儿童AI教育领域
内容 297
粉丝 0
沐然云计算 生成式AI与云计算领域知识分享、开发与架构经验交流,以动手实践为驱动的Hands-on Lab方式进阶、关注儿童AI教育领域
总阅读198
粉丝0
内容297