MCP server for indexing and querying codebases using CocoIndex
Project description
light weight MCP for code that just works
A super light-weight, effective embedded MCP (AST-based) that understand and searches your codebase that just works! Using CocoIndex - an Rust-based ultra performant data transformation engine. No blackbox. Works for Claude, Codex, Cursor - any coding agent.
- Instant token saving by 70%.
- 1 min setup - Just claude/codex mcp add works!
🌟 Please help star CocoIndex if you like this project!
Deutsch | English | Español | français | 日本語 | 한국어 | Português | Русский | 中文
Get Started - zero config, let's go!!
Install uv if you don't have it.
curl -LsSf https://astral.sh/uv/install.sh | sh
Claude
claude mcp add cocoindex-code \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Codex
codex mcp add cocoindex-code \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
OpenCode
opencode mcp add
Enter MCP server name: cocoindex-code
Select MCP server type: local
Enter command to run: uvx --prerelease=explicit --with cocoindex>=1.0.0a16 cocoindex-code@latest
Or use opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cocoindex-code": {
"type": "local",
"command": [
"uvx",
"--prerelease=explicit",
"--with",
"cocoindex>=1.0.0a16",
"cocoindex-code@latest"
]
}
}
}
Features
- Semantic Code Search: Find relevant code using natural language queries when grep doesn't work well, and save tokens immediately.
- Ultra Performant to code changes:⚡ Built on top of ultra performant Rust indexing engine. Only re-indexes changed files for fast updates.
- Multi-Language Support: Python, JavaScript/TypeScript, Rust, Go, Java, C/C++, C#, SQL, Shell
- Embedded: Portable and just works, no database setup required!
- Flexible Embeddings: By default, no API key required with Local SentenceTransformers - totally free! You can customize 100+ cloud providers.
Configuration
| Variable | Description | Default |
|---|---|---|
COCOINDEX_CODE_ROOT_PATH |
Root path of the codebase | Auto-discovered (see below) |
COCOINDEX_CODE_EMBEDDING_MODEL |
Embedding model (see below) | sbert/sentence-transformers/all-MiniLM-L6-v2 |
Root Path Discovery
If COCOINDEX_CODE_ROOT_PATH is not set, the codebase root is discovered by:
- Finding the nearest parent directory containing
.cocoindex_code/ - Finding the nearest parent directory containing
.git/ - Falling back to the current working directory
Embedding model
By default - this project use a local SentenceTransformers model (sentence-transformers/all-MiniLM-L6-v2). No API key required and completely free!
Use a code specific embedding model can achieve better semantic understanding for your results, this project supports all models on Ollama and 100+ cloud providers.
Set COCOINDEX_CODE_EMBEDDING_MODEL to any LiteLLM-supported model, along with the provider's API key:
Ollama (Local)
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=ollama/nomic-embed-text \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Set OLLAMA_API_BASE if your Ollama server is not at http://localhost:11434.
OpenAI
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=text-embedding-3-small \
-e OPENAI_API_KEY=your-api-key \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Azure OpenAI
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=azure/your-deployment-name \
-e AZURE_API_KEY=your-api-key \
-e AZURE_API_BASE=https://your-resource.openai.azure.com \
-e AZURE_API_VERSION=2024-06-01 \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Gemini
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=gemini/text-embedding-004 \
-e GEMINI_API_KEY=your-api-key \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Mistral
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=mistral/mistral-embed \
-e MISTRAL_API_KEY=your-api-key \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Voyage (Code-Optimized)
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=voyage/voyage-code-3 \
-e VOYAGE_API_KEY=your-api-key \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Cohere
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=cohere/embed-english-v3.0 \
-e COHERE_API_KEY=your-api-key \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
AWS Bedrock
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=bedrock/amazon.titan-embed-text-v2:0 \
-e AWS_ACCESS_KEY_ID=your-access-key \
-e AWS_SECRET_ACCESS_KEY=your-secret-key \
-e AWS_REGION_NAME=us-east-1 \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Nebius
claude mcp add cocoindex-code \
-e COCOINDEX_CODE_EMBEDDING_MODEL=nebius/BAAI/bge-en-icl \
-e NEBIUS_API_KEY=your-api-key \
-- uvx --prerelease=explicit --with "cocoindex>=1.0.0a18" cocoindex-code@latest
Any model supported by LiteLLM works — see the full list of embedding providers.
MCP Tools
search
Search the codebase using semantic similarity.
search(
query: str, # Natural language query or code snippet
limit: int = 10, # Maximum results (1-100)
offset: int = 0, # Pagination offset
refresh_index: bool = True # Refresh index before querying
)
The refresh_index parameter controls whether the index is refreshed before searching:
True(default): Refreshes the index to include any recent changesFalse: Skip refresh for faster consecutive queries
Returns matching code chunks with:
- File path
- Language
- Code content
- Line numbers (start/end)
- Similarity score
Supported Languages
| Language | Aliases | File Extensions |
|---|---|---|
| c | .c |
|
| cpp | c++ | .cpp, .cc, .cxx, .h, .hpp |
| csharp | csharp, cs | .cs |
| css | .css, .scss |
|
| dtd | .dtd |
|
| fortran | f, f90, f95, f03 | .f, .f90, .f95, .f03 |
| go | golang | .go |
| html | .html, .htm |
|
| java | .java |
|
| javascript | js | .js |
| json | .json |
|
| kotlin | .kt, .kts |
|
| markdown | md | .md, .mdx |
| pascal | pas, dpr, delphi | .pas, .dpr |
| php | .php |
|
| python | .py |
|
| r | .r |
|
| ruby | .rb |
|
| rust | rs | .rs |
| scala | .scala |
|
| solidity | .sol |
|
| sql | .sql |
|
| swift | .swift |
|
| toml | .toml |
|
| tsx | .tsx |
|
| typescript | ts | .ts |
| xml | .xml |
|
| yaml | .yaml, .yml |
Common generated directories are automatically excluded:
__pycache__/node_modules/target/dist/vendor/(Go vendored dependencies, matched by domain-based child paths)
Large codebase / Enterprise
CocoIndex is an ultra effecient indexing engine that also works on large codebase at scale on XXX G for enterprises. In enterprise scenarios it is a lot more effecient to do index share with teammates when there are large repo or many repos. We also have advanced features like branch dedupe etc designed for enterprise users.
If you need help with remote setup, please email our maintainer linghua@cocoindex.io, happy to help!!
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cocoindex_code-0.1.4.tar.gz.
File metadata
- Download URL: cocoindex_code-0.1.4.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
942ed6cfdc676d542ca7523ec76ad5ebe9bce95f7311dabc86bbc479f2306519
|
|
| MD5 |
d02d584fd231978441cb019575ceb429
|
|
| BLAKE2b-256 |
7105d317764df085d63954206e75cda884dcfbadfc75d551de7b5a410b2b2283
|
Provenance
The following attestation bundles were made for cocoindex_code-0.1.4.tar.gz:
Publisher:
release.yml on cocoindex-io/cocoindex-code
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cocoindex_code-0.1.4.tar.gz -
Subject digest:
942ed6cfdc676d542ca7523ec76ad5ebe9bce95f7311dabc86bbc479f2306519 - Sigstore transparency entry: 976729928
- Sigstore integration time:
-
Permalink:
cocoindex-io/cocoindex-code@1ac2d9bc3fd7d60a4740f63762b3a47a3d7b6637 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/cocoindex-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1ac2d9bc3fd7d60a4740f63762b3a47a3d7b6637 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cocoindex_code-0.1.4-py3-none-any.whl.
File metadata
- Download URL: cocoindex_code-0.1.4-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a82945c9dfda3bc14db7c191d51f4e3c2cc55abd2f2912a6de057318857bc324
|
|
| MD5 |
c6e81895c4d00a7357ae2feb6cd6d809
|
|
| BLAKE2b-256 |
dbf1a78ea2869ff7df92531ac10e5af3abd7e575354f4e0483b22744dfd0817d
|
Provenance
The following attestation bundles were made for cocoindex_code-0.1.4-py3-none-any.whl:
Publisher:
release.yml on cocoindex-io/cocoindex-code
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cocoindex_code-0.1.4-py3-none-any.whl -
Subject digest:
a82945c9dfda3bc14db7c191d51f4e3c2cc55abd2f2912a6de057318857bc324 - Sigstore transparency entry: 976729954
- Sigstore integration time:
-
Permalink:
cocoindex-io/cocoindex-code@1ac2d9bc3fd7d60a4740f63762b3a47a3d7b6637 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/cocoindex-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1ac2d9bc3fd7d60a4740f63762b3a47a3d7b6637 -
Trigger Event:
release
-
Statement type: