Skip to main content
Glama
ericlimabr

mcp-context

by ericlimabr

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

python3 --version

Docker

24.0

docker --version

Docker Compose

2.20

docker compose version

Node.js

18.0

node --version

npm

9.0

npm --version

Git

любая

git --version

cloudflared

любая

cloudflared --version

Для удаленного подключения (этап 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-password

2. Настройка 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:404

3. Создание фронтенда

Этот шаг требуется выполнить только один раз. Он создает проект Next.js и автоматически удаляет внутреннюю папку .git/:

make frontend-setup

4. Индексация первого проекта

Откройте фронтенд, добавьте путь к проекту и запустите индексацию:

make frontend
# Access http://localhost:17801

Или запустите индексатор напрямую из терминала:

make index

Локальный запуск (разработка)

Для запуска MCP-сервера с автоматической перезагрузкой (рекомендуется при разработке):

make dev

Это запустит Qdrant, Cloudflare Tunnel и MCP-сервер с включенной горячей перезагрузкой. Сервер автоматически перезапускается при каждом изменении файла в server/.

Для запуска всех служб в фоновом режиме (MCP-сервер, фронтенд, туннель, Qdrant):

make server-dev

Доступные службы:

Служба

URL

MCP Server

http://localhost:17800

Frontend (admin + dashboard)

http://localhost:17801

Qdrant (API)

http://localhost:17810

Логи в реальном времени доступны в 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

Команда

Описание

make setup

Первый запуск: установка зависимостей через uv и запуск Qdrant

make frontend-setup

Создание проекта Next.js в apps/frontend/ (один раз)

make dev

Запуск Qdrant + туннель + MCP-сервер с автоперезагрузкой

make server-dev

Запуск всех служб в фоновом режиме

make stop

Остановка всех служб разработки

make server

Запуск только MCP-сервера (порт 17800)

make frontend

Запуск только фронтенда Next.js (порт 17801)

make tunnel

Запуск только Cloudflare Tunnel

make index

Запуск воркера индексации

make qdrant-up

Запуск Qdrant через Docker Compose

make qdrant-down

Остановка Qdrant

make qdrant-logs

Логи Qdrant в реальном времени

make prod-build

Сборка всех Docker-образов

make prod-up

Запуск всех контейнеров

make prod-down

Остановка всех контейнеров

make prod-logs

Логи всех контейнеров в реальном времени


Структура репозитория

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    A 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.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    -