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

相关文章:

  • 深入理解浏览器渲染机制:重排(Reflow)与重绘(Repaint)
  • 深入剖析以太坊虚拟机(EVM):区块链世界的计算引擎
  • 【低空安全】低空安全简介
  • OCR库pytesseract安装保姆级教程
  • 【LLM1】大型语言模型的基本生成机制
  • 特种行业许可证识别技术:通过图像处理、OCR和结构化提取,实现高效、准确的许可证核验与管理
  • 力扣32:最长有效括号
  • Docker小游戏 | 使用Docker部署文字风格冒险网页小游戏
  • 【Linux开发】错误更改bash.sh导致PATH环境变量被破坏所有命令不可用的解决方法
  • CANOE-新建工程
  • shell脚本实现读取ini键值
  • SCAU学习笔记 - 校科联自科二面通关指南
  • 信号量、死锁、管道
  • 【Goland】:Map
  • 【UE4】VS2022编译UE4.26.2工程问题记录
  • 基于CentOS 7.6搭建GitLab服务器【玩转华为云】
  • css中px转rem的计算公式
  • L/S/C频段航空航天使用情况
  • ​​Java核心知识体系与集合扩容机制深度解析​
  • MYSQL中读提交的理解
  • 跨平台笔记协作:cpolar 提升 Obsidian 知识库共享效率方案
  • ubuntu 下载安装tomcat简单配置(傻瓜式教程)
  • Fluss:颠覆Kafka的面向分析的实时流存储
  • RAG 入门指南:从概念到最小系统搭建
  • 一道同分排名的SQL题
  • Vue深入组件:组件 v-model 详解2
  • Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南
  • DSP音频算法工程师技能2
  • PPT生成视频的AI大模型应用技巧
  • 如何区分网站使用的是Vue2还是Vue3