当前位置: 首页 > 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.xdnf.cn/news/1322479.html

相关文章:

  • Flutter 自定义 Switch 切换组件完全指南
  • 深度学习——R-CNN及其变体
  • React diff——差异协调算法简介
  • 【Python面试题】写一个用元类(metaclass)实现API接口自动注册的Demo。以及装饰器在项目中典型应用场景。
  • AI行业应用深度报告:金融、医疗、教育、制造业落地案例
  • 前端环境安装
  • AI 在金融领域的落地案例
  • go语言条件语if …else语句
  • ——链表——
  • 音频算法工程师技能1
  • 调试技巧(vs2022 C语言)
  • 【速通】深度学习模型调试系统化方法论:从问题定位到性能优化
  • 剧本杀小程序系统开发:保障游戏公平,营造健康娱乐环境
  • 蔬菜批发小程序:生产商的数字化转型利器——仙盟创梦IDE
  • 云计算-云上实例部署 RocketChat:Mongodb、主从数据库、Node 环境配置指南
  • 【人工智能】2025年AI代理失控危机:构建安全壁垒,守护智能未来
  • Python 面向对象三大特性详解(与 C++ 对比)
  • 【OpenAI】今日话题: GPT-4o-Audio-Preview 多模态语音交互模型介绍+API的使用教程!
  • 【verge3d】如何在项目里调用接口
  • ⭐CVPR2025 RigGS:从 2D 视频到可编辑 3D 关节物体的建模新范式
  • 【2025CVPR-目标检测方向】RaCFormer:通过基于查询的雷达-相机融合实现高质量的 3D 目标检测
  • BeeWorks 私有化会议系统:筑牢企业会议安全防线,赋能高效协同
  • 高并发网络编程实战:深入理解epoll客户端的事件驱动模型
  • OpenCV---特征检测算法(ORB,Oriented FAST and Rotated BRIEF)
  • css word-pass
  • 【LeetCode 热题 100】198. 打家劫舍——(解法二)自底向上
  • Linux磁盘阵列
  • ChatGPT-5 对教育行业的影响与案例研究
  • OpenAL技术详解:跨平台3D音频API的设计与实践
  • C++最小生成树