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

【TRAE调教指南之MCP篇】FastMCP:快速制作自己的MCP服务

【TRAE调教指南之MCP篇】FastMCP:快速制作自己的MCP服务

      • 1. 解决的痛点
      • 2. 核心功能解析
      • 3. 安装与配置步骤
        • 3.1 安装 FastMCP (开发环境)
        • 3.2 创建并运行自定义服务器
        • 3.3 客户端配置
      • 4. 使用教程
        • 4.1 示例一:内部 API 查询工具
        • 4.2 示例二:数据库查询工具
        • 4.3 示例三:代码仓库操作工具
      • 5. 应用场景

1. 解决的痛点

在利用现有 MCP 工具的同时,您是否曾有过这些想法?

  • ✅ 内部工具连接:能否让 AI 助手直接查询公司内部的文档、数据库或 API?
  • ✅ 定制化工具:能否为特定工作流(如提交代码、部署预览)创建一个专属的 AI 助手工具?
  • ✅ 开发复杂度:开发一个正式的 MCP 服务器需要一定的协议理解和开发量,有没有更快的办法?
  • ✅ 快速原型验证:能否在几分钟内快速验证一个 MCP 工具的想法是否可行?

FastMCP 正是为了解决这些痛点而生。它不像前述工具那样提供开箱即用的具体功能,而是一个强大的“工具箱”或“开发框架”,旨在让开发者能够极其快速、简单地将任何资源、工具或 API 转换为 AI 助手可以调用的 MCP 服务器

核心定位
FastMCP 就像一个 “MCP 服务器的超级充电器”“万能转换器”。它本身不直接提供功能,但它赋能你,为你的任何自定义需求(无论是内部系统、独特工作流还是新奇想法)快速构建一个专属的 MCP 工具。

2. 核心功能解析

FastMCP 是一个基于 Python 的、用于快速开发 Model Context Protocol (MCP) 服务器的框架。其核心能力包括:

  • ✅极简开发模式:通过简单的装饰器(如 @tool)和 Python 函数,即可将任何功能暴露为 MCP 工具,无需深入理解 MCP 协议细节。
  • ✅多种数据源支持:内置了对常见数据源的简单支持,可作为工具的来源或参考:
    • 静态资源(Resources):提供静态文本、文件内容等。
    • 向量数据库(Vector Stores):支持集成 ChromaDB 等,快速为 AI 助手提供知识库检索能力。
    • 动态工具(Tools):任何可通过 Python 函数实现的功能,如调用 API、执行 shell 命令、处理数据等。
  • ✅开箱即用的模板:提供项目模板,一条命令即可创建新的 MCP 服务器项目,大幅降低启动成本。
  • ✅高性能与异步支持:基于现代异步 Python 框架构建,能够处理高并发请求,保证响应速度。

3. 安装与配置步骤

FastMCP 的安装配置过程与其他 MCP 服务器不同,它分为服务器开发客户端配置两部分。

3.1 安装 FastMCP (开发环境)

首先,您需要在项目目录下的 Python 环境中(推荐使用虚拟环境)安装 fastmcp 库来开发和运行您的自定义服务器。

# 创建虚拟环境
uv venv --python 3.12 .venv
# 激活虚拟环境
.venv\Scripts\activate
# 使用 uv安装fastmcp
uv pip install fastmcp
# 检查是否安装成功
fastmcp version

uv工具的安装使用可以参考手把手教你安装配置使用UV工具的保姆级教程
在这里插入图片描述
在这里插入图片描述

3.2 创建并运行自定义服务器

FastMCP 提供了命令行工具来快速创建项目和运行服务器。

  1. 创建新项目
    创建mymcp目录,在目录下创建my_mcp_server.py文件,内容如下:
from hmac import trans_36
from fastmcp import FastMCP# 1. Create the server
mcp = FastMCP(name="My First MCP Server")# 2. Add a tool
@mcp.tool
def add(a: int, b: int) -> int:"""Adds two integer numbers together."""return a + b# 3. Add a static resource
@mcp.resource("resource://config")
def get_config() -> dict:"""Provides the application's configuration."""return {"version": "1.0", "author": "MyTeam"}# 4. Add a resource template for dynamic content
@mcp.resource("greetings://{name}")
def personalized_greeting(name: str) -> str:"""Generates a personalized greeting for the given name."""return f"Hello, {name}! Welcome to the MCP server."# 5. Make the server runnable
if __name__ == "__main__":# 6. Run the server# mcp.run(transport="stdio")mcp.run(transport="http", host="127.0.0.1", port=8000, path="/mcp")
  1. 运行mcp服务器
    python my_mcp_server.py
    
    服务器默认会在 http://localhost:8000 启动。您需要记下这个地址(或 socket 路径)用于客户端配置。
    在这里插入图片描述
3.3 客户端配置

在您的 IDE(如 Cursor)的 MCP 配置文件中(通常是 mcp.json),添加您自定义的 FastMCP 服务器。

    "my-custom-server": {"command": "python","args": ["-m","uvicorn","server:app","--port","8000"],"env": {}}

或者,如果服务器已经运行,您也可以配置为连接到现有的 SSH 或 TCP 服务器。

4. 使用教程

FastMCP 的使用高度依赖于您自己开发的工具。以下是几个常见场景的示例,展示如何在 server.py 中定义工具并被 AI 调用。

