code-context-mcpBLOCK
MCP server that indexes codebases into a SQLite database, exposing file metadata, exports, dependency graphs, and per-file change tracking.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://www.npmjs.com/package/vlm-code-context-mcp) [](https://www.npmjs.com/package/vlm-code-context-mcp) [](LICENSE)
Read less. Know more.
█████ ████ █████ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █████ █████ ██ ██ ██ ██ ██ ██ █████ ████ █████ ██████ █████ ████ ██ ██ ██████ ██████ ██ ██ ██████ ██ ██ ██ ███ ██ ██ ██ ████ ██ ██ ██ ██ ██████ ██ █████ ██ ██ █████ ██ ██ ██ ██ ███ ██ ██ ████ ██ █████ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ █████ █████ ███ ███ ██ ██ ██ ███████ ██ █████ ██ █ ██ ██ ██ ██ ██ █████ ██ ██
An MCP server that gives AI coding agents a memory of your codebase and a sprint process. Your agents forget everything between sessions. This one file does not.
// 01 WHAT IT DOES
a5d390613031OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add sample-project --env CODE_CONTEXT_DASHBOARD_TOKEN=${CODE_CONTEXT_DASHBOARD_TOKEN} --env DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} --env GITHUB_TOKEN=${GITHUB_TOKEN} --env SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN} -- npx -y [email protected]{
"mcpServers": {
"sample-project": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"CODE_CONTEXT_DASHBOARD_TOKEN": "${CODE_CONTEXT_DASHBOARD_TOKEN}",
"DEEPSEEK_API_KEY": "${DEEPSEEK_API_KEY}",
"GITHUB_TOKEN": "${GITHUB_TOKEN}",
"SENTRY_AUTH_TOKEN": "${SENTRY_AUTH_TOKEN}"
}
}
}
}Exposed tools (109)
68 read · 34 write · 7 destructive. Blast radius: 7 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
Architect | read | Designs system architecture and technical direction |
Dev | read | Backend |
DevOps | read | Manages CI/CD, deployment, and infrastructure |
Developer | read | Full-stack developer building features across frontend and backend |
FE | read | |
M1 | read | Milestone 1 |
Sec | read | |
acknowledge_ticket_changes | read | Acknowledge board-edited tickets after reacting to their changes: clears pending_change flags and completes the corresponding ticket_changed bridge actions. Call after re-reading the tickets listed in a ⚠ CHANGED TICKETS block. |
add_dependency | write | Add a dependency between two tickets (blocks, blocked_by, or related) |
add_retro_finding | write | Add a retrospective finding to a sprint |
add_tag | write | Add a tag to a ticket (creates tag if it doesn |
advance_sprint | read | Advance sprint to the next phase. Checks all gates, advances if they pass, returns summary + next actions. If gates fail, returns what needs to be fixed. |
analyze_retro_patterns | read | Analyze retrospective findings across all sprints — category breakdown, recurring issues, and action follow-through rate |
boom | read | throws |
create_blocker | write | Report a blocker on a sprint |
create_discovery | write | Log a finding from a discovery sprint |
create_epic | write | Create a new epic to group related tickets |
create_milestone | write | Create a new milestone for the product roadmap |
create_sprint | write | Create a new sprint |
create_ticket | write | Create a new ticket in a sprint |
dump_database | read | Export the entire database to JSON for backup/restore |
echo | read | echoes |
execute | destructive | Run an INSERT, UPDATE, or DELETE against the context database |
export_sprint_report | read | Generate a complete markdown sprint report |
export_to_file | read | Export database to a JSON file on disk |
find_symbol | read | Find which file(s) export a given function, component, type, or constant. Results are checked against the disk first (changed files are re-indexed, deleted ones dropped) and carry their indexed_at. |
generate_vision_animation | read | Generate project vision animation data (JSON) and provide the Remotion render command |
get_agent | read | Get full details of a scrum agent by role |
get_audit_trail | read | Get audit trail for an entity — all state changes over time |
get_backlog | read | List all backlog tickets — unassigned to any sprint or carried over from closed sprints |
get_burndown | read | Get burndown data for a sprint — daily snapshots of remaining vs completed points |
get_changes | read | Get recent file changes grouped by file path, showing what changed (size, lines, exports, summary diffs) |
get_dependency_graph | read | Get all dependencies for a ticket or sprint |
get_discovery_coverage | read | Get coverage report for a discovery sprint — auto-promotes planned discoveries whose linked ticket is DONE |
get_file_context | read | Get a file |
get_mood_trends | read | Get mood history for an agent or all agents — detects burnout patterns |
get_onboarding_status | read | Check project setup status and return what is configured vs missing |
get_project_status | write | Check if the project is properly set up and return health status |
get_resume_state | read | Single-call resume detection. Returns minimal structured data (~150 tokens) for all command Step 0 flows. Replaces get_project_status + list_sprints + list_epics + list_discoveries. |
get_skill | read | Fetch the full content of a single skill by name (e.g. |
get_sprint | read | Get full sprint details with tickets, bugs, blockers, and retro findings |
get_sprint_config | read | Read the SPRINT_PROCESS skill from the database — returns the current sprint process configuration |
get_sprint_instructions | read | Get sprint process instructions — lifecycle, ticket workflow, retro rules, role responsibilities, and close checklist. Call with no args for full guide, or pass a section name. |
get_sprint_playbook | read | Get the current sprint playbook: phase, ticket summary, gate status, blockers, and directive next actions. Follow the actions listed — do not ask for confirmation. |
get_sprint_summary | read | Get a one-line summary per sprint — name, status, velocity, ticket progress. Ultra-compact for quick overviews. |
get_ticket | read | Get full ticket details with subtasks and linked bugs |
get_time_report | read | Get time tracking report for a sprint — estimated vs actual hours per agent |
get_token_usage | read | Get token usage history, optionally filtered by sprint or ticket |
get_user_response | read | Poll for the user |
get_velocity_trends | read | Get velocity trend data across sprints — committed vs completed, completion rate, bugs |
handle_run_kickoff | write | Handle the /kickoff ceremony triggered from the dashboard. Initiates the full project lifecycle from vision through sprint rest using the kickoff skill. |
handle_run_retro | write | Handle the retrospective ceremony triggered from the dashboard. Runs retro for the specified sprint. |
handle_run_review | write | Handle the sprint review ceremony triggered from the dashboard. Shows sprint completion summary and demo. |
health | read | Check server health and connectivity |
import_from_file | write | Restore database from a JSON dump file on disk |
index_directory | read | Scan a directory, parse all files, extract metadata/exports and build a dependency graph. Rows for files deleted from disk are pruned (scoped to the indexed path). Use freshness_check=true to skip re-indexing if the index is recent (<5 min), returning only a summary (~20 tokens). |
link_discovery_to_ticket | read | Link a discovery finding to its implementation ticket — auto-sets status to planned (or implemented if ticket is DONE) |
link_ticket_to_epic | read | Link a ticket to an epic, or unlink by passing null epic_id |
link_ticket_to_milestone | read | Link a ticket to a milestone by setting its milestone_id |
list_agents | read | List all scrum team agents with their roles and capabilities |
list_decisions | read | List logged decisions with optional category filter |
list_discoveries | read | List discovery findings with optional filters. Compact by default (open items, truncated one-liners) — pass verbose=true for full text and all statuses. |
list_epics | read | List epics with optional status and milestone filters, including ticket progress counts. Archived epics are hidden unless include_archived=true. Use compact=true for minimal output (id, name, status) to save tokens. |
list_milestones | read | List milestones with ticket progress. Archived milestones are hidden unless include_archived=true. Use compact=true for minimal output. |
list_recent_events | read | List recent events from the audit trail — use this to detect dashboard-initiated changes (e.g. user moved a ticket on the kanban board) |
list_retro_findings | read | List retrospective findings with optional filters |
list_sprints | read | List all sprints with status and ticket counts. Use compact=true for minimal output (id, name, status only) to save tokens. |
list_tags | read | List all available tags with usage counts |
list_tickets | read | List tickets with optional filters. Use compact=true for minimal output (id, title, status) to save tokens. |
load_phase_context | read | Single-call phase context loader. Bundles all data needed for a specific workflow phase into one response, replacing 2-5 separate tool calls per phase. |
log_bug | read | Log a bug against a sprint |
log_decision | read | Log an architectural or process decision with rationale and alternatives considered |
log_event | read | Manually log an event in the audit trail |
log_time | read | Log estimated or actual hours on a ticket |
log_token_usage | read | Record token usage for a session/task. Use at the end of a task to track real consumption for benchmarking. |
plan_sprint | write | Create a new sprint and assign tickets to it in one operation |
query | write | Run a read-only SELECT query against the context database |
record_mood | read | Record an agent |
remove_dependency | destructive | Remove a dependency between two tickets |
remove_tag | destructive | Remove a tag from a ticket |
request_user_input | read | Request user input via the dashboard wizard modal. Writes a question to the bridge action queue. If the dashboard is running, the question appears as a wizard step; if not, returns a fallback flag so the caller can ask in the terminal instead. |
reset_agents | destructive | Reset all agents to factory defaults. WARNING: This deletes all current agents and re-seeds from TypeScript defaults. |
reset_skills | destructive | Reset all skills to factory defaults. WARNING: This deletes all current skills and re-seeds from TypeScript defaults. |
reset_sprint_process | destructive | Reset sprint process configuration to factory defaults. |
resolve_blocker | read | Mark a blocker as resolved |
restore_database | read | Restore database from a JSON dump. Wraps in transaction for safety. |
run_onboarding | write | Run the full project onboarding sequence — checks and fixes all missing setup steps |
search_files | read | Search indexed files by path or summary (supports % wildcards). Results are checked against the disk first (changed files are re-indexed, deleted ones dropped) and carry their indexed_at. |
search_scrum | read | Full-text search across tickets, retro findings, blockers, and bugs |
send_claude_output | write | Stream Claude |
send_claude_step | write | Notify the dashboard wizard about a step transition during a ceremony. Shows step status in the output stream panel. |
send_step_progress | write | Send real-time step progress updates to the wizard modal. Shows which step Claude is executing and current progress. |
set_change_reason | write | Set a reason/explanation for a recorded file change |
set_description | write | Set a manual description for a file (persists across re-indexes) |
set_directory_description | write | Set a manual description for a directory (persists across re-indexes) |
snapshot_sprint_metrics | read | Capture a daily burndown snapshot for a sprint — records remaining, completed, added, and removed points |
start_sprint | write | Create a sprint with tickets in one call. Creates the sprint, creates tickets from provided list, assigns agents, links to milestone/epic, and returns the full sprint playbook for what to do next. |
sync_boom | write | throws synchronously |
sync_scrum_data | destructive | Re-seed scrum data from factory defaults (agents + skills). Does not overwrite existing data — only fills empty tables. Use reset_agents/reset_skills for full reset. |
triage_retro_finding | read | Triage an open try_next retro finding at sprint planning: adopt it as a ticket, drop it with a reason, or defer it to the next planning. The start_sprint planning gate requires every open try_next to be triaged (deferrals satisfy it for 24h). |
update_agent | write | Update a roster agent |
update_discovery | write | Update a discovery |
update_epic | write | Update an existing epic |
update_milestone | write | Update a milestone |
update_skill_sets | write | Enable or disable predefined skill sets (frontend fe:*, landing la:*, workflow wf:*) for this project. Partial update — omitted sets keep their current state. Enabled sets are indexed into phase context and served by get_skill. |
update_sprint | write | Update sprint status or details |
update_sprint_config | write | Create or update the SPRINT_PROCESS skill — stores sprint process configuration in the database |
update_ticket | write | Update a ticket |
update_vision | write | Create or update the PRODUCT_VISION skill content |
Trust audit
BLOCKgrade F · trust 39/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (8 observation(s))
- Network
- declared (7 observation(s))
- Shell
- declared (4 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
| **httpOnly cookie** (preferred) | server-set cookie, JS can't read it | you control the API/domain | XSS cannot read it, so a script injection cannot exfiltrate the session |
| **In-memory access + httpOnly refresh** | access token in a JS variable; refresh token in an httpOnly cookie | cross-domain token API | the long-lived secret is unreadable by JS; the short-lived one
Continue polling until 3 minutes have passed with no actions, then exit
"content": "---\nname: set-up-auth\ndescription: Use when adding authentication to a frontend SPA — current user as TanStack Query server state, tokens never in localStorage (httpOnly cookies, or in-m
"content": "# Auth Patterns\n\nReference for `set-up-auth`. The security-sensitive decisions, made the senior way.\n\n## Rule: tokens never go in `localStorage` / `sessionStorage`\n**Why:** Both are r
const TOKEN = "test-bench-token-0123456789abcdef0123";
const TOKEN = "test-rebinding-token-0123456789abcdef";
const TOKEN = "test-route-parity-token-0123456789abcdef";
const TOKEN = "test-me-archive-token-0123456789abcdef";
const TOKEN = "test-archive-token-0123456789abcdef";
execute, remove_dependency, remove_tag, reset_agents, reset_skills, reset_sprint_process, sync_scrum_data
.prettierignore
.source.json
return createHash("sha1").update(content).digest("hex");writeFileSync(path.join(outside, "id_rsa"), "PRIVATE KEY\n");
const traversal = path.join(root, "../", path.basename(outside), "id_rsa");
expect(new FreshnessGuard(db).indexIfEligible(path.join(root, "../../.ssh/id_rsa"))).toBe(false);
expect(paths().some((p) => p.includes("id_rsa"))).toBe(false);symlinkSync(path.join(outside, "id_rsa"), link);
outDir: path.resolve(__dirname, '../../../dist/dashboard'),
const PKG_VERSION = (() => { try { return JSON.parse(fs.readFileSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '../../package.json'), 'utf8')).version; } catch { return '2.0.0'; } })();const bundledPath = path.join(path.dirname(fileURLToPath(import.meta.url)), "../../comparison.json");
const bundledBench = path.join(path.dirname(fileURLToPath(import.meta.url)), "../../benchmark-results.json");
const bundledStoch = path.join(path.dirname(fileURLToPath(import.meta.url)), "../../benchmark-stochastic-results.json");
expect(isAllowedOrigin("POST", "http://127.0.0.1:3333")).toBe(true);Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.
a5d390613031full audit observations/trust-audit/mcp-server/velimirmueller__code-context-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | a5d390613031 | BLOCK | F | 39 | first audit |
Questions
What is the code-context-mcp MCP server?
MCP server that indexes codebases into a SQLite database, exposing file metadata, exports, dependency graphs, and per-file change tracking.
What tools does code-context-mcp expose?
109 in total: 68 read-only, 34 that write, and 7 that can delete or overwrite (execute, remove_dependency, remove_tag, reset_agents, reset_skills). Every one is listed on this page with its risk.
Is code-context-mcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (39/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 7 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does code-context-mcp need?
It reads CODE_CONTEXT_DASHBOARD_TOKEN, DEEPSEEK_API_KEY, GITHUB_TOKEN, SENTRY_AUTH_TOKEN, TURNSTILE_SECRET, ZAI_API_KEY and ZHIPU_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does code-context-mcp run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as sample-project at 0.1.0.
How current is this page?
The grade is for one exact copy of the source (a5d390613031), read on 2026-10-11. The repository is watched and re-audited when it changes.