FastMCP - TypeScript MCP Server-Framework
Projektübersicht
FastMCP ist ein TypeScript-Framework, das speziell für die Entwicklung von Model Context Protocol (MCP) Servern entwickelt wurde. Es bietet ein umfassendes Set an Tools und Funktionen, das es Entwicklern ermöglicht, schnell leistungsstarke MCP-Server zu erstellen, die Client-Sitzungen verarbeiten können.
Projektadresse: https://github.com/punkpeye/fastmcp
Kernfunktionen
Basisfunktionen
- Einfache Definition von Tools, Ressourcen und Prompts: Bietet eine intuitive API zur Definition von Serverfunktionen
- Authentifizierungsunterstützung: Integrierte Authentifizierungsmechanismen gewährleisten sicheren Zugriff
- Sitzungsverwaltung: Unterstützung für Client-Sitzungsbehandlung und Zustandsverwaltung
- Unterstützung für Multimedia-Inhalte: Unterstützung für die Rückgabe von Bild- und Audioinhalten
- Protokollierung: Vollständiges Protokollierungssystem für Debugging und Überwachung
- Fehlerbehandlung: Einheitlicher Fehlerbehandlungsmechanismus
- Server-Sent Events (SSE): Unterstützung für Echtzeit-Daten-Push
- CORS-Unterstützung: Standardmäßig aktivierte Cross-Origin Resource Sharing
Erweiterte Funktionen
- Fortschrittsbenachrichtigungen: Echtzeit-Fortschrittsrückmeldung während der Tool-Ausführung
- Typisierte Server-Ereignisse: TypeScript-typsicheres Ereignissystem
- Automatische Vervollständigung von Prompt-Parametern: Intelligente Parametervervollständigung
- Sampling-Anfragen: Unterstützung für Sampling-Anfragen an KI-Modelle
- Automatisierte SSE-Heartbeats: Aufrechterhaltung der Verbindungsstabilität
- Stammverzeichnisverwaltung: Konfiguration des Dateisystem-Stammverzeichnisses
- CLI-Tool: Bietet Befehlszeilentools für Tests und Debugging
Installation und Verwendung
Installation
npm install fastmcp
Basisbeispiel
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",
});
Hauptfunktionsmodule
1. Tool-Definition (Tools)
Tools ermöglichen es dem Server, ausführbare Funktionen für Clients freizugeben, die von Clients aufgerufen und von LLMs zur Ausführung von Operationen verwendet werden können.
Unterstützte Schema-Validierungsbibliotheken
- Zod: Die beliebteste TypeScript-Schema-Validierungsbibliothek
- ArkType: Moderne Typvalidierungsbibliothek
- Valibot: Leichtgewichtige Schema-Validierungsbibliothek
Zod-Beispiel
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);
},
});
Tool-Annotationen
Tools können Annotationen enthalten, die reichhaltigere Kontext- und Kontrollinformationen liefern:
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);
},
});
2. Ressourcenverwaltung (Resources)
Ressourcen repräsentieren jede Art von Daten, die der MCP-Server dem Client zur Verfügung stellen möchte, einschließlich:
- Dateiinhalte
- Screenshots und Bilder
- Protokolldateien
- Andere Daten
server.addResource({
uri: "file:///logs/app.log",
name: "Application Logs",
mimeType: "text/plain",
async load() {
return {
text: await readLogFile(),
};
},
});
Ressourcentemplates
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}`,
};
},
});
3. Prompt-Verwaltung (Prompts)
Prompts ermöglichen es dem Server, wiederverwendbare Prompt-Templates und Workflows zu definieren:
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}`;
},
});
4. Authentifizierung
FastMCP unterstützt benutzerdefinierte Authentifizierungsfunktionen:
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,
};
},
});
5. Server-Sent Events (SSE)
Unterstützung für die SSE-Funktion zur Echtzeitkommunikation:
server.start({
transportType: "sse",
sse: {
endpoint: "/sse",
port: 8080,
},
});
6. Sitzungsverwaltung
FastMCP weist jeder Client-Verbindung eine neue Serverinstanz zu, um eine 1:1-Kommunikation zu ermöglichen:
server.on("connect", (event) => {
console.log("Client connected:", event.session);
});
server.on("disconnect", (event) => {
console.log("Client disconnected:", event.session);
});
Entwicklungswerkzeuge
Testen und Debuggen
npx fastmcp dev src/examples/addition.ts
npx fastmcp inspect src/examples/addition.ts
Claude Desktop Integration
Fügen Sie die Konfiguration in Claude Desktop hinzu:
{
"mcpServers": {
"my-mcp-server": {
"command": "npx",
"args": ["tsx", "/PATH/TO/YOUR_PROJECT/src/index.ts"],
"env": {
"YOUR_ENV_VAR": "value"
}
}
}
}
Anwendungsfälle in der Praxis
FastMCP wurde in mehreren Projekten eingesetzt, darunter:
- apinetwork/piapi-mcp-server: Verwendung von Midjourney/Flux/Kling zur Generierung von Medieninhalten
- domdomegg/computer-use-mcp: Computersteuerungswerkzeuge
- Meeting-Baas/meeting-mcp: Meeting-Roboter und Transkriptionsverwaltung
- drumnation/unsplash-smart-mcp-server: Unsplash-Bildersuche-Integration
- aiamblichus/mcp-chat-adapter: LLM-Chat-Vervollständigungs-Schnittstelle
Technische Vorteile
- Typsicherheit: Vollständige TypeScript-Unterstützung gewährleistet Codequalität
- Flexible Schemas: Unterstützung für verschiedene Validierungsbibliotheken, um unterschiedliche Anforderungen zu erfüllen
- Moderne Architektur: Basierend auf den neuesten Webstandards und Best Practices
- Umfangreiche Funktionen: Umfassende Unterstützung von Basisfunktionen bis hin zu erweiterten Funktionen
- Leicht erweiterbar: Modularer Aufbau erleichtert die Funktionserweiterung
- Entwicklerfreundlich: Umfassende CLI-Tools und Debugging-Unterstützung
Zusammenfassung
FastMCP ist ein leistungsstarkes und einfach zu bedienendes TypeScript-Framework, das eine vollständige Lösung für die Entwicklung von MCP-Servern bietet. Ob einfache Tool-Integration oder komplexer KI-Serviceaufbau, FastMCP bietet die erforderlichen Funktionen und Flexibilität. Sein reichhaltiger Funktionsumfang und die gute Entwicklererfahrung machen es zu einem wichtigen Werkzeug im MCP-Ökosystem.