FastMCP est un framework TypeScript spécialement conçu pour la construction de serveurs Model Context Protocol (MCP). Il fournit un ensemble complet d'outils et de fonctionnalités permettant aux développeurs de créer rapidement des serveurs MCP performants capables de gérer les sessions client.
Adresse du projet: https://github.com/punkpeye/fastmcp
npm install fastmcp
import { FastMCP } from "fastmcp";
import { z } from "zod";
const server = new FastMCP({
name: "My Server",
version: "1.0.0",
});
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);
},
});
server.start({
transportType: "stdio",
});
Les outils permettent au serveur d'exposer aux clients des fonctions exécutables, qui peuvent être appelées par les clients et utilisées par les LLM pour effectuer des opérations.
import { z } from "zod";
server.addTool({
name: "fetch-zod",
description: "Fetch the content of a url (using Zod)",
parameters: z.object({
url: z.string(),
}),
execute: async (args) => {
return await fetchWebpageContent(args.url);
},
});
Les outils peuvent contenir des annotations, fournissant un contexte et des informations de contrôle plus riches :
server.addTool({
name: "fetch-content",
description: "Fetch content from a URL",
parameters: z.object({
url: z.string(),
}),
annotations: {
title: "Web Content Fetcher",
readOnlyHint: true,
openWorldHint: true,
},
execute: async (args) => {
return await fetchWebpageContent(args.url);
},
});
Les ressources représentent tout type de données que le serveur MCP souhaite fournir au client, notamment :
server.addResource({
uri: "file:///logs/app.log",
name: "Application Logs",
mimeType: "text/plain",
async load() {
return {
text: await readLogFile(),
};
},
});
server.addResourceTemplate({
uriTemplate: "file:///logs/{name}.log",
name: "Application Logs",
mimeType: "text/plain",
arguments: [
{
name: "name",
description: "Name of the log",
required: true,
},
],
async load({ name }) {
return {
text: `Example log content for ${name}`,
};
},
});
Les invites permettent au serveur de définir des modèles d'invite et des flux de travail réutilisables :
server.addPrompt({
name: "git-commit",
description: "Generate a Git commit message",
arguments: [
{
name: "changes",
description: "Git diff or description of changes",
required: true,
},
],
load: async (args) => {
return `Generate a concise but descriptive commit message for these changes:\n\n${args.changes}`;
},
});
FastMCP prend en charge les fonctionnalités d'authentification personnalisées :
import { AuthError } from "fastmcp";
const server = new FastMCP({
name: "My Server",
version: "1.0.0",
authenticate: ({ request }) => {
const apiKey = request.headers["x-api-key"];
if (apiKey !== "123") {
throw new Response(null, {
status: 401,
statusText: "Unauthorized",
});
}
return {
id: 1,
};
},
});
Prise en charge de la fonctionnalité SSE pour la communication en temps réel :
server.start({
transportType: "sse",
sse: {
endpoint: "/sse",
port: 8080,
},
});
FastMCP attribue une nouvelle instance de serveur à chaque connexion client, permettant une communication 1:1 :
server.on("connect", (event) => {
console.log("Client connected:", event.session);
});
server.on("disconnect", (event) => {
console.log("Client disconnected:", event.session);
});
npx fastmcp dev src/examples/addition.ts
npx fastmcp inspect src/examples/addition.ts
Ajouter la configuration dans Claude Desktop :
{
"mcpServers": {
"my-mcp-server": {
"command": "npx",
"args": ["tsx", "/PATH/TO/YOUR_PROJECT/src/index.ts"],
"env": {
"YOUR_ENV_VAR": "value"
}
}
}
}
FastMCP a été adopté par plusieurs projets, notamment :
FastMCP est un framework TypeScript puissant et facile à utiliser qui fournit une solution complète pour la construction de serveurs MCP. Qu'il s'agisse d'une simple intégration d'outils ou de la construction de services d'IA complexes, FastMCP peut fournir les fonctionnalités et la flexibilité nécessaires. Son riche ensemble de fonctionnalités et sa bonne expérience de développement en font un outil important dans l'écosystème MCP.