mcp-context
코드 저장소에 대한 의미론적 검색(RAG)을 지원하는 로컬 Model Context Protocol (MCP) 서버입니다. 여러 프로젝트의 컨텍스트를 외부 AI 클라이언트(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 | any |
|
cloudflared | any |
|
원격 연결(3단계)을 위해서는 활성 도메인이 있는 Cloudflare 계정이 필요합니다.
Related MCP server: mcplens
설치
# 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을 생성하십시오(이 파일은 gitignore 처리됩니다). <id>를 위 tunnel create 명령으로 출력된 UUID로 바꾸십시오:
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 서버 | |
프론트엔드 (관리자 + 대시보드) | |
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을 실행하기 전에.env의PROJECTS_ROOT가 올바른 디렉토리를 가리키고 있는지 확인하십시오. MCP 서버 컨테이너는 로컬 파일에 액세스하기 위해 해당 경로를 마운트합니다.
Make 명령어
명령어 | 설명 |
| 첫 실행: uv를 통해 종속성을 설치하고 Qdrant 시작 |
|
|
| Qdrant + 터널 + 자동 재시작이 포함된 MCP 서버 시작 |
| 모든 서비스를 백그라운드에서 시작 |
| 모든 개발 서비스 중지 |
| MCP 서버만 시작 (포트 17800) |
| Next.js 프론트엔드만 시작 (포트 17801) |
| Cloudflare Tunnel만 시작 |
| 인덱싱 워커 실행 |
| Docker Compose를 통해 Qdrant 시작 |
| 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, 약 160MB)은 첫 실행 시sentence-transformers를 통해 자동으로 다운로드됩니다.
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
