当前位置: 首页 > news >正文

从0-1使用Fastmcp开发一个MCP服务,并部署到阿里云百炼 -持续更新中

目的:
在本地使用fastmcp开发一个mcp,然后注册到阿里云的百炼里面。实现在百炼里面创建智能体的时候直接引用自己开发的MCP

已完成:本地环境安装
待完成:
1.根据需求实现一个MCP中可以调用某应用的多个API即 @mcp.tool()、@mcp.prompt()、接入大模型实现根据问题自动选择合适的tool
2.将MCP使用UVX部署到阿里云函数计算中,并在百炼中注册MCP。
3.创建百炼Agent,调用MCP,验证结果

一、环境准备

1.安装 Node.js 和 UV

打开cmd,并输入下面代码安装node.js:
选择

winget install OpenJS.NodeJS

在这里插入图片描述
验证:node --version
在这里插入图片描述

管理员身份运行 PowerShell 执行以下命令安装 uv:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

如果一直卡在这个界面可能是因为没有安装python环境,要先安装python环境。因为uv 的核心功能是管理 Python 环境、依赖包和执行 Python 代码,其本身并不包含 Python 解释器,必须依赖已安装的 Python 来运行。
在这里插入图片描述

安装python解释器和开发软件pycharm
1.下载python解释器,因为阿里云的函数计算最高支持3.12的,所以这里我们也下载3.12版本。官网地址:https://www.python.org/getit/
在这里插入图片描述
选择3.12.10,64位下载,或者直接访问这个链接https://www.python.org/ftp/python/3.12.10/python-3.12.10-amd64.exe
在这里插入图片描述在这里插入图片描述
验证安装结果,cmd输入python
在这里插入图片描述

2.安装pycharm
访问这个链接,直接下载:https://www.jetbrains.com/pycharm/download
在这里插入图片描述
安装完成之后,再次运行PowerShell 命令
在这里插入图片描述
关闭窗口后重新打开验证:uv --version
在这里插入图片描述

2.安装fastmcp

fastmcp官网地址:https://gofastmcp.com/getting-started/welcome
在本地先创建一个文件夹用来做项目管理,这里我新建一个D:\art\fastmcp
1.然后在这个目录下进入cmd,执行以下命令新建一个项目:

uv init 01_env_test

2.进入项目目录:

cd 01_env_test

3.使用 Python 内置模块创建虚拟环境

python -m venv .venv

4.激活虚拟环境

.\.venv\Scripts\activate

初始化之后就可以在目录下看到以下文件:
在这里插入图片描述
5.在这个目录下打开cmd,执行命令安装fastmcp

uv add fastmcp

查看安装结果:
在这里插入图片描述

二、运行Demo

1.打开项目,验证环境是否正常

打开Pycharm,选择打开项目,然后选择D:\art\fastmcp\01_env_test 这个目录
在这里插入图片描述
找到main函数,运行下,看下环境是否正常
在这里插入图片描述
导入from fastmcp import FastMCP,检查导入是否正常
把原来的代码注释掉,粘贴下面这段代码

from fastmcp import FastMCPmcp = FastMCP("Demo 🚀")@mcp.tool
def add(a: int, b: int) -> int:"""Add two numbers"""return a + bif __name__ == "__main__":mcp.run()

在这里插入图片描述
点击左下角打开命令行也可以查看版本信息

fastmcp version

在这里插入图片描述

2.创建一个服务端和客户端的Demo

新建一个服务端的文件:my_server.py
在这里插入图片描述
写一个函数,并使用 @mcp.tool 装饰器将其注册到服务器中
这里demo写的是输入一个string的名字,返回一个Hello +输入的名字

from fastmcp import FastMCPmcp = FastMCP("My MCP Server")@mcp.tool
def greet(name: str) -> str:return f"Hello, {name}!"

官方也写了一个在本文件中测试的代码。完整代码如下,调用链路就是运行后先运行call_tool方法,然后带着参数调用了greet方法,最后返回了一个字符串拼接。

import asyncio
from fastmcp import FastMCP, Clientmcp = FastMCP("My MCP Server")@mcp.tool()
def greet(name: str) -> str:return f"Hello, {name}!"client = Client(mcp)async def call_tool(name: str):async with client:result = await client.call_tool("greet", {"name": name})print(result)asyncio.run(call_tool("666"))if __name__ == "__main__":mcp.run()

在这里插入图片描述
测试完之后显示正常输出,然后就把创建客户端这个删掉,还是保留最开始的代码,不过下面新增一个main,让他可以运行就行,等下用命令行的方式让他运行起来,然后单独在写一个客户端来调用这个服务端,修改后的代码是:
在这里插入图片描述
新建一个客户端:my_client.py

import asyncio
from fastmcp import Clientclient = Client("my_server.py")async def call_tool(name: str):async with client:result = await client.call_tool("greet", {"name": name})print(result)asyncio.run(call_tool("666")) 

调用测试,回到下面命令行这里,点击加号新增一个窗口,等下一个运行服务端,一个运行客户端来调用。
在这里插入图片描述
在第一个窗口运行以下代码启动服务端:

uv run my_server.py

在这里插入图片描述

在第二个窗口运行以下代码启动客户端调用:

  uv run my_client.py

在这里插入图片描述
这里可以按照预期显示正确的结果。

http://www.dtcms.com/a/337459.html

相关文章:

  • 大数据服务完全分布式部署- 其他组件(阿里云版)
  • 数字隔离器,变频器安全运行的 “隐形引擎”
  • 深入对比:Chromium的base::RefCounted与std::shared_ptr——从线程安全到性能优化
  • 宏观认识 Unitree LiDAR L1 及其在自动驾驶中的应用
  • Avalonia实例实战七:动画
  • win环境断电强制拉库报ORA-600 kcbzib_kcrsds_1故障处理---惜分飞
  • 数据库:表和索引结构
  • 【datawhale组队学习】n8n TASK01
  • 知识蒸馏 Jensen-Shannon散度
  • 为什么品牌更愿意为新品打广告?
  • 机器学习——XGBoost算法
  • 力扣2道dp
  • easyexcel fastexcel 官方文档 easyexcel合并单元格
  • 项目会议怎么开才有效
  • 【前端面试题】JavaScript 核心知识点解析(第十四题解析到第二十二题)
  • 【Mac】【Minecraft】关于如何在Mac上搭建基岩版MC服务器的方法
  • 前端Element-plus的选择器 el-select 清空内容时,后端对应的更新方式,支持更新为null
  • 【秋招笔试】2025.08.09网易秋招机考
  • openEuler系统备份与恢复方法
  • 【DL学习笔记】交叉熵损失函数详解
  • 无人机视角违章建筑识别分割数据集labelme格式343张2类别
  • AI测试自愈率80%!语音编程提效10倍——2025软件AI化爆炸级突破
  • 端面试题大汇总二
  • 分库分表数据源如何清洗同步到目标表
  • 大数据计算引擎(二)——Flink
  • 大数据计算引擎(四)—— Impala
  • 【matlab】考虑源荷不平衡的微电网鲁棒定价研究
  • Pandas 数据导入导出、索引、分组聚合与可视化
  • (第十八期)图像标签的三个常用属性:width、height、border
  • 特赞内容运营解决方案,AI重构品牌内容价值链