Fastmcp

Fastmcp

FastMCP 是一个基于 TypeScript 的框架,用于构建支持客户端会话的 MCP 服务器。它提供工具定义、资源管理、提示模板、SSE 支持、认证机制等功能,并集成 CLI 工具用于测试和调试,适用于 AI 助手的开发与集成。

148 浏览
2025-12-13 发布

详细介绍

FastMCP 是一个基于 TypeScript 的框架,专为构建符合 Model Context Protocol (MCP) 规范的服务器而设计。它简化了与 AI 助手的集成,提供工具定义、资源管理、提示模板、SSE 支持、认证机制等功能,并集成 CLI 工具用于测试和调试。开发者可以快速构建自定义 MCP 服务,适用于自动化工作流、数据查询服务、内容生成工具等场景。

核心功能

FastMCP 提供了多种核心功能,帮助开发者快速构建和管理 MCP 服务:

  • 工具定义:允许开发者定义可执行函数,供客户端和 AI 调用,支持多种参数验证库(如 Zod、ArkType、Valibot)。
  • 资源管理:支持管理各种数据资源(如文件、日志、图像等),并通过唯一 URI 访问。
  • 提示模板:创建可重用的提示模板和工作流,标准化与 LLM 的交互。
  • SSE 支持:通过 Server-Sent Events 实现实时通信,适用于需要流式输出的场景。
  • 认证机制:支持自定义客户端认证逻辑,保护服务安全。
  • 进度追踪:实时报告任务执行进度,提升用户体验。

安装方法

要使用 FastMCP,首先需要通过 npm 安装:

npm install fastmcp --save

安装完成后,创建一个项目结构,包括 package.jsontsconfig.json 文件,并在 tsconfig.json 中启用 TypeScript 支持:

{
  "compilerOptions": {
    "target": "ES6",
    "module": "CommonJS"
  }
}

使用方法

FastMCP 提供了多种使用方式,包括创建服务器、添加工具、启动服务等。

基础用法

以下是一个简单的示例,展示如何创建一个基本的 MCP 服务器:

import { createServer } from 'fastmcp';

const server = createServer();

// 处理根路径请求
server.get('/', (req, res) => {
  res.send('Welcome to FastMCP Server!');
});

// 启动服务器
server.start(3000);

添加工具

开发者可以定义可执行的功能工具,例如一个加法工具:

server.addTool({
  name: 'add',
  description: 'Add two numbers',
  parameters: z.object({ a: z.number(), b: z.number() }),
  execute: async (args) => {
    return String(args.a + args.b);
  }
});

中间件示例

FastMCP 支持中间件系统,可以用于日志记录、错误处理等:

import { createServer, Middleware } from 'fastmcp';

const server = createServer();

// 创建一个简单的中间件
const loggerMiddleware: Middleware = (req, res, next) => {
  console.log('请求开始:', req.url);
  next();
};

// 将中间件应用到所有请求
server.use(loggerMiddleware);

server.get('/', (req, res) => {
  res.send('Hello World!');
});

server.start(3000);

CLI 工具

FastMCP 提供了 CLI 工具,用于测试和调试服务器:

npx fastmcp dev src/examples/addition.ts
npx fastmcp inspect src/examples/addition.ts

使用场景

FastMCP 适用于多种需要与 AI 助手深度集成的场景,包括:

  • 自动化工作流
  • 数据查询服务
  • 内容生成工具
  • 系统管理助手

使用示例

以下是几个 FastMCP 的使用示例,展示其在不同场景下的应用:

数学计算服务

server.addTool({
  name: 'add',
  description: 'Add two numbers',
  parameters: z.object({ a: z.number(), b: z.number() }),
  execute: async (args) => {
    return String(args.a + args.b);
  }
});

客户端请求示例:请计算 23 加 45 等于多少。预期结果:返回计算结果 68。

文件内容查询

server.addTool({
  name: 'readFile',
  description: 'Read file content',
  parameters: z.object({ path: z.string() }),
  execute: async (args) => {
    const c fs.readFileSync(args.path, 'utf-8');
    return content;
  }
});

客户端请求示例:请读取 /logs/app.log 文件内容。预期结果:返回日志文件内容。

图片处理服务

server.addTool({
  name: 'getImage',
  description: 'Return image content',
  parameters: z.object({ path: z.string() }),
  execute: async (args) => {
    const image = await fs.readFileSync(args.path);
    return image;
  }
});

客户端请求示例:显示 example.png 图片。预期结果:返回图片数据供客户端显示。

注意事项

在使用 FastMCP 时,需要注意以下几点:

  • 目前主要支持 TypeScript/JavaScript 生态。
  • SSE 功能需要额外配置。
  • 对于非 Node.js 开发者,学习曲线可能较陡。

FastMCP 通过直观的 API 和中间件系统,帮助开发者快速构建和管理 MCP 服务,适用于多种 AI 助手集成场景。

mcp ai-server typescript tool-definition sse

相关服务推荐

查看更多