4.1 示例一:内部 API 查询工具

假设您有一个内部系统状态查询的 API,您可以将其包装为 MCP 工具。

服务器端代码 (server.py):

from fastmcp import FastMCP
import httpxmcp = FastMCP("Internal-Tools")# 定义一个查询服务器状态的工具
@mcp.tool()
async def get_server_status(server_name: str) -> str:"""根据服务器名称获取其当前状态(如在线、离线、负载)。"""# 这里模拟调用内部APIasync with httpx.AsyncClient() as client:response = await client.get(f"https://internal-api.example.com/status/{server_name}")return response.json().get("status", "Unknown")if __name__ == "__main__":mcp.run()

客户端使用:

请检查一下「payment-service」服务器的当前状态。use my-custom-server。

4.2 示例二:数据库查询工具

您可以创建一个工具,让 AI 助手能够安全地查询数据库(如获取用户信息)。

服务器端代码 (server.py):

from fastmcp import FastMCP
import sqlite3mcp = FastMCP("Database-Query")@mcp.tool()
def get_user_email(user_id: int) -> str:"""根据用户ID从数据库查询其邮箱地址。"""conn = sqlite3.connect('example.db')cursor = conn.cursor()cursor.execute("SELECT email FROM users WHERE id = ?", (user_id,))result = cursor.fetchone()conn.close()return result[0] if result else "User not found"if __name__ == "__main__":mcp.run()

客户端使用:

帮我查一下用户ID为12345的邮箱地址是什么。use my-custom-server。

4.3 示例三:代码仓库操作工具

创建一个与 Git 仓库交互的工具,如创建新分支。

服务器端代码 (server.py):

from fastmcp import FastMCP
import subprocess
from pathlib import Pathmcp = FastMCP("Repo-Manager")@mcp.tool()
def create_git_branch(branch_name: str, repo_path: str) -> str:"""在指定的本地代码仓库中基于当前主分支创建一个新分支。"""try:result = subprocess.run(['git', '-C', repo_path, 'checkout', '-b', branch_name],capture_output=True,text=True,check=True)return f"Branch '{branch_name}' created successfully!"except subprocess.CalledProcessError as e:return f"Error: {e.stderr}"if __name__ == "__main__":mcp.run()

客户端使用:

请为「项目X」在路径「~/projects/x」下创建一个名为「feat/new-ai-button」的新功能分支。use my-custom-server。

5. 应用场景

FastMCP 并非直接与其他MCP 工具竞争,而是扮演着强大的“赋能者”和“补充者”角色。它在整个 MCP 生态中的定位非常独特:

  • 当现有工具无法满足你的特定需求时:无论是连接公司内部系统、自动化独特工作流,还是集成小众工具,FastMCP 给你了自己动手实现的能力。
  • 当你需要高度定制化和自动化时:它将 AI 助手的能力从“通用辅助”扩展到“专属操作”,可以直接对系统和环境进行安全可控的操作。
  • 快速原型验证:在投入大量时间开发完整 MCP 服务器前,可以用 FastMCP 在几分钟内搭建一个原型,验证想法的可行性。

总之,FastMCP 为你提供了将 MCP 潜力完全释放的钥匙,让你能够为任何想象得到的工作流构建桥梁,最终形成一个无缝衔接、高度自动化、深度集成的智能开发环境。

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

相关文章:

  • 对锁的总结
  • Agent 热潮遇冷?Manus 为何仍是 “版本神”
  • 充电枪结构设计-经验总结
  • 具身智能让人形机器人 “活” 起来:懂语言、能感知、会行动,智能进化再提速
  • docker安装rabbitmq(4.1.4-management)
  • 客户分层是什么?提升企业运营效率
  • 【python】运算符及语句
  • 数据结构:栈和队列(上)
  • 低代码革命遇瓶颈?这个“套娃神技“才是破局关键!
  • 【FastDDS】Layer DDS之Domain ( 05-Creating a DomainParticipant)
  • 关于linux网络编程——3
  • 扫地日记:有鹿巡扫机器人在景区被人类“调戏”的365天
  • ansible总结2
  • GIS大学课程表都长啥样?几个地信专业的大学一周课程表
  • 如何评价2025年数学建模国赛?
  • (二)文件管理-基础命令-pwd命令的使用
  • 高并发数据写入场景下 MySQL 的性能瓶颈与替代方案
  • “我店”积分模式的可持续性拷问:短剧能否撑起长期消泡沫需求?
  • 蓝桥杯算法之基础知识(6)
  • Python函数和方法类型注释
  • k8s使用StatefulSet(有状态)部署单节点 MySQL方案(使用本地存储)
  • 【Python】 Python 项目初始化脚本
  • JavaWeb03
  • EagleTrader观察|你的固定心态,可能正在悄悄让你交易破产
  • 【踩坑记录】Unity 项目中 PlasticSCM 掩蔽列表引发的 文件缺失问题排查与解决
  • 3种通过USB从电脑传输文件到iPad的方法
  • Python_occ 学习记录 | 细观建模(1)
  • Ubuntu查看开机以来修改的文件
  • 论文介绍“DUSt3R”:让 3D 视觉从“繁琐”走向“直观”
  • 语音合成之二十六 TTS情感控制技术开源数据集