# Context+ MCP server

> Turns a large codebase into a searchable hierarchical feature graph an AI client can navigate, analyze, and edit safely.

- Repository: https://github.com/forloopcodes/contextplus
- Page: https://hostedmcp.org/servers/forloopcodes/contextplus
- Transport: —
- Stars: 1991
- License: MIT

## Environment variables

| Name | Required | Secret | Description |
|---|---|---|---|
| `CONTEXTPLUS_EMBED_PROVIDER` | no | no |  |
| `CONTEXTPLUS_EXTRA_ROOTS` | no | no |  |
| `CONTEXTPLUS_OPENAI_API_KEY` | no | no |  |
| `CONTEXTPLUS_OPENAI_BASE_URL` | no | no |  |
| `CONTEXTPLUS_OPENAI_EMBED_MODEL` | no | no |  |
| `OLLAMA_API_KEY` | no | no |  |
| `OLLAMA_CHAT_MODEL` | no | no |  |
| `OLLAMA_EMBED_MODEL` | no | no |  |
| `OPENAI_API_KEY` | no | no |  |
| `OPENAI_EMBED_MODEL` | no | no |  |

## Tools (17)

- `get_context_tree`
- `get_file_skeleton`
- `semantic_code_search`
- `semantic_identifier_search`
- `semantic_navigate`
- `get_blast_radius`
- `run_static_analysis`
- `propose_commit`
- `get_feature_hub`
- `list_restore_points`
- `undo_change`
- `upsert_memory_node`
- `create_relation`
- `search_memory_graph`
- `prune_stale_links`
- `add_interlinked_context`
- `retrieve_with_traversal`

## FAQ

### How does Context+ search code by meaning instead of text?

It uses embeddings over file headers and symbols, so semantic_code_search returns matched symbol definition lines rather than exact text matches.

### Can Context+ undo its own AI code changes?

Yes. propose_commit creates a shadow restore point before writing, and undo_change restores files to that prior state without touching git.

### Which embedding providers does Context+ support?

It supports a local Ollama backend by default and any OpenAI-compatible embeddings API, such as Gemini, OpenAI, Groq, or vLLM.

### How do I add Context+ to Claude Code or Cursor?

Run the init command for your editor to generate the MCP config, or add contextplus to your mcpServers config using npx or bunx.

### Which languages does Context+ static analysis cover?

run_static_analysis runs native linters and compilers for TypeScript, Python, Rust, and Go to find unused variables, dead code, and type errors.
