Model Context Protocol (MCP)-Server
Eine einfache Serverimplementierung für das Model Context Protocol, die eine einheitliche API für mehrere KI-Modellanbieter bereitstellt.
Merkmale
Einheitliche API für mehrere KI-Anbieter (Anthropic, OpenAI)
Unterstützung für Chat-Vervollständigungen und Legacy-Vervollständigungen
Unterstützung für Tool-Aufrufe
Kontext-/Systemnachrichtenverarbeitung
Umgebungsbasierte Konfiguration
MongoDB-Datenbank für Persistenz und Statusverwaltung
Tool-Ausführungsverlauf und -Analyse
Related MCP server: Model Control Plane (MCP) Server
Installation
# Clone the repository
git clone <repository-url>
cd testmcp
# Install dependencies
npm install
# Run the interactive setup
npm run setupDas Setup-Skript führt Sie durch die Konfiguration der erforderlichen API-Schlüssel:
ANTHROPIC_API_KEY– Für Claude-ModelleOPENAI_API_KEY– Für GPT-Modelle und DALL-E-BildgenerierungSTABILITY_API_KEY- Für die Erzeugung stabiler DiffusionsbilderGOOGLE_CSE_API_KEYundGOOGLE_CSE_ID– Für die WebsuchfunktionBING_SEARCH_API_KEY– Für die Fallback-Websuche
Sie können die .env Datei auch manuell bearbeiten, wenn Sie möchten.
MongoDB-Setup
Der MCP-Server verwendet MongoDB zur Datenpersistenz. Sie haben mehrere Möglichkeiten, MongoDB einzurichten:
Option 1: Automatisierte Einrichtung (empfohlen)
Führen Sie das MongoDB-Setup-Skript aus, das Sie durch den Vorgang führt:
# Run the MongoDB setup script
npm run setup-mongodbDieses Skript wird:
Überprüfen Sie, ob Docker verfügbar ist
Starten Sie MongoDB mit Docker Compose (falls verfügbar).
Konfigurieren Sie die Verbindung in Ihrer .env-Datei
Überprüfen der MongoDB-Verbindung
Option 2: Manuelles Docker-Setup
Der einfachste Weg, mit MongoDB zu beginnen, ist die Verwendung der enthaltenen Docker Compose-Konfiguration:
# Start MongoDB and Mongo Express in Docker
docker compose up -d
# Update your .env file with the connection string
echo "MONGODB_URI=mongodb://mcpuser:mcppassword@localhost:27017/mcp-server" >> .envMongoDB wird unter mongodb://mcpuser:mcppassword@localhost:27017/mcp-server verfügbar sein.
Mongo Express (Webadministrator) ist unter http://localhost:8081 verfügbar.
Option 3: Lokale MongoDB-Installation
Wenn Sie MongoDB lieber lokal installieren möchten:
Installieren Sie MongoDB von https://www.mongodb.com/try/download/community
Starten Sie den MongoDB-Dienst
Aktualisieren Sie Ihre
.envDatei mit:MONGODB_URI=mongodb://localhost:27017/mcp-server
Option 4: MongoDB Atlas (Cloud)
Für den Produktionseinsatz wird MongoDB Atlas empfohlen:
Erstellen Sie ein Konto unter https://www.mongodb.com/cloud/atlas
Erstellen eines neuen Clusters
Richten Sie einen Datenbankbenutzer ein und setzen Sie Ihre IP-Adresse auf die Whitelist
Rufen Sie Ihre Verbindungszeichenfolge ab und aktualisieren Sie Ihre
.envDatei:MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/mcp-server?retryWrites=true&w=majority
Datenbankmigration
So migrieren Sie vorhandene Daten zu MongoDB:
# Run the migration script
npm run migrate-mongodbDieses Skript wird:
Migrieren von Tooldefinitionen zu MongoDB
Migrieren Sie Konfigurationen (wie API-Schlüssel) zu MongoDB
Importieren Sie alle Sicherungsdaten, falls verfügbar
Verwendung
Starten Sie den Server
# Interactive startup (checks for API keys)
npm start
# Development mode with auto-reload
npm run dev
# Quick start (skips environment checks)
npm run quick-start
# Start server with PM2 process manager
npm run pm2:start
# Start server with PM2 in production mode
npm run pm2:start:prodDer Server wird unter http://localhost:3000 (oder dem Port, den Sie in .env angegeben haben) ausgeführt.
Startoptionen
Standardstart (
npm start):Überprüft, ob API-Schlüssel konfiguriert sind
Fordert zur Einrichtung auf, wenn keine Schlüssel gefunden werden
Empfohlen für Erstbenutzer
Entwicklungsmodus (
npm run dev):Verwendet Nodemon zum automatischen Neuladen bei Codeänderungen
Führt weiterhin Umgebungsprüfungen durch
Am besten für die Entwicklung
Schnellstart (
npm run quick-start):Umgeht alle Umgebungsprüfungen
Startet den Server sofort
Nützlich, wenn Sie wissen, dass Ihre Konfiguration korrekt ist
PM2-Produktionsmodus (
npm run pm2:start:prod):Führt den Server mit dem PM2-Prozessmanager aus
Automatischer Neustart bei Serverabsturz
Optimiert für Produktionsumgebungen
Umgeht Umgebungsprüfungen
Verwenden des PM2 Process Managers
Der Server kann mit PM2, einem Produktionsprozessmanager für Node.js-Anwendungen, betrieben werden. PM2 bietet Funktionen wie:
Prozessmanagement (Neustart bei Absturz)
Protokollverwaltung
Leistungsüberwachung
Lastenausgleich (für mehrere Instanzen)
PM2-Befehle
# Start the server with PM2
npm run pm2:start
# Start in production mode
npm run pm2:start:prod
# View logs
npm run pm2:logs
# Monitor performance
npm run pm2:monit
# Restart the server
npm run pm2:restart
# Stop the server
npm run pm2:stop
# Remove the server from PM2
npm run pm2:deleteDie PM2-Konfiguration ist in ecosystem.config.js gespeichert. Sie können diese Datei bearbeiten, um Folgendes zu ändern:
Prozessname
Umgebungsvariablen
Speichergrenzen
Bereitstellungskonfiguration
Anzahl der Instanzen (für Lastenausgleich)
API-Endpunkte
POST /mcp/:provider
Stellen Sie Anfragen an KI-Modelle über eine einheitliche API.
URL-Parameter:
provider: Der zu verwendende KI-Anbieter (anthropicoderopenai)
Anforderungstext:
{
"messages": [
{ "role": "user", "content": "Your prompt here" }
],
"model": "claude-3-opus-20240229", // Optional, provider-specific model name
"tools": [...], // Optional, tools for function calling
"context": "System message or context" // Optional
}ODER (Legacy-Format):
{
"prompt": "Your prompt here",
"model": "claude-3-opus-20240229", // Optional
"context": "System message or context" // Optional
}Antwort: Gibt die Rohantwort von der API des Anbieters zurück.
GET /tools/available
Erhalten Sie eine umfassende Liste aller verfügbaren Tools mit detaillierten Informationen.
Abfrageparameter:
format– Antwortformat:json(Standard),yaml,tableoderhtmlcategory– Werkzeuge nach Kategorie filtern (optional)enabled– Filtern nach aktiviertem Status:true(Standard) oderfalsesearch– Suche nach Werkzeugen nach Name, Beschreibung oder Tagsprovider– Tools nach Anbieter filtern (z. B.openai,google)limit– Maximale Anzahl der zurückzugebenden Tools (für die Seitennummerierung)offset– Offset für die Seitennummerierung (Standard: 0)
Antwort (JSON-Format):
{
"success": true,
"count": 10,
"metadata": {
"categories": ["web", "image", "utility"],
"providers": ["openai", "anthropic", "internal"],
"totalCount": 24,
"offset": 0,
"limit": 10
},
"tools": [
{
"name": "web_search",
"description": "Search the web for information",
"category": "web",
"version": "1.0.0",
"provider": "google",
"enabled": true,
"parameters": {
"query": {
"type": "string",
"description": "The search query",
"required": true
},
"limit": {
"type": "number",
"description": "Maximum number of results",
"required": false,
"default": 5
}
},
"usage": {
"endpoint": "/tools/web/search",
"method": "POST",
"parameters": { /* same as above */ }
},
"metadata": {
"createdAt": "2023-10-15T12:00:00Z",
"updatedAt": "2024-04-20T09:30:00Z",
"usageCount": 1245
}
}
// ... more tools
]
}GET /health
Integritätsprüfungsendpunkt, der den Status 200 zurückgibt, wenn der Server läuft.
Datenmanagement
Datenbanksicherungen
Sie können Datenbanksicherungen erstellen und verwalten:
# Create a full backup
npm run backup-mongodb
# Create a backup with execution history
npm run backup-mongodb -- --with-executions
# List existing backups
npm run backup-mongodb -- --listTesten der Datenbankverbindung
So überprüfen Sie Ihr MongoDB-Setup:
# Run the database test script
npm run test-mongodbBeispielkunden
Befehlszeilenclient
Ein Testclient ist in src/client.js enthalten. So führen Sie ihn aus:
node src/client.jsWebclient
Bei laufendem Server steht unter http://localhost:3000 eine einfache Weboberfläche zur Verfügung. Damit können Sie die API direkt im Browser testen.
Verfügbare Tools
Der MCP-Server bietet einen Endpunkt zur Tool-Erkennung, der es Benutzern und KI-Agenten ermöglicht, alle verfügbaren Tools programmgesteuert aufzulisten:
Tools-Erkennung
GET /tools/available – Listet alle verfügbaren Tools mit detaillierten Informationen auf.
Unterstützt mehrere Formate: JSON, YAML, HTML und ASCII-Tabellen
Bietet Filterung nach Kategorie, Anbieter und Suchbegriffen
Enthält detaillierte Metadaten und Anwendungsbeispiele für jedes Tool
Anwendungsbeispiel:
# Get all tools in JSON format
curl http://localhost:3000/tools/available
# Get tools in a specific category
curl http://localhost:3000/tools/available?category=web
# Search for image-related tools
curl http://localhost:3000/tools/available?search=image
# Get a formatted HTML page of all tools
curl http://localhost:3000/tools/available?format=html > tools.htmlWebsuchtools
Der Server enthält integrierte Websuch- und -abruftools:
Websuche (
/tools/web/search)Durchsuchen Sie das Web nach Informationen zu einer bestimmten Abfrage
Parameter:
query(erforderlich),limit(optional)Erfordert:
GOOGLE_CSE_API_KEYundGOOGLE_CSE_IDUmgebungsvariablenFällt auf
BING_SEARCH_API_KEYzurück, wenn die Google-Suche fehlschlägt
Webinhalt (
/tools/web/content)Abrufen und Extrahieren von Inhalten von einer bestimmten URL
Parameter:
url(erforderlich),useCache(optional)
Web-Batch (
/tools/web/batch)Inhalte von mehreren URLs parallel abrufen
Parameter:
urls(erforderliches Array),useCache(optional)
Werkzeuge zur Bildgenerierung
Der Server enthält außerdem Tools zur Bildgenerierung, -bearbeitung und -variation:
Bild generieren (
/tools/image/generate)Generieren Sie ein Bild basierend auf einer Textaufforderung
Parameter:
prompt(erforderlich): Detaillierte Beschreibung des Bildesprovider(optional):openaioderstability(Standard istopenai)options(optional): Anbieterspezifische Optionen
Bild bearbeiten (
/tools/image/edit)Bearbeiten eines vorhandenen Bilds mit einer Textaufforderung
Parameter:
imagePath(erforderlich): Pfad zum zu bearbeitenden Bildprompt(erforderlich): Beschreibung der vorzunehmenden ÄnderungmaskPath(optional): Pfad zu einem Maskenbild
Bildvariante erstellen (
/tools/image/variation)Erstellen Sie eine Variation eines vorhandenen Bildes
Parameter:
imagePath(erforderlich): Pfad zum Bild, von dem Variationen erstellt werden sollen
Hinweis: Um diese Tools zu verwenden, müssen Sie API-Schlüssel in Ihrer
.envDatei festlegen:
Für OpenAI-Bilder:
OPENAI_API_KEYFür Stabilitäts-KI-Bilder:
STABILITY_API_KEYFür die Websuche:
GOOGLE_CSE_API_KEYundGOOGLE_CSE_ID
Tool-Integration mit KI-Modellen
Der MCP-Server übernimmt automatisch den Tool-Aufruf und die Ausführung mit KI-Modellen. Wenn ein Modell ein Tool verwendet, führt der Server Folgendes aus:
Führt das angeforderte Tool mit den angegebenen Parametern aus
Gibt die Antwort des Tools an das Modell zurück
Das Modell kann dann die Antwort des Tools in seine endgültige Antwort integrieren
Tool Discovery für KI-Modelle
KI-Modelle können den Endpunkt /tools/available nutzen, um herauszufinden, welche Tools verfügbar sind und wie sie verwendet werden können. Dies ist besonders nützlich für:
Dynamische Toolerkennung während der Laufzeit
Selbstdokumentation für KI-Agenten
KI-Systeme in die Lage versetzen, sich an vorhandene Kapazitäten anzupassen
Beispielhafte Systemaufforderung für KI-Modelle:
You have access to external tools through the MCP server.
Before using any tools, you should check what tools are available by calling:
GET /tools/available
This will return a list of all available tools with their parameters and usage instructions.
You can then use these tools by following the provided usage patterns.Beispiel für die Verwendung des Tools
Beispielcode zur Demonstration der Toolverwendung finden Sie im Verzeichnis /examples .
Hinzufügen neuer Anbieter oder Tools
Hinzufügen neuer KI-Anbieter
So fügen Sie neue KI-Anbieter hinzu:
Fügen Sie das SDK des Anbieters zum Projekt hinzu
Erstellen Sie eine neue Handlerfunktion in
server.jsFügen Sie einen neuen Fall im Hauptroutenhandler hinzu
Neue Tools hinzufügen
So fügen Sie dem Server neue Tools hinzu:
Erstellen Sie eine neue Tool-Implementierung im Verzeichnis
/src/toolsFügen Sie die Tooldefinition zu
tool-definitions.jshinzuAktualisieren Sie die Tool-Ausführungsfunktionen in
server.jsFügen Sie neue API-Endpunkte für die direkte Tool-Nutzung hinzu (falls erforderlich)
Lizenz
ISC