The WindTools MCP Server is designed to provide document embedding and retrieval capabilities for codebases using ChromaDB and sentence transformers. It enables semantic code search, code repository indexing, and persistent storage of code embeddings.
list_dir
directory_path
(string): Path to list contents of, should be absolute path to a directory.get_initialization_status
index_repository
target_directories
(array of strings): List of absolute paths to directories to index.force_reindex
(boolean, optional): If true, reindex all files even if they already exist in the index.codebase_search
query
(string): Search query describing what you're looking for.limit
(integer, optional): Maximum number of results to return (default: 10).min_relevance
(float, optional): Minimum relevance score threshold (0.0 to 1.0).The WindTools MCP Server is built on these key components:
- ChromaDB: Vector database for storing and retrieving code embeddings.
- Sentence Transformers: Deep learning models for creating embeddings from code.
- FastMCP: Framework for building MCP-compliant servers.
- Async Lifespan Management: Efficient resource initialization and cleanup.
The server initializes ChromaDB and the embedding model in the background, allowing it to start accepting requests immediately while resource loading continues in the background. The get_initialization_status
tool can be used to check if the initialization is complete.
The server can be configured with the following environment variables:
- DATA_ROOT
: Absolute directory where ChromaDB database and model cache will be stored (default: a 'data' directory inside the package).
- CHROMA_DB_FOLDER_NAME
: Name of the folder where ChromaDB stores data (default: "default").
- SENTENCE_TRANSFORMER_PATH
: Path to the sentence transformer model (default: "jinaai/jina-embeddings-v2-base-code").
pip install windtools-mcp
git clone https://github.com/ZahidGalea/windtools-mcp
cd windtools-mcp
pip install -e .
Add the following to your claude_desktop_config.json
:
Using Python 3.11 as ChromaDB has issues with newer Python versions.
{
"mcpServers": {
"windtools": {
"command": "uvx",
"args": [\
"-p",\
"3.11",\
"-U",\
"windtools-mcp"\
],
"env": {
"DATA_ROOT": "/Users/<user>/windtools_data",
"CHROMA_DB_FOLDER_NAME": "chromadb",
"SENTENCE_TRANSFORMER_PATH": "jinaai/jina-embeddings-v2-base-code"
}
}
}
}
For developing:
# Install development dependencies
uv sync --dev
If you want to use locally:
pip install -e .
Configuration for local development:
{
"mcpServers": {
"windtools": {
"command": "uv",
"args": [\
"run",\
"windtools-mcp"\
],
"env": {
"DATA_ROOT": "/Users/<user>/windtools_data",
"CHROMA_DB_FOLDER_NAME": "chromadb",
"SENTENCE_TRANSFORMER_PATH": "jinaai/jina-embeddings-v2-base-code"
}
}
}
}
npx @modelcontextprotocol/inspector uvx -p 3.11 windtools-mcp
npx @modelcontextprotocol/inspector uv run windtools-mcp
pytest tests/
src/
windtools_mcp/
__init__.py
__main__.py
server.py
tests/
test_client.py
test_unit.py
.github/
workflows/
publish.yml
test.yml
.gitignore
.python-version
pyproject.toml
README.md
VERSION
The project version is managed centrally in the VERSION
file. The release process is automatic:
1. Update the version number in the VERSION
file.
2. Commit and push to the main
branch.
3. The GitHub Actions workflow will automatically:
- Detect the change in the VERSION
file.
- Create a git tag with the format v{VERSION}
.
- Generate a release on GitHub.
- Publish the package to PyPI.
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License.
Your own codebase tools like code semantic search.
Release v1.2.1 Latest\
\
Mar 17, 2025
No packages published