Wie ich einen MCP-Server mit Claude Desktop mit Typescript verbunden habe

In diesem Leitfaden: TypeScript MCP Server erstellen & mit Claude Desktop verbinden.

Leo Schulz

Leo Schulz

5 June 2025

Wie ich einen MCP-Server mit Claude Desktop mit Typescript verbunden habe

Das Model Context Protocol (MCP) stellt einen bedeutenden Fortschritt in der Art und Weise dar, wie KI-Assistenten mit externen Tools und Datenquellen interagieren. Entwickelt von Anthropic, ermöglicht MCP Claude die nahtlose Kommunikation mit benutzerdefinierten Servern, wodurch er in der Lage ist, auf Echtzeitinformationen zuzugreifen, komplexe Workflows auszuführen und mit APIs zu interagieren, ohne den Konversationskontext zu verlassen. Diese Fähigkeit verwandelt Claude von einem eigenständigen LLM in einen vielseitigen Assistenten, der externe Funktionalität nutzen kann und gleichzeitig die Kohärenz der Konversation beibehält.

In diesem umfassenden Leitfaden führen wir Sie durch den Prozess des Erstellens eines TypeScript MCP-Servers von Grund auf und dessen Verbindung mit Claude Desktop. Durch die Implementierung dieser Integration ermöglichen Sie Claude, Aufgaben wie das Abrufen von Echtzeitdaten, das Ausführen von Berechnungen oder die Interaktion mit Ihrer benutzerdefinierten Geschäftslogik direkt innerhalb von Konversationen auszuführen.

Bevor wir uns mit der Implementierung unseres MCP-Servers befassen, ist es erwähnenswert, dass Ihre Wahl des API-Entwicklungstools Ihre Workflow-Effizienz erheblich beeinflussen kann.

Wenn wir unseren TypeScript MCP-Server erstellen, sollten Sie berücksichtigen, wie die kollaborativen Funktionen und der entwicklungsorientierte Ansatz von Apidog die Produktivität Ihres Teams steigern und sicherstellen können, dass Ihre APIs während des gesamten Prozesses konsistent, gut getestet und gründlich dokumentiert bleiben.

button

Das Model Context Protocol verstehen

Das Model Context Protocol definiert eine standardisierte Methode für Claude zur Kommunikation mit externen Diensten. Wenn Claude feststellt, dass er Informationen von einer externen Quelle benötigt, kann er einen MCP-Server über eine speziell formatierte JSON-Anfrage aufrufen. Der Server verarbeitet diese Anfrage und gibt die angeforderten Daten zurück, die Claude dann in seine Antwort einbeziehen kann.

MCP bietet gegenüber herkömmlichen KI-Integrationsansätzen mehrere Vorteile:

Voraussetzungen

Bevor wir mit dem Erstellen unseres MCP-Servers beginnen, stellen Sie sicher, dass Sie Folgendes haben:

Einrichten Ihres TypeScript-Projekts

Beginnen wir mit der Erstellung eines neuen TypeScript-Projekts für unseren MCP-Server:

mkdir claude-mcp-server
cd claude-mcp-server
npm init -y
npm install typescript @types/node ts-node express @types/express cors @types/cors
npx tsc --init

Aktualisieren Sie als Nächstes Ihre tsconfig.json, um diese Einstellungen einzuschließen:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "outDir": "./dist",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  }
}

Implementieren des MCP-Servers

Erstellen Sie eine neue Datei namens server.ts in Ihrem Projektstammverzeichnis. Dies ist der Einstiegspunkt für unseren MCP-Server:

import express from 'express';
import cors from 'cors';
import { Request, Response } from 'express';

// Define types for the MCP protocol
interface MCPRequest {
  query: string;
  conversation_id: string;
  request_id: string;
  parameters?: Record<string, any>;
}

interface MCPResponse {
  response: string;
  status: 'success' | 'error';
  error?: string;
}

const app = express();
app.use(cors());
app.use(express.json());

// Health check endpoint
app.get('/health', (req: Request, res: Response) => {
  res.status(200).json({ status: 'healthy' });
});

