Skip to main content
Glama

MCP Tool Hub

Ein modularer, erweiterbarer Model Context Protocol-Multi-Server-Hub — entwickelt in TypeScript für IT-Automatisierungsteams.

Ermöglichen Sie Ihrem LLM den Zugriff auf reale Werkzeuge: Dateien, Git, Webinhalte und persistenten Speicher. Stellen Sie die Lösung über Ansible gleichzeitig auf einer beliebigen Anzahl von Client-Maschinen bereit.


Architektur

mcp-tool-hub/
├── packages/
│   ├── core/              ← Shared types + BaseMCPServer abstract class
│   ├── server-filesystem/ ← Sandboxed local file access (read/write/list/delete)
│   ├── server-git/        ← Git log, diff, file contents, branches, status
│   ├── server-fetch/      ← Web fetching: HTML, JSON APIs, URL health checks
│   └── server-memory/     ← Persistent JSON knowledge base (survives restarts)
├── host/                  ← Orchestrator: registry + CLI + stdio JSON interface
├── ansible/               ← Playbook, inventory, systemd service templates
└── docs/                  ← How to add new servers (with template)

Die Architektur folgt dem Model Context Protocol-Muster:

  • Jeder Server ist vollständig unabhängig — eigenes Paket, eigener Build

  • Die Registry im Host bildet zur Laufzeit toolName → server ab

  • Das CLI stellt eine stdio-JSON-Schnittstelle bereit — jede LLM-Integration sendet {"toolName":"...", "arguments":{...}} an stdin und liest das Ergebnis von stdout

  • Einen neuen Server hinzufügen = Paket erstellen, BaseMCPServer erweitern, in cli.ts registrieren


Schnellstart

1. Installieren & Bauen

git clone https://github.com/your-org/mcp-tool-hub.git
cd mcp-tool-hub
npm install
npm run build

2. Konfigurieren

cp .env.example .env
# Edit .env with your paths and settings

3. Ausführen

# Via npm
npm run start --workspace=host

# Or directly
node host/dist/cli.js

4. Ein Tool aufrufen

Senden Sie JSON an stdin, erhalten Sie JSON von stdout:

echo '{"toolName":"read_file","arguments":{"path":"hello.txt"}}' | node host/dist/cli.js

Verfügbare Tools

📁 Filesystem Server

Alle Operationen sind auf MCP_FS_ROOT beschränkt (Sandbox). Pfad-Traversal (../) ist blockiert.

Tool

Beschreibung

read_file

Dateiinhalt lesen (utf8 oder base64)

write_file

In eine Datei schreiben oder anhängen

list_directory

Verzeichnisinhalt auflisten (optional rekursiv)

delete_file

Eine Datei löschen

move_file

Eine Datei verschieben oder umbenennen

get_file_info

Größe, Datum und Typ eines Pfades abrufen

🔀 Git Server

Nur lesend. Keine Schreiboperationen.

Tool

Beschreibung

git_log

Commit-Historie für ein Repo oder eine Datei

git_show_file

Dateiinhalt bei einem bestimmten Commit/Branch

git_diff

Diff zwischen zwei Refs

git_status

Status des Arbeitsverzeichnisses

git_branches

Branches auflisten (lokal + optional remote)

git_show_commit

Vollständige Commit-Details und Diff

🌐 Fetch Server

Unterstützt eine optionale Domain-Whitelist über MCP_FETCH_ALLOWED_DOMAINS.

Tool

Beschreibung

fetch_url

HTML oder Text von einer URL abrufen

fetch_json

Eine JSON-API-Antwort abrufen und parsen

check_url

Prüfen, ob eine URL erreichbar ist (HEAD-Anfrage)

🧠 Memory Server

Persistent über Neustarts hinweg. Basiert auf einer JSON-Datei.

Tool

Beschreibung

memory_set

Wert mit Schlüssel, Namespace und Tags speichern

memory_get

Wert anhand des Schlüssels abrufen

memory_search

Volltextsuche über alle Einträge

memory_delete

Einen Eintrag löschen

memory_list_namespaces

Alle Namespaces mit Anzahl auflisten

memory_clear_namespace

Alle Einträge in einem Namespace löschen


Ansible-Bereitstellung

Bereitstellung auf allen Ihren Client-Maschinen gleichzeitig:

cd ansible

# First time
ansible-playbook -i inventory.yml deploy-mcp-hub.yml

# Update only (rebuild + restart)
ansible-playbook -i inventory.yml deploy-mcp-hub.yml --tags update

# Deploy to specific group
ansible-playbook -i inventory.yml deploy-mcp-hub.yml --limit servers

Das Playbook:

  1. Installiert Node.js 20 (falls nicht vorhanden)

  2. Erstellt einen dedizierten mcp-hub-Systembenutzer

  3. Kopiert und baut das Projekt

  4. Schreibt die .env-Konfiguration aus Ihren Ansible-Variablen

  5. Installiert und startet einen systemd-Dienst (automatischer Neustart bei Fehler)

Host-spezifische Variablen in inventory.yml ermöglichen es Ihnen, unterschiedliche erlaubte Domains, Log-Level und Pfade pro Maschinengruppe zu konfigurieren.


Einen neuen Server hinzufügen

Siehe docs/adding-a-new-server.template.ts für die vollständige Vorlage mit Kommentaren.

Kurz gesagt:

// 1. Create packages/server-myservice/src/my-server.ts
export class MyServer extends BaseMCPServer {
  constructor(options: MyOptions) {
    super(SERVER_INFO, options);
    this.registerTool("my_tool", this.handleMyTool.bind(this));
  }
  private async handleMyTool(args) {
    return this.ok({ result: "done" });
  }
}

// 2. Register in host/src/cli.ts
hub.use(new MyServer({ apiKey: process.env.MY_API_KEY! }));

Ideen: server-slack, server-postgres, server-docker, server-ansible, server-ssh, server-jira


Umgebungsvariablen

Variable

Standard

Beschreibung

MCP_DATA_DIR

./mcp-data

Wurzelverzeichnis für alle Hub-Daten

MCP_FS_ROOT

./mcp-data/files

Wurzelverzeichnis der Dateisystem-Sandbox

MCP_GIT_WORKSPACE

./mcp-data/repos

Basispfad für Git-Repos

MCP_MEMORY_PATH

./mcp-data/memory.json

Datei für den Speicher

MCP_FETCH_ALLOWED_DOMAINS

(leer = alle)

Kommagetrennte Domain-Whitelist

MCP_LOG_LEVEL

info

`debug

info

warn

error`


Sicherheitshinweise

  • Dateisystem: Streng isoliert (Sandbox). Pfad-Traversal-Angriffe führen zu einem Fehler, nicht zur Datenherausgabe.

  • Git: Nur lesend. Keine commit-, push- oder clone-Operationen verfügbar.

  • Fetch: Optionale Domain-Whitelist verhindert SSRF zu internen Diensten.

  • Systemd-Dienst: Läuft als Nicht-Root-Benutzer mit PrivateTmp=true und NoNewPrivileges=true.


Anforderungen

  • Node.js ≥ 18 (für native fetch-API)

  • Git (für server-git)

  • Linux mit systemd (für Ansible-Bereitstellung)

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TOMJARA/mcp-tool-hub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server