Three local MCP servers for coding agents, designed for Claude Code and OpenCode: - context-web-search: SearXNG-backed web search and URL fetch - context-docs: semantic search over curated llms.txt docs - context-repomix: pack local or remote repos into AI context Defaults are local-first: SearXNG binds to 127.0.0.1, no hosted API keys are required, and Repomix mounts only the current project read-only.
Context Kit
Local context tools for Claude Code and OpenCode.
Local web search. Local docs. Repo packing. No API keys required.
What You Get
Context Kit gives coding agents three local MCP servers:
| Server | Purpose | Default |
|---|---|---|
context-web-search |
Current web search and URL fetch through local SearXNG | Enabled |
context-docs |
Semantic search over curated llms.txt documentation |
Enabled |
context-repomix |
Pack local or remote repositories into AI-friendly context | Enabled |
The first public release deliberately keeps the surface area small: web search, docs search, and repository packing.
Quick Start
git clone https://gitea.krishnan.ca/ajaynomics/context-kit.git
cd context-kit
cp .env.example .env
export PATH="$PWD/bin:$PATH"
bin/context-kit start
bin/context-kit doctor
Then connect your assistant.
For Claude Code:
bin/context-kit install claude
Copy the printed JSON into your project's .mcp.json, or use the equivalent
claude mcp add commands if you prefer managing servers through the Claude CLI.
The default snippet uses context-kit on PATH, which is the right shape for
shared project config. For a private user-only config, you can print absolute
paths with bin/context-kit install claude --absolute.
For OpenCode:
bin/context-kit install opencode
Merge the printed mcp block into your opencode.json, then restart OpenCode.
The default snippet uses context-kit on PATH. Use
bin/context-kit install opencode --absolute only for private, machine-local
config that will not be committed.
Defaults
- SearXNG binds to
127.0.0.1:8099only. - Docs and model caches live in
$HOME/.local/share/context-kit. - Docs refresh TTL defaults to
7d. - MCP containers are labeled
dev.context-kit=truefor safe inspection and cleanup. - Repomix mounts only the current project read-only, not your whole home directory.
- No code-editing MCP server is enabled by default.
Docs Sources
The default docs index is intentionally small:
- Claude Code docs
- OpenAI API docs and reference
- Anthropic docs
- OpenRouter docs
- Model Context Protocol docs
Optional profiles live in config/:
sources.ruby-ai.txtsources.js.txtsources.cloudflare.txt
Example:
CONTEXT_KIT_DOCS_SOURCES="config/sources.default.txt config/sources.js.txt" \
bin/context-kit docs
Cloudflare is opt-in because it can expand to thousands of sections and take a while to embed.
Commands
bin/context-kit start
bin/context-kit stop
bin/context-kit build
bin/context-kit status
bin/context-kit doctor
bin/context-kit redaction-check
MCP entrypoints:
bin/context-kit web-search
bin/context-kit docs
bin/context-kit repomix
Security Model
Context Kit is local-first, but MCP tools still extend what your agent can do.
- Treat fetched web pages as untrusted input.
- Do not expose SearXNG publicly without changing the secret and reviewing its configuration.
- Keep docs profiles curated. More sources means more background indexing and more untrusted text in your retrieval corpus.
- Be cautious when adding code-editing MCP servers. Context Kit's default MCP servers either read remote content or mount the current project read-only.
See docs/security.md for details.
Requirements
- Docker with Compose v2
- Bash
curlfor health checks
No hosted API keys are required for the default stack.
License
MIT