// MCP endpoint
app.post('/mcp', (req: Request, res: Response) => {
  try {
    const mcpRequest = req.body as MCPRequest;
    console.log('Received MCP request:', JSON.stringify(mcpRequest, null, 2));

    // Process the request based on the query
    const response = processQuery(mcpRequest);
    
    res.status(200).json({
      status: 'success',
      response
    } as MCPResponse);
  } catch (error) {
    console.error('Error processing MCP request:', error);
    res.status(500).json({
      status: 'error',
      error: error instanceof Error ? error.message : 'Unknown error',
      response: 'Sorry, there was an error processing your request.'
    } as MCPResponse);
  }
});

// Function to process different query types
function processQuery(request: MCPRequest): string {
  const { query, parameters } = request;

  // Example query handling - customize this for your use case
  switch (query) {
    case 'getCurrentTime':
      return `The current time is ${new Date().toLocaleTimeString()}`;
    
    case 'getWeather':
      const location = parameters?.location || 'Unknown';
      // In a real app, you would call a weather API here
      return `The weather in ${location} is currently sunny and 72°F`;
    
    case 'calculateSum':
      if (parameters?.numbers && Array.isArray(parameters.numbers)) {
        const sum = parameters.numbers.reduce((a: number, b: number) => a + b, 0);
        return `The sum of the numbers is ${sum}`;
      }
      return 'Invalid parameters for sum calculation';

    default:
      return `Unrecognized query: ${query}`;
  }
}

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`MCP server running on port ${PORT}`);
});

Ausführen Ihres MCP-Servers

Um Ihren Server auszuführen, führen Sie Folgendes aus:

npx ts-node server.ts

Ihr MCP-Server sollte jetzt auf Port 3000 (oder Ihrem angegebenen Port) ausgeführt werden.

Verbinden mit Claude Desktop

Nachdem Ihr MCP-Server ausgeführt wird, müssen Sie Claude Desktop so konfigurieren, dass er sich damit verbindet. So geht's:

  1. Öffnen Sie die Claude Desktop-Anwendung
  2. Gehen Sie zu Einstellungen (normalerweise in der oberen rechten Ecke)
  3. Navigieren Sie zum Abschnitt "Experimentelle Funktionen"
  4. Aktivieren Sie den Schalter "Model Context Protocol"
  5. Fügen Sie einen neuen MCP-Endpunkt mit der URL http://localhost:3000/mcp hinzu
  6. Speichern Sie Ihre Einstellungen

Claude Desktop kann jetzt mit Ihrem benutzerdefinierten MCP-Server kommunizieren.

Testen der Integration

Um Ihren MCP-Server mit Claude zu testen, versuchen Sie, Claude Fragen zu stellen, die die von Ihnen implementierten spezifischen Abfragen auslösen würden. Zum Beispiel:

Wenn Claude erkennt, dass er externe Informationen benötigt, um diese Fragen zu beantworten, sendet er automatisch eine MCP-Anfrage an Ihren Server und bezieht die Antwort in seine Antwort ein.

Erweitern Ihres MCP-Servers

Der von uns erstellte Basisserver ist nur ein Ausgangspunkt. Hier sind einige Ideen zur Erweiterung seiner Funktionalität:

Authentifizierung hinzufügen

Um Ihren MCP-Server zu sichern, fügen Sie eine Authentifizierung hinzu:

// Middleware for basic auth
const authenticateMCP = (req: Request, res: Response, next: Function) => {
  const apiKey = req.headers['x-api-key'];
  if (!apiKey || apiKey !== process.env.MCP_API_KEY) {
    return res.status(401).json({
      status: 'error',
      error: 'Unauthorized',
      response: 'Authentication failed'
    });
  }
  next();
};

// Apply middleware to MCP endpoint
app.post('/mcp', authenticateMCP, (req: Request, res: Response) => {
  // Existing handler code
});

Datenbankintegration implementieren

Verbinden Sie Ihren MCP-Server mit einer Datenbank, um Informationen abzurufen oder zu speichern:

import { MongoClient } from 'mongodb';

// Initialize database connection
const dbClient = new MongoClient('mongodb://localhost:27017');
let db: any;

async function connectToDb() {
  await dbClient.connect();
  db = dbClient.db('mcpDatabase');
  console.log('Connected to database');
}

connectToDb().catch(console.error);

// Add a query handler for database interactions
case 'getUserData':
  if (parameters?.userId) {
    const user = await db.collection('users').findOne({ id: parameters.userId });
    return user ? JSON.stringify(user) : 'User not found';
  }
  return 'Invalid user ID';

Webhook-Unterstützung hinzufügen

Implementieren Sie die Webhook-Funktionalität, um externe Dienste zu benachrichtigen:

case 'sendNotification':
  if (parameters?.message && parameters?.destination) {
    // Call external notification service
    await fetch('https://your-webhook-url.com', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ message: parameters.message })
    });
    return `Notification sent to ${parameters.destination}`;
  }
  return 'Invalid notification parameters';

Best Practices für die MCP-Serverentwicklung

  1. Fehler ordnungsgemäß behandeln: Fangen Sie immer Ausnahmen ab und geben Sie informative Fehlermeldungen zurück
  2. Protokollierung implementieren: Protokollieren Sie alle Anfragen und Antworten zum Debuggen und zur Überprüfung
  3. TypeScript-Schnittstellen verwenden: Definieren Sie klare Schnittstellen für alle Datenstrukturen
  4. Timeouts festlegen: Implementieren Sie Anforderungs-Timeouts, um hängende Operationen zu verhindern
  5. Eingaben validieren: Validieren Sie alle Eingabeparameter sorgfältig, bevor Sie sie verarbeiten
  6. Unit-Tests hinzufügen: Testen Sie Ihre Abfragehandler gründlich, um die Zuverlässigkeit sicherzustellen

Fazit

Das Erstellen eines TypeScript MCP-Servers eröffnet aufregende Möglichkeiten zur Erweiterung der Fähigkeiten von Claude. Indem Sie diesem Leitfaden folgen, haben Sie eine Grundlage für die Integration von Claude mit Ihren eigenen Diensten und Daten geschaffen. Das Model Context Protocol ermöglicht eine nahtlose Benutzererfahrung, bei der Claude auf externe Informationen zugreifen kann, ohne den Konversationsfluss zu unterbrechen.

Da sich MCP weiterentwickelt, können wir noch ausgefeiltere Integrationen zwischen großen Sprachmodellen und externen Systemen erwarten. Unabhängig davon, ob Sie Produktivitätstools, Wissensmanagementsysteme oder benutzerdefinierte Geschäftsanwendungen erstellen, bietet MCP eine leistungsstarke Möglichkeit, die Intelligenz von Claude mit Ihrer spezialisierten Funktionalität zu kombinieren.

Beginnen Sie mit der Erkundung der Möglichkeiten, indem Sie Ihren Server mit zusätzlichen Abfragehandlern erweitern, die für Ihre Anwendungsfälle spezifisch sind, und teilen Sie Ihre Erfahrungen mit der wachsenden Community der MCP-Entwickler.

Explore more

So verwenden Sie Deepseek R1 lokal mit Cursor

So verwenden Sie Deepseek R1 lokal mit Cursor

Erfahre, wie du DeepSeek R1 lokal mit Cursor IDE einrichtest & konfigurierst – privates, kostengünstiges KI-Coding.

4 June 2025

Wie man Gemma 3n auf Android ausführt?

Wie man Gemma 3n auf Android ausführt?

Erfahre, wie du Gemma 3n auf Android installierst und ausführst, mit Google AI Edge Gallery.

3 June 2025

So verwenden Sie den Google Search Console MCP-Server

So verwenden Sie den Google Search Console MCP-Server

Google Search Console & Apidog: SEO-Analyse & KI-API-Entwicklung. Installation, Konfiguration & Nutzung für Web-Performance & API-Einblicke.

30 May 2025

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen