Home
Login

Ein TypeScript-Framework zum Aufbau von MCP-Servern

MITTypeScript 1.9kpunkpeye Last Updated: 2025-06-21

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

  1. Typsicherheit: Vollständige TypeScript-Unterstützung gewährleistet Codequalität
  2. Flexible Schemas: Unterstützung für verschiedene Validierungsbibliotheken, um unterschiedliche Anforderungen zu erfüllen
  3. Moderne Architektur: Basierend auf den neuesten Webstandards und Best Practices
  4. Umfangreiche Funktionen: Umfassende Unterstützung von Basisfunktionen bis hin zu erweiterten Funktionen
  5. Leicht erweiterbar: Modularer Aufbau erleichtert die Funktionserweiterung
  6. 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.