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

基于FastMCP创建MCP服务器的小白级教程

以下是基于windows 11操作系统环境的开发步骤。

1、python环境搭建

访问官网:https://www.python.org/。下载相应的版本(如:3.13.5),然后安装。

安装完成之后,使用命令行工具输入python,显示如下图即可安装成功。

2、fastmcp项目的初始化

fastmcp的文档地址:FastMCP MCP框架,推荐使用UV来安装和管理 FastMCP。

我要在H:\mcp-demo文件夹下创建我的项目,使用vs code打开该文件夹项目。

(1)UV的安装

进入UV官网的安装文档Installation | uv,如下图:

安装完成之后,在命令行里录入UV时,出现如下信息,即为安装成功:

(2)使用UV来初始化项目,如下图:

即可自动初始化如下图所示的项目:

(3)使用uv创建python虚拟环境

项目目录里多了一个文件夹。

(4)按照上一步的提示,使用”.venv\Scripts\activate“进行激话,因为我们是windows环境,所以打开.venv目录查看

使用.venv\Scripts\activate.bat

.venv\Scripts\activate.bat

这个时候,项目的环境变量更新了。验证方式:输入python,即可出现我们希望的python版本信息,如图

使用exit()退回。

(5)安装fastmcp

参考fastmcp文档

uv pip install fastmcp

等待安装完成。

3、编写mcp工具和资源

安装完成之后,即可编写代码,打开main.py文件,参考官方示例代码如下:

import os
from pathlib import Path
from typing import List,Dict
from fastmcp import FastMCPmcp= FastMCP(name="我的文件MCP服务器")# 在应用启动前设置
# os.environ["DANGEROUSLY_OMIT_AUTH"] = "true"@mcp.tool(description="获取当前电脑桌面的路径")
def get_desktop() -> str:return f"H:\mcp-demo"@mcp.tool(description="遍历文件夹下的所有文件")
def list_files_in_directory(directory_path: str) -> List[str]:path = Path(directory_path)if not path.exists() or not path.is_dir():return [{"error": "指定的路径不存在或不是一个目录"}]files=[]for file in path.iterdir():if file.is_file():files.append({"file_name":file.name, "file_path": str(file)})return files@mcp.tool(description="搜索文件夹下的特定文件")
def search_files(directory_path: str, keyword: str) -> List[Dict[str, str]]:path = Path(directory_path)if not path.exists() or not path.is_dir():return [{"error": "指定的路径不存在或不是一个目录"}]results = []for file in path.iterdir():if file.is_file() and keyword.lower() in file.name.lower():results.append({"file_name": file.name, "file_path": str(file)})return results# def main():
#    print("Hello from workon-mcp!")if __name__ == "__main__":# main()mcp.run()  # 启动MCP服务器 # Default: uses STDIO transport# mcp.run(transport="sse", host="127.0.0.1", port=8000)

4、运行测试

使用 fastmcp run 来进行运行调试。

http://www.lryc.cn/news/595991.html

相关文章:

  • libgmp库(GNU高精度算术库)介绍
  • Elasticsearch 学习笔记
  • Doxygen生成接口文档
  • Hadoop调度器深度解析:FairScheduler与CapacityScheduler的优化策略
  • 运维实战:100条常用SQL语句,涵盖基础查询、数据操作、表管理、索引视图、连接查询、子查询、日期处理、字符串操作等核心操作,建议收藏!
  • Android常用的adb和logcat命令
  • DOM/事件高级
  • ZooKeeper学习专栏(六):集群模式部署与解析
  • Java中内存屏障在volatile和sychronized的应用
  • Apache Ignite 中乐观事务(OPTIMISTIC Transactions)的工作机制
  • 【Go语言-Day 23】接口的进阶之道:空接口、类型断言与 Type Switch 详解
  • TTL+日志的MDC实现简易链路追踪
  • 【从0-1的JavaScript】第2篇:JS对象的创建、使用已经内置对象
  • 操作系统 —— A / 概述
  • API网关原理与使用场景详解
  • Android AppCompat:实现Material Design向后兼容的终极指南
  • Apache Ignite扫描查询
  • 快手视觉算法面试30问全景精解
  • 2025 年非关系型数据库全面指南:类型、优势
  • Apache Ignite缓存基本操作
  • [Dify] -进阶10- Dify 的用户输入结构:变量、参数、文件上传全解析
  • 如何撤销Git提交误操作
  • 【音视频协议篇】RTMP协议
  • haproxy的负载均衡集群搭建
  • 构建智能视频中枢--多路RTSP转RTMP推送模块在轨道交通与工业应用中的技术方案探究
  • 最新AI与Python在地球科学多源数据交叉融合中的前沿技术应用
  • linux用户态各定时器抖动测试
  • 「Linux命令基础」用户组管理
  • MongoDB频繁掉线频繁断开服务的核心原因以及解决方案-卓伊凡|贝贝|莉莉|糖果
  • stream流入门