Common issues and their solutions.
Symptom: index_folder completes but reports 0 files indexed.
Cause: All files matched a skip pattern (directory name, file extension,
or .gitignore rule).
Fix:
- Check
discovery_skip_countsin the response — it breaks down how many files were skipped and why (binary extension, secret filter, gitignore, etc.). - If a directory is being skipped that shouldn't be, check if its name
matches a built-in skip pattern (node_modules, pycache, .git, etc.)
or a pattern in
JCODEMUNCH_EXTRA_IGNORE_PATTERNS. - Run with
extra_ignore_patterns=[]to disable extra patterns and see if files appear.
Symptom: All symbols have generic "signature fallback" summaries instead of natural-language descriptions.
Cause: AI summarization requires both an API key and the corresponding optional package installed.
Fix:
- For Claude summaries:
pip install "jcodemunch-mcp[anthropic]"and setANTHROPIC_API_KEY. - For Gemini summaries:
pip install "jcodemunch-mcp[gemini]"and setGOOGLE_API_KEY. - For local LLM: set
OPENAI_API_BASEto your endpoint (e.g.,http://127.0.0.1:11434/v1for Ollama). - To verify: re-index and check the server logs for
"AI summarization failed, falling back to signature"warnings. - To disable: set
JCODEMUNCH_USE_AI_SUMMARIES=0.
Symptom: index_repo fails with 403 Forbidden or 429 Too Many Requests.
Cause: GitHub's unauthenticated API limit is 60 requests/hour.
Fix:
- Set
GITHUB_TOKENto a personal access token (no special scopes needed for public repos). - Authenticated requests get 5,000 requests/hour.
- The server retries rate-limited requests with exponential backoff (up to 3 attempts).
Symptom: find_importers or find_references returns {"importers": []}
even for files you know are imported.
Cause: The import graph is only built during indexing with jcodemunch v1.3.0+. Indexes created by older versions don't have import data.
Fix: Re-index the repository:
index_folder(path="/your/project")
After re-indexing, find_importers and find_references will work.
Symptom: search_columns returns an error about missing column metadata.
Cause: Column metadata is only extracted from dbt or SQLMesh projects that have model YAML files with column definitions.
Fix:
- Ensure your project has dbt
schema.ymlor SQLMesh model files with column definitions. - Re-index the project — the dbt/SQLMesh provider extracts column metadata during indexing.
- Check that the index includes
context_metadatawithdbt_columnsorsqlmesh_columnskeys.
Symptom: An index created on one machine doesn't work on another.
Cause: Local indexes store source_root as an absolute path
(e.g., /home/alice/projects/myapp). File content is cached relative
to this path.
Fix: Re-index on the target machine. Indexes are designed to be
machine-local. For shared environments, use index_repo (remote GitHub
indexing) which doesn't depend on local paths.
Symptom: index_folder never completes on Windows.
Cause: Two known issues (both fixed in v1.1.7):
- Git subprocess inherits MCP stdin pipe, causing protocol corruption.
- NTFS junctions (reparse points) cause infinite directory walks.
Fix:
- Upgrade to jcodemunch-mcp >= 1.1.7.
- If still stuck, check for circular NTFS junctions in your project directory tree.
Symptom: --transport sse or --transport streamable-http fails with
ImportError or connection refused.
Cause: HTTP transport dependencies are optional.
Fix:
pip install "jcodemunch-mcp[http]"Then restart with --transport sse or --transport streamable-http.
Symptom: HTTP transport returns 401 for all requests.
Cause: JCODEMUNCH_HTTP_TOKEN is set, requiring bearer token auth.
Fix: Include the token in your MCP client's Authorization header:
Authorization: Bearer <your-JCODEMUNCH_HTTP_TOKEN-value>
Symptom: load_index returns None with a log warning about checksum mismatch.
Cause: The index file was modified outside of jcodemunch (hand-edited, corrupted, or tampered with).
Fix: Re-index the repository. The checksum sidecar (.json.sha256) will
be regenerated automatically.