Cut AI token costs 95%+ on code exploration. The leading MCP server for precise, symbol-level GitHub code retrieval via tree-sitter AST. Works with Claude Code, Cursor & any MCP client. 313B+ tokens saved.
Drift inferred · capture-to-capture
- HIGH code analysis flagged committed secret ×4, dynamic code execution ×6 in jgravelle/jcodemunch-mcp
- HIGH code analysis flagged dynamic code execution in jgravelle/jcodemunch-mcp
- HIGH code analysis flagged dynamic code execution in jgravelle/jcodemunch-mcp
- HIGH code analysis flagged dynamic code execution in jgravelle/jcodemunch-mcp
- HIGH code analysis flagged dynamic code execution in jgravelle/jcodemunch-mcp
- HIGH code analysis flagged dynamic code execution in jgravelle/jcodemunch-mcp
transport stdio · streamable-http · http · sse counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit f41d956 · analyzer v28 · 2d ago
skills & prompt files 2
- agent-rules jgravelle-jcodemunch-mcp-f41d956/AGENTS.md
- agent-rules jgravelle-jcodemunch-mcp-f41d956/CLAUDE.md
danger signals10
- dynamic code execution __import__ sink jgravelle-jcodemunch-mcp-f41d956/cli/cli.py :7
sys.path.insert(0, __import__("os").path.join(__import__("os").path.dirname(__file__), "..", "src")) - dynamic code execution __import__ sink jgravelle-jcodemunch-mcp-f41d956/tests/test_branch_indexing.py :476
env={**__import__("os").environ, "GIT_AUTHOR_NAME": "Test", "GIT_AUTHOR_EMAIL": "test@test.com", - dynamic code execution __import__() jgravelle-jcodemunch-mcp-f41d956/tests/test_groq_explainer.py :133
return __import__(name, *args, **kwargs) - dynamic code execution __import__ sink jgravelle-jcodemunch-mcp-f41d956/tests/test_hardening.py :848
__import__("os").path.normcase("A") == "A", - dynamic code execution __import__ sink jgravelle-jcodemunch-mcp-f41d956/tests/test_org_license.py :22
monkeypatch.setattr(lic, "_license_key", lambda: __import__("os").environ.get("JCODEMUNCH_LICENSE_KEY", "").strip()) - dynamic code execution __import__ sink jgravelle-jcodemunch-mcp-f41d956/tests/test_resolve_repo.py :190
env={**__import__("os").environ, **env}, - committed secret Anthropic key jgravelle-jcodemunch-mcp-f41d956/tests/test_v1_108_199.py :289
sk-ant…(38 chars, redacted) - committed secret Anthropic key jgravelle-jcodemunch-mcp-f41d956/tests/test_v1_108_73.py :93
sk-ant…(53 chars, redacted) - committed secret OpenAI key jgravelle-jcodemunch-mcp-f41d956/tests/test_v1_108_73.py :100
sk-pro…(44 chars, redacted) - committed secret GitHub fine-grained PAT jgravelle-jcodemunch-mcp-f41d956/tests/test_v1_108_73.py :112
github…(64 chars, redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 667
filesystem 95
- fs jgravelle-jcodemunch-mcp-f41d956/.github/actions/health-radar/render_comment.py :16
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/munch-bench/munch_bench/cli.py :8
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/munch-bench/munch_bench/corpus.py :7
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/munch-bench/munch_bench/evaluate.py :122
with open(path, "w", encoding="utf-8") as f: - fs jgravelle-jcodemunch-mcp-f41d956/munch-bench/munch_bench/leaderboard.py :217
with open(output_path, "w", encoding="utf-8") as f: - fs jgravelle-jcodemunch-mcp-f41d956/speedreview/review.py :66
with open(event_path) as f: - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/delivery.py :15
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/digest.py :14
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/file_risk.py :13
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/health.py :17
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/init.py :7
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/install_pack.py :9
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/observatory.py :14
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/parity.py :15
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/receipt.py :24
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/reflect.py :15
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/skills.py :24
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/upgrade.py :21
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/whatsnew.py :21
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/config.py :10
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/embeddings/local_encoder.py :20
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/enrichment/lsp_bridge.py :33
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/evidence/scip.py :32
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/evidence/scip_ingest.py :25
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/groq/explainer.py :16
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/groq/voice.py :105
with wave.open(buf, "wb") as wf: - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/hook_event.py :6
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/org/license.py :37
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/org/store.py :14
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/_route_utils.py :14
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/base.py :14
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/dbt.py :12
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/decorator_routes.py :12
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/django.py :11
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/express.py :11
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/framework_profiles.py :15
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/git_blame.py :26
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/go_routers.py :11
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/laravel.py :15
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/nextjs.py :12
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/nuxt.py :12
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/rails.py :11
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/extractor.py :3516
from pathlib import Path as _Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/imports.py :8
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/parse_cache.py :40
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/retrieval/embed_drift.py :26
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/retrieval/freshness.py :22
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/retrieval/subject_state.py :33
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/retrieval/tuning.py :32
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/retrieval/verdict.py :718
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/ingest.py :27
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/otel.py :34
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/sql_ingest.py :35
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/sql_log.py :48
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/stack_ingest.py :32
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/stack_log.py :55
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime_identity.py :105
with open("/proc/self/stat", "r", encoding="ascii", errors="replace") as f: - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/security.py :4
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/server.py :15
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/service_installer.py :17
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/embedding_store.py :11
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/git_root.py :18
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/index_store.py :12
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/process_locks.py :42
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/process_registry.py :29
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/sqlite_store.py :11
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/token_tracker.py :40
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/_utils.py :5
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/analyze_perf.py :17
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/audit_agent_config.py :14
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/check_references.py :74
with open(full_path, "r", encoding="utf-8", errors="replace", newline="") as f: - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/digest.py :32
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_changed_symbols.py :8
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_project_intel.py :179
with open(fpath, "r", encoding="utf-8", errors="replace") as f: - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_repo_outline.py :153
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_symbol.py :7
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_watch_status.py :18
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/import_runtime_signal.py :12
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/import_scip.py :8
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/index_dependency.py :22
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/index_file.py :6
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/index_folder.py :12
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/list_workspaces.py :36
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/mermaid_viewer.py :15
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/observatory.py :42
import shutil - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/observatory_render.py :17
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/package_registry.py :9
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/plan_refactoring.py :6
from pathlib import PurePosixPath - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/resolve_repo.py :7
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/search_ast.py :25
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/search_text.py :150
with open(full_path, "r", encoding="utf-8", errors="replace") as f: - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/session_state.py :15
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/version_check.py :20
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/watch_all.py :24
from pathlib import Path - fs jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/watcher.py :13
from pathlib import Path
shell / exec 27
- shell jgravelle-jcodemunch-mcp-f41d956/speedreview/review.py :25
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/hooks.py :15
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/init.py :8
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/upgrade.py :22
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/enrichment/lsp_bridge.py :34
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/groq/explainer.py :17
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/hook_event.py :7
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/context/git_blame.py :25
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/retrieval/freshness.py :19
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/retrieval/subject_state.py :31
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/service_installer.py :18
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/git_root.py :17
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/index_store.py :8
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/digest.py :72
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_changed_symbols.py :6
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_churn_rate.py :14
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_delivery_metrics.py :31
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_file_risk.py :29
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_hotspots.py :18
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_symbol.py :5
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_symbol_provenance.py :21
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_tectonic_map.py :29
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/mermaid_viewer.py :16
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/observatory.py :43
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/resolve_repo.py :5
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/winnow_symbols.py :31
import subprocess - shell jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/watcher.py :8
import subprocess
network 9
- net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/cli/install_pack.py :12
import httpx - net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/embeddings/local_encoder.py :78
import urllib.request - net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/enrichment/lsp_bridge.py :695
from urllib.parse import unquote, urlparse - net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/org/license.py :123
import httpx - net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/org/report.py :12
import socket - net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/server.py :8044
import httpx # noqa: F401 - net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/token_tracker.py :987
import httpx - net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/summarizer/batch_summarize.py :10
from urllib.parse import urlparse - net jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/index_repo.py :10
from urllib.parse import urlparse
secrets 11
- secrets jgravelle-jcodemunch-mcp-f41d956/munch-bench/munch_bench/inference.py :70
api_key=api_key or os.environ.get("GROQ_API_KEY", ""), - secrets jgravelle-jcodemunch-mcp-f41d956/speedreview/review.py :31
GROQ_API_KEY = os.environ.get("GROQ_API_KEY", "") - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/credentials.py :100
import keyring # noqa: F401 (returned by reference) - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/groq/config.py :34
self.groq_api_key = os.environ.get("GROQ_API_KEY", "") - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/org/license.py :91
key = (os.environ.get("JCODEMUNCH_LICENSE_KEY") or "").strip() - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/org/report.py :26
token = os.environ.get("JCODEMUNCH_HTTP_TOKEN") - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/http_routes.py :141
return bool(os.environ.get("JCODEMUNCH_HTTP_TOKEN")) - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/server.py :6993
token = os.environ.get("JCODEMUNCH_HTTP_TOKEN") - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/summarizer/batch_summarize.py :405
api_key = os.environ.get("ANTHROPIC_API_KEY") - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/embed_repo.py :47
google_key = os.environ.get("GOOGLE_API_KEY", "").strip() - secrets jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/index_repo.py :328
github_token = os.environ.get("GITHUB_TOKEN")
database 21
- db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/evidence/scip_ingest.py :23
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/org/store.py :13
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/parser/parse_cache.py :39
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/confidence.py :33
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/ingest.py :25
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/resolve.py :25
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/sql_ingest.py :33
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/runtime/stack_ingest.py :30
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/embedding_store.py :10
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/sqlite_store.py :12
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/storage/token_tracker.py :34
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/_scip_consume.py :18
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/check_delete_safe.py :92
import sqlite3 # noqa: PLC0415 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/find_hot_paths.py :35
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/find_references.py :296
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/find_unused_paths.py :52
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_group_contracts.py :110
import sqlite3 # noqa: PLC0415 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_pr_risk_profile.py :32
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_redaction_log.py :37
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_runtime_coverage.py :30
import sqlite3 - db jgravelle-jcodemunch-mcp-f41d956/src/jcodemunch_mcp/tools/get_symbol_provenance.py :20
import sqlite3
declared dependencies 20
- mcp@>=1.10.0,<2.0.0
- httpx@>=0.27.0
- tree-sitter-language-pack@>=0.7.0,<1.0.0
- pathspec@>=0.12.0
- pyyaml@>=6.0
- anthropic@>=0.40.0
- google-generativeai@>=0.8.0
- openai@>=1.0.0
- uvicorn@>=0.20.0
- starlette@>=1.3.1
- anyio@>=4.0.0
- watchfiles@>=1.0.0
- sentence-transformers@>=2.2.0
- onnxruntime@>=1.16.0
- sounddevice@>=0.4.6
- numpy@>=1.24.0
- Pillow@>=10.0.0
- keyring@>=24.0
- rich@>=13.0
- jinja2@>=3.1