mcp-server
MCP-Server — Tool-Server für KI
Ein pädagogisches Projekt, das demonstriert, wie eine KI eine Verbindung zu einem Server herstellen kann, um echte Aktionen auf einem Betriebssystem auszuführen.
Was ist dieses Projekt?
Dieses Projekt simuliert einen MCP-Server (Model Context Protocol Server) — einen HTTP-Server, der Werkzeuge (Tools) bereitstellt, die eine Künstliche Intelligenz remote aufrufen kann.
Die Grundidee ist einfach: Die KI führt keine Befehle direkt auf dem Betriebssystem aus. Stattdessen sendet sie eine HTTP-Anfrage an diesen Server mit der Bitte, ein Tool auszuführen. Der Server empfängt die Anfrage, führt sie aus und gibt das Ergebnis zurück.
IA → POST /tool { "tool": "get_ip" } → MCP Server → Sistema Operacional
IA ← { "success": true, "result": { "ips": [...] } } ← MCP ServerRelated MCP server: Shell Server
Ziel des Projekts
Demonstration der Client-Server-Architektur in der KI
Aufzeigen, wie Werkzeuge dynamisch registriert und ausgewählt werden können
Als Lernbasis für größere Projekte dienen
Einfach zu verstehen, zu modifizieren und zu präsentieren sein
Verwendeter Stack
Technologie | Verwendung |
Node.js | JavaScript-Laufzeitumgebung |
Express.js | HTTP-Framework |
fs, os, path | Native Node-Module |
child_process | Ausführung von Systembefehlen |
Ordnerstruktur
mcp-server/
│
├── src/
│ ├── server.js ← Ponto de entrada — inicia o servidor
│ ├── routes/
│ │ └── tools.routes.js ← Define as rotas HTTP
│ ├── controllers/
│ │ └── tools.controller.js ← Valida o input e chama o serviço
│ ├── services/
│ │ └── tools.service.js ← Registry de tools + lógica de seleção
│ ├── tools/
│ │ ├── getIp.js ← Tool: retorna o IP da máquina
│ │ ├── getHostname.js ← Tool: retorna o hostname
│ │ ├── listFiles.js ← Tool: lista arquivos de um diretório
│ │ ├── createFile.js ← Tool: cria um arquivo
│ │ └── pingHost.js ← Tool: faz ping em um host
│ └── utils/
│ └── response.js ← Padroniza respostas JSON
│
├── docs/
│ ├── README.md ← Este arquivo
│ └── AI_CONTEXT.md ← Contexto arquitetural para IAs
│
├── package.json
└── .gitignoreInstallation
Voraussetzung: Node.js installiert (Version 18 oder höher empfohlen).
# Clone ou copie o projeto para sua máquina
cd mcp-server
# Instale as dependências
npm installAusführung
# Modo normal
npm start
# Modo desenvolvimento (reinicia ao salvar arquivos — Node 18+)
npm run devDer Server startet standardmäßig auf Port 3000.
Um einen anderen Port zu verwenden:
PORT=8080 npm startÜberprüfung der Funktionsfähigkeit
Zugriff über den Browser oder via curl:
curl http://localhost:3000/healthErwartete Antwort:
{ "status": "ok", "message": "MCP Server rodando" }Verwendung — API
Es gibt zwei Haupt-Endpunkte: einen zum Auflisten der Werkzeuge und einen zum Ausführen dieser.
Verfügbare Werkzeuge auflisten
Gibt alle auf dem Server registrierten Werkzeuge mit ihren vollständigen Schemas (Beschreibung und Parameter) zurück. Dieses Format erleichtert die Integration mit KIs (Tool Calling).
GET http://localhost:3000/toolsAntwort:
{
"success": true,
"result": [
{
"name": "create_file",
"description": "Cria um arquivo dentro da pasta /files.",
"parameters": {
"type": "object",
"properties": {
"filename": { "type": "string", "description": "..." },
"content": { "type": "string", "description": "..." }
},
"required": ["filename"]
}
}
]
}Ein Werkzeug ausführen
POST http://localhost:3000/tool
Content-Type: application/jsonAnforderungsformat
{
"tool": "nome_da_tool",
"args": {
"parametro": "valor"
}
}Verfügbare Tools
get_ip
Gibt die lokalen IPs der Maschine zurück.
Anfrage:
{ "tool": "get_ip", "args": {} }get_hostname
Gibt den Hostnamen, die Plattform und die Architektur der Maschine zurück.
Anfrage:
{ "tool": "get_hostname", "args": {} }list_files
Listet Dateien und Verzeichnisse eines Pfades auf. Wenn path weggelassen wird, wird das aktuelle Verzeichnis des Prozesses verwendet.
Anfrage:
{ "tool": "list_files", "args": { "path": "/home/user" } }create_file
Erstellt eine Datei innerhalb des Ordners /files im Stammverzeichnis des Servers. Dieser Ordner fungiert als Sandbox zur Organisation der generierten Dateien.
Anfrage:
{
"tool": "create_file",
"args": {
"filename": "teste.txt",
"content": "Olá, MCP!"
}
}ping_host
Pingt einen Host oder eine IP an und gibt das Ergebnis zurück. Sicherheit: Nur alphanumerische Zeichen, Punkte und Bindestriche sind im Host erlaubt, um Befehlsinjektionen zu vermeiden.
Anfrage:
{ "tool": "ping_host", "args": { "host": "8.8.8.8" } }Testen mit curl
# get_ip
curl -X POST http://localhost:3000/tool \
-H "Content-Type: application/json" \
-d '{"tool": "get_ip", "args": {}}'
# list_files
curl -X POST http://localhost:3000/tool \
-H "Content-Type: application/json" \
-d '{"tool": "list_files", "args": {"path": "/tmp"}}'
# create_file
curl -X POST http://localhost:3000/tool \
-H "Content-Type: application/json" \
-d '{"tool": "create_file", "args": {"filename": "ola.txt", "content": "Olá mundo!"}}'
# ping_host
curl -X POST http://localhost:3000/tool \
-H "Content-Type: application/json" \
-d '{"tool": "ping_host", "args": {"host": "8.8.8.8"}}'Vollständiger Ablauf — KI → MCP → System
1. IA decide que precisa saber o IP da máquina
2. IA envia: POST /tool { "tool": "get_ip", "args": {} }
3. Express recebe a requisição
4. Route encaminha para o Controller
5. Controller valida o body e chama o Service
6. Service consulta o Registry e encontra a função getIp
7. getIp() usa o módulo "os" para ler as interfaces de rede
8. Resultado sobe de volta: getIp → Service → Controller → Response
9. IA recebe: { "success": true, "result": { "ips": [...] } }
10. IA usa o resultado para continuar sua tarefaMögliche zukünftige Verbesserungen
Hinzufügen einer Authentifizierung via API-Key
Implementierung eines Aufrufprotokolls (wer hat welches Tool wann aufgerufen)
Hinzufügen von WebSocket-Unterstützung für Streaming-Ergebnisse
Integration mit lokalen KI-Modellen (Ollama, LM Studio)
Hinzufügen neuer Tools: CPU/Speicher-Auslastung, Skriptausführung usw.
Erstellen eines Beispiel-Clients, der eine KI simuliert, die die Tools aufruft
Sicherheitshinweise
Dieses Projekt ist pädagogisch. Für den produktiven Einsatz wäre Folgendes erforderlich:
Authentifizierung für die Routen
Whitelist von Pfaden für
list_filesundcreate_fileRate Limiting
Robustere Eingabesäuberung (Sanitization)
HTTPS
Projekt entwickelt für akademische Zwecke und Demonstrationen.
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
An MCP server that gives your AI access to the source code and docs of all public github repos
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server exposing the Backtest360 engine API as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA modular MCP server providing file operations, web search, URL scraping, and sandboxed command execution for LLM interactions.1MIT
- FlicenseAqualityDmaintenanceA simple MCP server that exposes a terminal tool, allowing AI agents to execute shell commands.1-
- AlicenseNot gradedqualityCmaintenanceA self-hosted MCP server that gives AI agents controlled access to a machine: filesystem, shell, background processes, git, web fetching and persistent key-value memory.GPL 3.0
- FlicenseBqualityCmaintenanceA lightweight MCP server that enables AI assistants to interact with the local machine through terminal, filesystem, and Python execution tools.91-