Skip to content

Bek85/code-context-mcp

Repository files navigation

Code Context MCP

A multi-provider embedding MCP server with local Milvus for semantic code search. Works with Claude Code, Cursor, Windsurf, and other MCP-compatible IDEs.

Features

  • Multi-provider embeddings: Local Qwen (free), OpenAI, or DeepSeek
  • Dimension mismatch detection: Warns before indexing if dimensions don't match
  • Zero cloud dependency: Use local Qwen for completely offline operation
  • Dual deployment: Docker or local with pnpm

Architecture

┌─────────────────┐     ┌────────────────────┐     ┌─────────────────┐
│  Your Codebase  │────▶│  Embedding Provider │────▶│  Local Milvus   │
│                 │     │  (Qwen/OpenAI/etc) │     │  (Vector Store) │
└─────────────────┘     └────────────────────┘     └─────────────────┘
         │                                                  │
         │         ┌────────────────────────────┐          │
         └────────▶│     code-context-mcp       │◀─────────┘
                   │       (MCP Server)         │
                   └────────────────────────────┘
                            │
              ┌─────────────┴─────────────┐
              ▼             ▼             ▼
        Claude Code      Cursor      Windsurf

Quick Start

Option A: Docker (Recommended)

# 1. Configure
cp .env.example .env
# Edit .env with your settings

# 2. Start all services
docker-compose up -d

# 3. Verify (~60 seconds to initialize)
curl http://localhost:9091/healthz   # Milvus
curl http://localhost:3100/health    # MCP Server

IDE Configuration (Docker):

{
  "mcpServers": {
    "code-context": {
      "url": "http://localhost:3100/sse"
    }
  }
}

Option B: Local Development

# 1. Start only Milvus in Docker
docker-compose up -d milvus

# 2. Install and build
pnpm install
pnpm build

# 3. Configure IDE (see below)

IDE Configuration (Local):

{
  "mcpServers": {
    "code-context": {
      "command": "node",
      "args": ["/path/to/code-context-mcp/dist/index.js"],
      "env": {
        "EMBEDDING_PROVIDER": "qwen-local",
        "QWEN_LOCAL_BASE_URL": "http://172.18.35.123:8001/v1",
        "QWEN_LOCAL_MODEL": "Qwen3-Embedding-4B",
        "MILVUS_ADDRESS": "127.0.0.1:19530"
      }
    }
  }
}

MCP Tools

Tool Description
index_codebase Index a directory into Milvus
search_code Semantic search across indexed code
check_dimensions Check provider/collection dimension compatibility
drop_collection Delete a collection (for re-indexing)
get_provider_info Show current provider configuration

Usage:

index_codebase /path/to/your/project
search_code "authentication logic"
check_dimensions

Embedding Providers

Provider Model Dimensions Cost
qwen-local Qwen3-Embedding-4B 2560 Free
openai text-embedding-3-small 1536 $0.02/1M tokens
openai text-embedding-3-large 3072 $0.13/1M tokens
deepseek deepseek-embedding-v2 768 Paid

Environment Variables

Variable Description Default
EMBEDDING_PROVIDER openai, qwen-local, deepseek openai
MILVUS_ADDRESS Milvus server address 127.0.0.1:19530
DIMENSION_CHECK_ENABLED Check dimensions before indexing true
MCP_TRANSPORT stdio or http stdio
MCP_PORT HTTP port (http mode) 3100

Provider-specific:

Provider Variables
Local Qwen QWEN_LOCAL_BASE_URL, QWEN_LOCAL_MODEL
OpenAI OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_EMBEDDING_MODEL
DeepSeek DEEPSEEK_API_KEY, DEEPSEEK_BASE_URL, DEEPSEEK_EMBEDDING_MODEL

Dimension Mismatch Handling

Different providers produce different dimensions. Switching providers requires re-indexing:

drop_collection code_context confirm=true
index_codebase /path/to/project

Docker Commands

docker-compose up -d              # Start all
docker-compose up -d milvus       # Start only Milvus
docker-compose logs -f            # View logs
docker-compose down               # Stop all
docker-compose down -v            # Reset (delete data)
docker-compose build --no-cache   # Rebuild

Local Development

pnpm install    # Install dependencies
pnpm build      # Build TypeScript
pnpm dev        # Run in dev mode
pnpm start      # Run production build

Project Structure

code-context-mcp/
├── docker-compose.yml      # Milvus + MCP server
├── Dockerfile
├── package.json
├── tsconfig.json
├── .env.example
└── src/
    ├── index.ts            # Entry point (stdio + HTTP)
    ├── config.ts           # Configuration
    ├── providers/          # Embedding providers
    │   ├── base.ts
    │   ├── openai.ts
    │   ├── qwen-local.ts
    │   └── deepseek.ts
    ├── milvus/             # Milvus integration
    │   ├── client.ts
    │   └── dimension-checker.ts
    └── tools/              # MCP tools
        ├── index-codebase.ts
        ├── search-code.ts
        └── check-dimensions.ts

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published