mcp-context
mcp-context
Локальный сервер Model Context Protocol (MCP) с семантическим поиском (RAG) по репозиториям кода. Предоставляет контекст нескольких проектов внешним ИИ-клиентам — Claude.ai, Gemini, Claude Code — устраняя необходимость вручную передавать контекст при каждой сессии.
Стек: Python · FastMCP · Qdrant · sentence-transformers · Next.js · Docker · Cloudflare Tunnel
Предварительные требования
Перед продолжением убедитесь, что установлены следующие инструменты:
Инструмент | Минимальная версия | Проверка |
Python | 3.11 |
|
Docker | 24.0 |
|
Docker Compose | 2.20 |
|
Node.js | 18.0 |
|
npm | 9.0 |
|
Git | любая |
|
cloudflared | любая |
|
Для удаленного подключения (этап 3) требуется учетная запись Cloudflare с активным доменом.
Related MCP server: MCP Codebase RAG Server
Установка
# 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 setupПримечание о
GITHUB_TOKEN: Файл.envсодержит переменнуюGITHUB_TOKENдля доступа к репозиториям на чтение. Чтобы получить этот токен, перейдите в GitHub Settings > Developer settings > Personal access tokens. Создайте новый токен и вставьте его в ваш файл.env.
Конфигурация
1. Переменные окружения
Отредактируйте файл .env, созданный на предыдущем шаге:
# 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
# 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.comСоздайте cloudflared/config.yml в корне проекта (этот файл игнорируется git). Замените <id> на UUID, выведенный командой tunnel create выше:
tunnel: mcp-context
credentials-file: /home/your-user/.cloudflared/<id>.json
ingress:
- hostname: mcp.yourdomain.com
service: http://localhost:17800
- service: http_status:4043. Создание фронтенда
Этот шаг требуется выполнить только один раз. Он создает проект Next.js и автоматически удаляет внутреннюю папку .git/:
make frontend-setup4. Индексация первого проекта
Откройте фронтенд, добавьте путь к проекту и запустите индексацию:
make frontend
# Access http://localhost:17801Или запустите индексатор напрямую из терминала:
make indexЛокальный запуск (разработка)
Для запуска MCP-сервера с автоматической перезагрузкой (рекомендуется при разработке):
make devЭто запустит Qdrant, Cloudflare Tunnel и MCP-сервер с включенной горячей перезагрузкой. Сервер автоматически перезапускается при каждом изменении файла в server/.
Для запуска всех служб в фоновом режиме (MCP-сервер, фронтенд, туннель, Qdrant):
make server-devДоступные службы:
Служба | URL |
MCP Server | |
Frontend (admin + dashboard) | |
Qdrant (API) |
Логи в реальном времени доступны в logs/:
tail -f logs/server.log # MCP server
tail -f logs/frontend.log # frontend
tail -f logs/tunnel.log # Cloudflare Tunnel
make qdrant-logs # QdrantДля остановки всего:
make stopЛокальное развертывание (все службы в контейнерах)
Для запуска проекта полностью в контейнерах — полезно для имитации производственной среды или одновременного запуска всего через Docker:
# First time: build the images
make prod-build
# Start all containers
make prod-up
# Stop everything
make prod-down
# Real-time logs
make prod-logsВнимание: перед запуском
prod-upубедитесь, чтоPROJECTS_ROOTв.envуказывает на правильную директорию. Контейнер MCP-сервера монтирует этот путь для доступа к локальным файлам.
Команды Make
Команда | Описание |
| Первый запуск: установка зависимостей через uv и запуск Qdrant |
| Создание проекта Next.js в |
| Запуск Qdrant + туннель + MCP-сервер с автоперезагрузкой |
| Запуск всех служб в фоновом режиме |
| Остановка всех служб разработки |
| Запуск только MCP-сервера (порт 17800) |
| Запуск только фронтенда Next.js (порт 17801) |
| Запуск только Cloudflare Tunnel |
| Запуск воркера индексации |
| Запуск Qdrant через Docker Compose |
| Остановка Qdrant |
| Логи Qdrant в реальном времени |
| Сборка всех Docker-образов |
| Запуск всех контейнеров |
| Остановка всех контейнеров |
| Логи всех контейнеров в реальном времени |
Структура репозитория
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 fileИзвестные ограничения
Сервер зависит от того, включена ли локальная машина, чтобы работать удаленно через Cloudflare Tunnel
Индекс Qdrant отражает состояние кода на момент последней индексации — настройте хук
post-commitдля автоматического обновления индекса после каждого коммитаБинарные файлы, изображения и ассеты не индексируются
Модель эмбеддингов (
jina-embeddings-v2-base-code, ~160 МБ) автоматически загружается при первом запуске черезsentence-transformers
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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.
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Related MCP Servers
- AlicenseAqualityDmaintenanceLocal-first MCP server for semantic + keyword hybrid code search. Zero external services, no API keys required.2MIT
- FlicenseAqualityDmaintenanceProvides semantic vector search over local codebases via MCP, enabling hybrid search (dense + sparse + RRF) for any MCP client like GitHub Copilot or Claude Desktop.58-
- FlicenseNot gradedqualityCmaintenanceA local MCP server that enables LLM clients like Claude to perform semantic code search and answer questions about a codebase using tree-sitter parsing and sqlite-vec vector storage.-
- FlicenseNot gradedqualityDmaintenanceMCP server for semantic code search and explanation. Allows AI agents to search, ask questions, and manage memory about a codebase with local embeddings and LLM integration.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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