In this article
MCP-Server mit Anthropic Inspector debuggen
MCP-Server zu erstellen, ist inzwischen weit verbreitet. Entwickler begrüßen die Ära der LLMs mit Begeisterung, indem sie sich Anthropic’s MCP-Revolution anschließen und aktiv MCP-Server entwickeln. MCP-Server lassen sich mit weniger als zwanzig Codezeilen schnell zum Laufen bringen. Doch wie debuggen Sie sie, wenn sie sich unerwartet verhalten?
Erste Schritte mit einem einfachen MCP-Server in Node.js
Zum Debuggen eines MCP-Servers beginnen wir mit einer einfachen Implementierung eines MCP-Servers in Node.js. Dieser MCP-Server stellt ein Tool bereit, mit dem Implementierungen von MCP-Clients wie Cursor, Qodo, Claude Desktop und andere Informationen zu Open-Source-Paketen von Drittanbietern abrufen können.
Der vollständige Code des MCP-Servers ist im GitHub-Repository snyk-labs/mcp-server-npm verfügbar. Hier sehen Sie den gesamten Code:
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { execSync } from "child_process";
const server = new McpServer({
name: "npm JavaScript package management tools",
version: "1.0.0",
description: "Provides tools to get information about open source npm packages from the npmjs registry"
});
server.tool(
"getNpmPackageInfo",
"Get information about an npm package",
{
packageName: z.string()
},
async ({ packageName }) => {
const output = execSync(`npm view ${packageName}`, {
encoding: "utf-8",
});
return {
content: [
{
type: "text",
text: output
},
],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);Wie Sie am obigen Code des MCP-Servers sehen, setzt er voraus, dass das Befehlszeilenprogramm des npm-Paketmanagers verfügbar ist. Anschließend startet er einen Systemprozess mit dem Befehlszeilenargument view, um Informationen aus der offiziellen npm-Registry abzurufen.
Die obige Implementierung eines MCP-Servers ist absichtlich anfällig für Command-Injection. So lernen Entwickler die Sicherheitsrisiken kennen, die von bösartigen und unsicheren MCP-Servern ausgehen.
Anthropic’s MCP Inspector
Anthropic stellt eine Debugging-Benutzeroberfläche namens MCP Inspector im offiziellen Namespace des Pakets @modelcontextprotocol bereit: @modelcontextprotocol/inspector.
Für einmaliges Debugging können Sie das Tool mit npx ausführen, zum Beispiel so: npx @modelcontextprotocol/inspector <mcp-server-command>. Ersetzen Sie dabei <mcp-server-command> durch den Befehl samt Argument für den MCP-Server.
Für den schnellen Zugriff auf das MCP-Inspector-Tool empfehle ich folgenden Eintrag in der Node.js-Datei package.json:
{
"scripts": {
"debug": "npx -y @modelcontextprotocol/inspector node index.js"
}
}Wenn Sie npm run debug zum ersten Mal ausführen und das Argument -y nicht an npx übergeben, werden Sie aufgefordert, das Tool zu installieren. Die Ausgabe sieht dann so aus:
♥ 18:22 npm run debug
> mcp-server-npm@1.0.0 debug
> npx @modelcontextprotocol/inspector node index.js
Need to install the following packages:
@modelcontextprotocol/inspector@0.11.0
Ok to proceed? (y)Sobald die Installation abgeschlossen und das Tool bereit ist, sehen Sie die folgende Konsolenausgabe:
Starting MCP inspector...
⚙️ Proxy server listening on port 6277
🔍 MCP Inspector is up and running at http://127.0.0.1:6274 🚀Dann können Sie http://127.0.0.1:6274 in Ihrem Browser öffnen ;-)

Da unser Node.js-MCP-Server über den Prozess-STDIO bereitgestellt wird, belassen wir den Transporttyp unverändert und klicken auf die Schaltfläche Connect.
Sobald Sie eine Verbindung zum MCP-Server herstellen, erscheint im Hauptinhaltsbereich ein neuer horizontaler Tab mit allen verfügbaren Ressourcen des MCP-Servers. In unserem Fall stellt der MCP-Server nur Tools bereit (ein Tool zum Abrufen von Informationen zu einem npm-Paket aus der npm-Registry). Wenn Sie auf List Tools klicken, wird eine Liste aller verfügbaren Tools angezeigt:

Nun können wir über diese MCP-Inspector-Weboberfläche direkt mit dem MCP-Server interagieren. Klicken Sie einfach auf eines der aufgeführten Tools – in unserem Fall getNpmPackageInfo –, um es im rechten Bereich zusammen mit den Parametern anzuzeigen, die Sie dafür angeben können.
Hier sehen Sie einen Screenshot der Ausführung mit dem Paket snyk als Parameter.

Der MCP Inspector gibt außerdem Informationen zu Interaktionen mit MCP-Servern in der Konsole aus. Hier sehen Sie zum Vergleich die Debug-Ausgabe, die beim Aufzeichnen der obigen Tool-Aufrufe ausgegeben wurde:
New connection
Query parameters: [Object: null prototype] {
command: 'node',
args: 'index.js',
env: '{"HOME":"/Users/lirantal","LOGNAME":"lirantal","PATH":"/Users/lirantal/.npm/,"SHELL":"/bin/zsh","TERM":"xterm-256color","USER":"lirantal"}',
transportType: 'stdio'
}
Stdio transport: command=/Users/lirantal/.local/state/fnm_multishells/34121_1745832579143/bin/node, args=index.js
Spawned stdio transport
Connected MCP client to backing server transport
Created web app transport
Set up MCP proxy
Received message for sessionId 83514436-7b4b-492f-8026-957684f3b736
Received message for sessionId 83514436-7b4b-492f-8026-957684f3b736
Received message for sessionId 83514436-7b4b-492f-8026-957684f3b736Mehr zum Debuggen von MCP-Servern
Beim Debuggen von MCP-Servern werden häufig auch Debug-Ausgaben mit console.log() in JavaScript auf dem Bildschirm ausgegeben. Bei prozessbasierten MCP-Servern mit STDIO funktioniert das jedoch nicht wie erwartet. Vorerst empfehle ich Ihnen einen einfachen Workaround: Schreiben Sie Debug-Protokolle in eine Protokolldatei.
Erhöhen Sie die Sicherheit Ihrer Apps mit SAST
Effiziente und umsetzbare statische Anwendungssicherheitstests – neu gedacht für Entwickler.