前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
返回 AI 情报前线
All News · 全部资讯8485
  • CI/CD AI Agent 部署前需加人工审批门
  • MCP + RSS 目录:让 AI 工具获取领域最新信息
  • Agent工具调用200 OK背后的谎言:完成所有权问题
  • Google Sheets Canvas功能详解:打造互动数据看板
  • DeepSeek V4 Pro正式版发布,Agent框架Harness开源,API涨价
  • GPU 数值格式详解:FP32/BF16/FP8/FP4 交互式理解指南
  • 长时 Agent 循环如何设计记忆机制
  • 深度体验DeepSeek Harness:涨价也在情理之中
  • AWS AgentCore:统一监控多云/本地AI Agent
  • DFlash speculative decoding 测评:tokens/s 指标可能误导
  • Claude文本水印技术原理解析
  • 为什么AI demo便宜、上线后成本却翻10倍
  • 用 Bedrock AgentCore Browser Tool 自动化遗留 Web 系统
  • Liquid AI 发布 3B 端侧视觉语言模型
  • AI 编程 Agent 通过测试也可能做出架构错误决策
  • 基于 Bedrock AgentCore 构建 M&A 尽职调查多智能体系统
  • Token降价90%但我的AI账单没降:Jevons悖论在起作用
  • 我的Agent替我做营销:我只负责点批准
  • 文本 AI 水印容易被移除,技术局限性分析
  • ai-prompt-firewall:拦截敏感信息外泄的 Node.js 库
  • 用 FastMCP 快速为 Claude Code 构建自定义工具服务器
  • Ling 3.0 Flash 同尺寸最聪明开源模型
  • AI 辅助团队开发实际吞吐量研究:REPL 到 Swarm
  • 神秘模型 mona-lisa-1 曝光:疑似 GPT-Image 继任者
  • OpenAI Astra 和 ChatGPT 6 曝光: 多 Agent 协作与 GPT-6 真身
  • 微软统一 Copilot 超级应用路线图初现
  • Claude + MCP: 一行命令完成容器化部署
  • AI 陪伴应用技术架构解析
  • 把 Claude Code 脚手架工程写成一条命令,开源了
  • A2A 协议详解:多 Agent 通信架构与实战实现
  • R-CLI 开源:Terminal Bench 2.1 最高分背后的编程脚手架
  • CVE-2026-16584:AWS API MCP Server安全漏洞深度分析
  • GitHub Copilot已上线Gemini 3.7 Flash
  • Anthropic 为 Claude 输出文本添加水印:API 开放检测,版权认定存争议
  • Next.js 16.3发布:开发内存降低90%,AI编码Agent工作流优化
  • 一行代码修复PyTorch训练隐性内存泄漏:loss.detach().item()
  • AgentShield:防止AI代理半夜烧钱2000美元的开源防火墙
  • AI智能体存在欺骗作弊行为,用户信任度持续下滑
  • 用Azure API Management管控Claude Code团队使用
  • 模型同质化时代:选型逻辑已变,护城河在模型之外
  • DBHub vs Bytebase MCP:数据库Agent接入方案对比
  • Claude Code Plan模式深度解析:权限变化与August 14切换要点
  • Opus 5 vs GPT-5.6 Sol vs Kimi K3 三大模型编程能力实测对比
  • Grok 4.6 性能追平 GPT-5.6 Sol,价格仅为六分之一
  • 为中国AI API 构建模型目录漂移监控工具
  • Opus 5 vs GPT-5.6 Sol vs Kimi K3:三大AI代理模型横向评测
  • Grok 4.6 性能比肩 GPT-5.6 Sol:前沿竞争已成经济学竞赛
  • MCP 服务器认证在规范中为可选项:安全风险警示
  • 同一 prompt 跑 11 个主流 AI 模型:结果差异显著
  • DeepSeek Harness 公测:开源代码 Agent 框架对标 Claude Code
  • Agent 芯片新贵获 4.8 亿美元融资:首颗 AI 芯片已量产
  • 已加载 51 / 8485
8.0
热点
AI SCORE
编程提效2026-08-13 23:04

用 FastMCP 快速为 Claude Code 构建自定义工具服务器

dev.to · AI#Claude Code#MCP#工具扩展
Editor brief · 编辑速览

通过 FastMCP 装饰器在几十行 Python 代码内实现 MCP Server,使 Claude Code 能调用外部工具(如日期算命),无需手写协议底层实现。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

"MCP 服务器听起来很复杂"——如果你是这么想的,FastMCP 或许会改变你的看法。它几乎帮你处理了所有的底层 plumbing。只需给一个普通的 Python 函数加上一个装饰器,你就拥有了一个 Claude Code 可以调用的自定义工具。

在本文中,我们将以一个小型的算命工具作为学习案例,并沿途讲解 FastMCP 实际上在背后为你做了什么。

MCP(Model Context Protocol)是一个通用标准,用于为 Claude 这样的 AI 模型提供"外部工具"。

AI 模型本身很擅长生成文本,但仅靠自身,它无法完成诸如"根据日期算今日运势"或"查询内部数据库"这类具体的事情。

这时 MCP 服务器就派上用场了:你在上面注册可调用的工具,Claude Code 在需要时会调用它们。

从头手写一个 MCP 服务器工作量不小,但有了 FastMCP,你只需几十行代码就能构建一个可用的算命工具,Claude Code 可以直接调用。

为什么 FastMCP 让这件事变得简单

通常,一个 MCP 服务器需要实现大量底层协议细节——使用什么消息格式、如何通告可用工具列表,等等。FastMCP 为你处理了所有这些"管道"工作。

作为开发者,你要做的只是写一个普通的 Python 函数,然后用 @mcp.tool 标记它。FastMCP 会检查函数的参数类型和返回值类型,自动生成 schema(也就是"说明书"),交给 AI。由于传输层或协议细节都不需要你操心,任何写过基本 Web 应用的人都能在几分钟内让第一个工具跑起来。

关于装饰器语法的一个提示:独立的 fastmcp 包(我们这里使用的)接受不带括号的 @mcp.tool。如果你使用的是官方 mcp Python SDK 捆绑的 MCPServer,装饰器需要加括号:@mcp.tool()。混用这两者是一种常见的令人困惑的错误来源,所以如果你从其他 MCP 教程复制代码,要仔细检查它使用的是哪个包。

设置 Python 环境

你需要 Python 3.10 或更高版本。

python --version

如果没有安装,从 python.org 下载。

然后创建并激活虚拟环境:

# macOS / Linux
python -m venv venv
source venv/bin/activate

# Windows
python -m venv venv
venv\Scripts\activate.bat

激活后,你会在提示符开头看到 (venv)。

pip install fastmcp

就这样——无需数据库,无需配置文件。

构建算命工具

创建一个项目文件夹,在其中新建一个 server.py 文件,内容如下:

import random
from datetime import date
from fastmcp import FastMCP

# Create the server ("uranai" is Japanese for "fortune-telling" — the name of this tool group)
mcp = FastMCP("uranai")

@mcp.tool
def fortune(name: str, birthday: str = "") -> str:
    """Tells today's fortune based on a name (and optionally a birthday)."""
    # Seed the RNG with name + birthday + today's date, so the result
    # stays the same for a given person on a given day, but changes daily.
    seed = f"{name}|{birthday}|{date.today().isoformat()}"
    rng = random.Random(seed)

    levels = ["Great luck", "Good luck", "Modest luck", "Luck", "Fading luck", "Bad luck"]
    items = ["reading a book", "taking a walk", "coffee", "sleeping early", "a new app", "cleaning"]
    colors = ["red", "blue", "green", "yellow", "white", "purple"]

    return (
        f"Today's fortune for {name}\n"
        f"Fortune: {rng.choice(levels)}\n"
        f"Lucky activity: {rng.choice(items)}\n"
        f"Lucky color: {rng.choice(colors)}\n"
        f"Lucky number: {rng.randint(1, 49)}"
    )

if __name__ == "__main__":
    mcp.run()

这里有三个关键点:

FastMCP("uranai") 创建了服务器实例。

给函数加上 @mcp.tool 就足以让它变成 Claude 可以调用的东西。

docstring("""...""" 部分)是 AI 用来决定何时使用该工具的依据——要把写清楚。

值得注意的一个技巧是用今天的日期作为随机数生成器的种子。这样就可以免费获得算命应用的行为:同一个人在同一天再次询问会得到相同的结果,而第二天则会得到不同的结果。

从项目目录运行:

python server.py

如果启动没有报错,就可以连接到 Claude Code 了。

连接到 Claude Code

如果你还没有安装 Claude Code CLI,先安装——请参阅你平台(macOS、Linux 或 Windows)的官方安装文档。

然后注册服务器:

claude mcp add uranai -- python /path/to/server.py

将 /path/to/server.py 替换为实际路径(如果你使用的是虚拟环境,最好指向该虚拟环境的 Python 可执行文件以确保安全)。

重启或重新加载 Claude Code,uranai 服务器应该会被识别。你可以用 /mcp 命令检查连接状态。

如果你使用的是 Claude 桌面应用,将以下内容添加到配置文件中:

macOS:~/Library/Application Support/Claude/claude_desktop_config.json

Windows:%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "uranai": {
      "command": "/path/to/venv/bin/python",
      "args": ["/path/to/uranai/server.py"]
    }
  }
}

(在 Windows 上,command 的路径类似于 C:\\Users\\yourname\\uranai\\venv\\Scripts\\python.exe。)

打开 Claude Code,让它给你算一卦,并在出现提示时批准工具调用。你应该会得到由你自己的工具生成的运势结果。

进一步探索的方向

基础功能跑通之后,添加更多工具只需要再写一个函数并用 @mcp.tool 装饰即可:

塔罗牌/御神签模式:扩充结果和消息池以增加多样性。

基于星座的运势:把生日解析为星座,然后相应地定制结果。

外部 API 集成:接入天气或日历数据,添加一些现实世界的风味。

结果持久化:将运势历史记录到文件或数据库。

如果需求变得更重——图像生成、大规模分析——你不必非得在笔记本上运行。可以把计算负载卸载到 GPU 云实例上,然后从那里暴露 MCP 服务器。

使用 FastMCP,构建 MCP 服务器的核心就是"写一个 Python 函数,加上 @mcp.tool"。我们这里完整走了一遍整个流程——环境配置、写工具、连接到 Claude Code、确认可用——以算命工具为例。

同样的模式可以扩展到更有用的场景:包装内部工具、自动化重复任务,等等。算命只是一个入门示例——下次试试换成你自己的点子吧。

📌 本文反映了截至 2026 年 6 月的 Claude Code 行为。由于 Claude Code 更新频繁,请查看官方文档了解最新详情。

本文由 AI 辅助编辑。*最初发表于 EdgeHUB 日文版。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
ai-prompt-firewall:拦截敏感信息外泄的 Node.js 库
下一篇
Ling 3.0 Flash 同尺寸最聪明开源模型