一、文档
https://www.youtube.com/watch?v=55FbKvc9nSI
https://www.datawhale.cn/learn/content/163/3932
https://bailian.console.aliyun.com/?tab=doc#/doc/?type=app&url=https%3A%2F%2Fhelp.aliyun.com%2Fdocument_detail%2F2879604.html
二、实施步骤
2.1 跑通本地MCP服务
1 2 3 4 5 6 7 8 9
| #创建目录manipulate_mysql E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01>uv init hello_mcp E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01>cd hello_mcp #使用uv创建虚拟python环境 E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01\hello_mcp>uv venv #激活此虚拟python环境 E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01\hello_mcp>.venv\Scripts\activate #安装MCP Python SDK (hello_mcp) E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01\hello_mcp>uv add "mcp[cli]==1.9.0" httpx
|
以一个简单的代码main.py
来演示MCP服务使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| from mcp.server.fastmcp import FastMCP import random
mcp = FastMCP("Demo")
@mcp.tool(description="这是一个超级聪明的AI,能回答你的一切问题") def chat(message: str) -> str: """输入一个问题,返回一个回答""" replies = ["你好!", "今天天气不错!", "你想聊些什么呢?", "我很好,你呢?", "再见!"] return random.choice(replies)
if __name__ == "__main__": mcp.run(transport='sse')
|
直接以python解析器运行上述py文件,如下是正常与成功时的显示内容:
image-20250525105852989
2.2 在本地测试MCP服务
上述cmd窗口及其中运行的python main.py
进程不要停止,打开另外一个cmd窗口并执行如下操作:
1 2
| #执行如下命令连接与调试mcp服务 (hello_mcp) E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01\hello_mcp>mcp dev main.py
|
image-20250525110408073
在自己本地浏览器中访问http://127.0.0.1:6274
,可以如下界面,然后按下图中注释进行操作:
image-20250525110921418
image-20250525111647637
2.3
用阿里云函数计算部署自定义MCP server
从技术上来说,除了阿里云函数计算,其实还有可以使用云服务器(应该是其他厂商的云服务器也可以,但因为要使用百炼平台,所以使用阿里云服务器应该最好)。如果自己已经购买了阿里云服务器,直接使用即可;但如果目前还没有购买,不建议为了测试与试用“在云服务器上部署MCP服务”而购买阿里云服务器,因为有更实惠的选择,它就是阿里云函数计算。
这是阿里云函数的官网: https://www.aliyun.com/product/fc 。
官方对其的定义与介绍是:函数计算(Function
Compute,简称FC)是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码或镜像。函数计算为您准备好计算资源,可靠地运行任务,通过弹性伸缩应对流量峰谷,并提供日志查询、性能监控和报警等功能。
函数计算提供了一种事件驱动的计算模型。您可以在指定函数中创建触发器,该触发器描述了一组规则,当某个事件满足这些规则,事件源就会触发关联的函数
使用Serverless架构的函数计算,只需聚焦于业务本身,平台为用户准备好计算资源,可靠地运行任务,并通过弹性伸缩应对流量峰谷,用户只需为任务实际消耗的资源付费。
打开阿里云函数计算概览界面:
https://fcnext.console.aliyun.com/overview ,点击左侧的“FunctionAI”
功能按钮,进入“云原生应用开发平台 CAP
控制台”页面,然后点击此页面左侧的“MCP广场”,进入“MCP广场|FunctionAI”页面后,点击右上角的“创建自定义
MCP Server”按钮,
image-20250525143522255
image-20250525143755752
MCP服务基础配置:
image-20250525144447989
MCP服务配置:
image-20250525145147575
我上传的hello_mcp.zip内的文件结构如下:
image-20250525150700920
资源配置:
image-20250525145611059
确认部署:
image-20250525145708962
(日志服务sls的开通好像需要一点缓冲的时间,如上图是未开通的。但过了几十秒后就提示我开通了)我第一次执行部署时失败了,稍等几十秒后(不知道期间发生了什么),再次部署就成功了。此时部署虽然成功了,但其中相关服务确是启动失败了:
image-20250525151013082
根据日志提示,”没有找到一个叫做mcp的模块“,那么尝试通过WebIDE安装配置看看:
image-20250525151354708
依次点击此编辑器”Terminal->New
Terminal“,打开一个Terminal窗口:
image-20250525151547595
image-20250525152308258
然后重新部署,但服务还是启动失败,报销如下:
image-20250525161330765
然后我依次做了下操作:
(1)在WebIDE的编辑器的Terminal窗口中执行了命令“pip install uvicorn
-t .”,保存后重新部署。
(2)在WebIDE的编辑器中,将“.python-version、pyproject.toml”这两个文件中的python3.11改成python3.10,保存后重新部署。
但都还是失败。最后参照如下“此文2.6.1
章节”所述方法即可解决。解决后,服务部署成功,测试成功:
image-20250525162814568
image-20250525163839738

将此MCP服务的公网访问地址复制备用:
image-20250525164004059
2.4
百炼平台MCP管理创建自定义MCP服务
image-20250525181919182
image-20250525164811941
2.5
百炼平台智能体应用中使用上述自定义MCP服务
image-20250525165100643
image-20250525165150273
image-20250525170915386
image-20250525171814715
2.6 问题与处理
2.6.1
服务部署时一直报错“Function instance health check failed on port 8000 in
120 seconds.”
2.6.1.1 错误描述
使用上述操作在FC中创建MCP与函数后,服务一直运行失败。自己最终使用如下操作重新创建一个工程目录hello_mcp02,其中使用python3.10,同时未再指定mcp版本。main.py文件内容还是一样
1 2 3 4 5 6 7 8 9
| #创建目录manipulate_mysql E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01>uv init hello_mcp02 --python 3.10 E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01>cd hello_mcp02 #使用uv创建虚拟python环境 E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01\hello_mcp02>uv venv #激活此虚拟python环境 E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01\hello_mcp02>.venv\Scripts\activate #安装MCP Python SDK (hello_mcp02) E:\Hdisk\学习\06_AI学习\13_LatestTechKnowledge\01_MCP\try01\hello_mcp02>uv add "mcp[cli]" httpx
|
以一个简单的代码main.py
来演示MCP服务使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| from mcp.server.fastmcp import FastMCP import random
mcp = FastMCP("Demo")
@mcp.tool(description="这是一个超级聪明的AI,能回答你的一切问题") def chat(message: str) -> str: """输入一个问题,返回一个回答""" replies = ["你好!", "今天天气不错!", "你想聊些什么呢?", "我很好,你呢?", "再见!"] return random.choice(replies)
if __name__ == "__main__": mcp.run(transport='sse')
|
将此main.py文件打包压缩成main.zip重新上传到上述“代码包”配置项,重新部署。
还是失败
image-20250525161341966
2.6.1.2 解决办法
做了如下修改:
- 源码main.py,尝试读取FC_SERVER_HOST
与FC_SERVER_PORT系统变量,没有找到时优先使用0.0.0.0、9000,并尝试在创建FastMCP实例时传递
根据配置报错来看,FC_SERVER_PORT是有默认值的,是9000
- 函数计算MCP服务配置界面的监听端口配置成9000
- 重新部署服务。成功时的日志如下。
image-20250525162814568