mcp-context
Lokaler Model Context Protocol (MCP) Server mit semantischer Suche (RAG) über Code-Repositories. Stellt den Kontext mehrerer Projekte für externe KI-Clients bereit — Claude.ai, Gemini, Claude Code — und macht es überflüssig, den Kontext bei jeder Sitzung manuell erneut einzugeben.
Stack: Python · FastMCP · Qdrant · sentence-transformers · Next.js · Docker · Cloudflare Tunnel
Voraussetzungen
Stellen Sie sicher, dass die folgenden Elemente installiert sind, bevor Sie fortfahren:
Tool | Mindestversion | Überprüfung |
Python | 3.11 |
|
Docker | 24.0 |
|
Docker Compose | 2.20 |
|
Node.js | 18.0 |
|
npm | 9.0 |
|
Git | beliebig |
|
cloudflared | beliebig |
|
Ein Cloudflare-Konto mit einer aktiven Domain ist für die Remote-Konnektivität erforderlich (Phase 3).
Related MCP server: mcplens
Installation
# 1. Clone the repository
git clone https://github.com/ericlimabr/mcp-context.git
cd mcp-context
# 2. Copy the environment variables file
cp .env.example .env
# 3. Run setup — installs Python dependencies via uv and starts Qdrant
make setupHinweis zu
GITHUB_TOKEN: Die.env-Datei enthält eineGITHUB_TOKEN-Variable für den Lesezugriff auf Repositories. Um diesen Token zu erhalten, gehen Sie in GitHub zu Settings > Developer settings > Personal access tokens. Generieren Sie einen neuen Token und fügen Sie ihn in Ihre.env-Datei ein.
Konfiguration
1. Umgebungsvariablen
Bearbeiten Sie die im vorherigen Schritt erstellte .env-Datei:
# Root path where your projects are stored on the machine
PROJECTS_ROOT=/home/your-user/projects
# Access password for the administrative panel
ADMIN_PASSWORD=choose-a-strong-password2. Cloudflare Tunnel konfigurieren
# Authenticate cloudflared with your Cloudflare account
cloudflared tunnel login
# Create the permanent tunnel
cloudflared tunnel create mcp-context
# Associate with your subdomain (replace yourdomain.com)
cloudflared tunnel route dns mcp-context mcp.yourdomain.comErstellen Sie cloudflared/config.yml im Projektstammverzeichnis (diese Datei wird von git ignoriert). Ersetzen Sie <id> durch die UUID, die vom oben genannten tunnel create-Befehl ausgegeben wurde:
tunnel: mcp-context
credentials-file: /home/your-user/.cloudflared/<id>.json
ingress:
- hostname: mcp.yourdomain.com
service: http://localhost:17800
- service: http_status:4043. Frontend erstellen
Dieser Schritt ist nur einmal erforderlich. Er erstellt das Next.js-Projekt und entfernt automatisch das interne .git/:
make frontend-setup4. Das erste Projekt indizieren
Öffnen Sie das Frontend, fügen Sie einen Projektpfad hinzu und starten Sie die Indizierung:
make frontend
# Access http://localhost:17801Oder führen Sie den Indexer direkt über das Terminal aus:
make indexLokal ausführen (Entwicklung)
Um den MCP-Server mit automatischem Neuladen zu starten (empfohlen während der Entwicklung):
make devDies startet Qdrant, den Cloudflare Tunnel und den MCP-Server mit aktiviertem Hot-Reload. Der Server startet bei jeder Dateiänderung in server/ automatisch neu.
Um alle Dienste im Hintergrund zu starten (MCP-Server, Frontend, Tunnel, Qdrant):
make server-devVerfügbare Dienste:
Dienst | URL |
MCP-Server | |
Frontend (Admin + Dashboard) | |
Qdrant (API) |
Echtzeit-Logs sind verfügbar unter logs/:
tail -f logs/server.log # MCP server
tail -f logs/frontend.log # frontend
tail -f logs/tunnel.log # Cloudflare Tunnel
make qdrant-logs # QdrantUm alles zu stoppen:
make stopLokale Bereitstellung (alle Dienste in Containern)
Um das Projekt vollständig containerisiert auszuführen — nützlich, um die Produktionsumgebung zu simulieren oder alles zusammen mit Docker zu starten:
# First time: build the images
make prod-build
# Start all containers
make prod-up
# Stop everything
make prod-down
# Real-time logs
make prod-logsWarnung: Stellen Sie sicher, dass
PROJECTS_ROOTin.envauf das korrekte Verzeichnis zeigt, bevor Sieprod-upausführen. Der MCP-Server-Container bindet diesen Pfad ein, um auf lokale Dateien zuzugreifen.
Make-Befehle
Befehl | Beschreibung |
| Erster Durchlauf: installiert Abhängigkeiten via uv und startet Qdrant |
| Erstellt das Next.js-Projekt in |
| Startet Qdrant + Tunnel + MCP-Server mit automatischem Neuladen |
| Startet alle Dienste im Hintergrund |
| Stoppt alle Entwicklungsdienste |
| Startet nur den MCP-Server (Port 17800) |
| Startet nur das Next.js-Frontend (Port 17801) |
| Startet nur den Cloudflare Tunnel |
| Führt den Indizierungs-Worker aus |
| Startet Qdrant via Docker Compose |
| Stoppt Qdrant |
| Qdrant-Logs in Echtzeit |
| Build aller Docker-Images |
| Startet alle Container |
| Stoppt alle Container |
| Logs aller Container in Echtzeit |
Repository-Struktur
mcp-context/
├── server/ # MCP Server (FastMCP/SSE, port 17800)
│ ├── main.py # Entrypoint and MCP configuration
│ ├── tools/ # MCP tool definitions (planned)
│ ├── resources/ # MCP resource definitions (planned)
│ └── embeddings.py # Local embedding model loading (planned)
├── indexer/ # Project indexing worker (planned)
│ ├── worker.py # Orchestrates indexing
│ ├── chunker.py # Function-scope chunking
│ └── qdrant_client.py # Qdrant client abstraction
├── apps/
│ └── frontend/ # Next.js app — admin panel + dashboard (port 17801)
│ # Generated by make frontend-setup
├── cloudflared/ # Cloudflare Tunnel config (gitignored)
│ └── config.yml
├── docs/
│ ├── ARCHITECTURE.md # Detailed system architecture
│ ├── DECISIONS.md # Architecture decisions
│ ├── ENDPOINTS.md # Endpoints documentation
│ └── ROADMAP.md # Implementation phases
├── logs/ # Service logs in dev (gitignored)
├── .pids/ # Process PIDs in dev (gitignored)
├── qdrant_data/ # Persisted Qdrant data (gitignored)
├── config.json # Project configuration (gitignored)
├── .env # Environment variables (gitignored)
├── .env.example # Environment variables template
├── docker-compose.yml # Qdrant for development
├── docker-compose.prod.yml # All services for local deploy
├── Makefile # Command shortcuts
├── pyproject.toml # Python project and dependencies (uv)
├── CONTEXT.md # Project context for LLMs
└── README.md # This fileBekannte Einschränkungen
Der Server ist darauf angewiesen, dass der lokale Rechner eingeschaltet ist, um via Cloudflare Tunnel remote zu funktionieren
Der Qdrant-Index spiegelt den Zustand des Codes zum Zeitpunkt der letzten Indizierung wider — konfigurieren Sie einen
post-commit-Hook, um den Index nach jedem Commit automatisch aktuell zu haltenBinärdateien, Bilder und Assets werden nicht indiziert
Das Embedding-Modell (
jina-embeddings-v2-base-code, ~160 MB) wird beim ersten Start automatisch viasentence-transformersheruntergeladen
This server cannot be installed
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/ericlimabr/mcp-context'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
