Atlas / MCP servers / velimirmueller / code-context-mcp

code-context-mcpBLOCK

mcp/velimirmueller/code-context-mcp

MCP server that indexes codebases into a SQLite database, exposing file metadata, exports, dependency graphs, and per-file change tracking.

Verdict
BLOCK
Grade
F
Trust score
39 /100
Exposed tools
109 68r · 34w · 7d
Transport
stdio
License
MIT
Stars
5
01

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

Read from source at commit a5d390613031OBSERVED · 2026-10-11
02

Connect

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-code
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]
claude-desktop
{
  "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}"
      }
    }
  }
}
03

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.

ToolRiskDescription
ArchitectreadDesigns system architecture and technical direction
DevreadBackend
DevOpsreadManages CI/CD, deployment, and infrastructure
DeveloperreadFull-stack developer building features across frontend and backend
FEread
M1readMilestone 1
Secread
acknowledge_ticket_changesreadAcknowledge 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_dependencywriteAdd a dependency between two tickets (blocks, blocked_by, or related)
add_retro_findingwriteAdd a retrospective finding to a sprint
add_tagwriteAdd a tag to a ticket (creates tag if it doesn
advance_sprintreadAdvance 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_patternsreadAnalyze retrospective findings across all sprints — category breakdown, recurring issues, and action follow-through rate
boomreadthrows
create_blockerwriteReport a blocker on a sprint
create_discoverywriteLog a finding from a discovery sprint
create_epicwriteCreate a new epic to group related tickets
create_milestonewriteCreate a new milestone for the product roadmap
create_sprintwriteCreate a new sprint
create_ticketwriteCreate a new ticket in a sprint
dump_databasereadExport the entire database to JSON for backup/restore
echoreadechoes
executedestructiveRun an INSERT, UPDATE, or DELETE against the context database
export_sprint_reportreadGenerate a complete markdown sprint report
export_to_filereadExport database to a JSON file on disk
find_symbolreadFind 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_animationreadGenerate project vision animation data (JSON) and provide the Remotion render command
get_agentreadGet full details of a scrum agent by role
get_audit_trailreadGet audit trail for an entity — all state changes over time
get_backlogreadList all backlog tickets — unassigned to any sprint or carried over from closed sprints
get_burndownreadGet burndown data for a sprint — daily snapshots of remaining vs completed points
get_changesreadGet recent file changes grouped by file path, showing what changed (size, lines, exports, summary diffs)
get_dependency_graphreadGet all dependencies for a ticket or sprint
get_discovery_coveragereadGet coverage report for a discovery sprint — auto-promotes planned discoveries whose linked ticket is DONE
get_file_contextreadGet a file
get_mood_trendsreadGet mood history for an agent or all agents — detects burnout patterns
get_onboarding_statusreadCheck project setup status and return what is configured vs missing
get_project_statuswriteCheck if the project is properly set up and return health status
get_resume_statereadSingle-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_skillreadFetch the full content of a single skill by name (e.g.
get_sprintreadGet full sprint details with tickets, bugs, blockers, and retro findings
get_sprint_configreadRead the SPRINT_PROCESS skill from the database — returns the current sprint process configuration
get_sprint_instructionsreadGet 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_playbookreadGet 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_summaryreadGet a one-line summary per sprint — name, status, velocity, ticket progress. Ultra-compact for quick overviews.
get_ticketreadGet full ticket details with subtasks and linked bugs
get_time_reportreadGet time tracking report for a sprint — estimated vs actual hours per agent
get_token_usagereadGet token usage history, optionally filtered by sprint or ticket
get_user_responsereadPoll for the user
get_velocity_trendsreadGet velocity trend data across sprints — committed vs completed, completion rate, bugs
handle_run_kickoffwriteHandle the /kickoff ceremony triggered from the dashboard. Initiates the full project lifecycle from vision through sprint rest using the kickoff skill.
handle_run_retrowriteHandle the retrospective ceremony triggered from the dashboard. Runs retro for the specified sprint.
handle_run_reviewwriteHandle the sprint review ceremony triggered from the dashboard. Shows sprint completion summary and demo.
healthreadCheck server health and connectivity
import_from_filewriteRestore database from a JSON dump file on disk
index_directoryreadScan 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_ticketreadLink a discovery finding to its implementation ticket — auto-sets status to planned (or implemented if ticket is DONE)
link_ticket_to_epicreadLink a ticket to an epic, or unlink by passing null epic_id
link_ticket_to_milestonereadLink a ticket to a milestone by setting its milestone_id
list_agentsreadList all scrum team agents with their roles and capabilities
list_decisionsreadList logged decisions with optional category filter
list_discoveriesreadList discovery findings with optional filters. Compact by default (open items, truncated one-liners) — pass verbose=true for full text and all statuses.
list_epicsreadList 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_milestonesreadList milestones with ticket progress. Archived milestones are hidden unless include_archived=true. Use compact=true for minimal output.
list_recent_eventsreadList 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_findingsreadList retrospective findings with optional filters
list_sprintsreadList all sprints with status and ticket counts. Use compact=true for minimal output (id, name, status only) to save tokens.
list_tagsreadList all available tags with usage counts
list_ticketsreadList tickets with optional filters. Use compact=true for minimal output (id, title, status) to save tokens.
load_phase_contextreadSingle-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_bugreadLog a bug against a sprint
log_decisionreadLog an architectural or process decision with rationale and alternatives considered
log_eventreadManually log an event in the audit trail
log_timereadLog estimated or actual hours on a ticket
log_token_usagereadRecord token usage for a session/task. Use at the end of a task to track real consumption for benchmarking.
plan_sprintwriteCreate a new sprint and assign tickets to it in one operation
querywriteRun a read-only SELECT query against the context database
record_moodreadRecord an agent
remove_dependencydestructiveRemove a dependency between two tickets
remove_tagdestructiveRemove a tag from a ticket
request_user_inputreadRequest 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_agentsdestructiveReset all agents to factory defaults. WARNING: This deletes all current agents and re-seeds from TypeScript defaults.
reset_skillsdestructiveReset all skills to factory defaults. WARNING: This deletes all current skills and re-seeds from TypeScript defaults.
reset_sprint_processdestructiveReset sprint process configuration to factory defaults.
resolve_blockerreadMark a blocker as resolved
restore_databasereadRestore database from a JSON dump. Wraps in transaction for safety.
run_onboardingwriteRun the full project onboarding sequence — checks and fixes all missing setup steps
search_filesreadSearch 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_scrumreadFull-text search across tickets, retro findings, blockers, and bugs
send_claude_outputwriteStream Claude
send_claude_stepwriteNotify the dashboard wizard about a step transition during a ceremony. Shows step status in the output stream panel.
send_step_progresswriteSend real-time step progress updates to the wizard modal. Shows which step Claude is executing and current progress.
set_change_reasonwriteSet a reason/explanation for a recorded file change
set_descriptionwriteSet a manual description for a file (persists across re-indexes)
set_directory_descriptionwriteSet a manual description for a directory (persists across re-indexes)
snapshot_sprint_metricsreadCapture a daily burndown snapshot for a sprint — records remaining, completed, added, and removed points
start_sprintwriteCreate 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_boomwritethrows synchronously
sync_scrum_datadestructiveRe-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_findingreadTriage 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_agentwriteUpdate a roster agent
update_discoverywriteUpdate a discovery
update_epicwriteUpdate an existing epic
update_milestonewriteUpdate a milestone
update_skill_setswriteEnable 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_sprintwriteUpdate sprint status or details
update_sprint_configwriteCreate or update the SPRINT_PROCESS skill — stores sprint process configuration in the database
update_ticketwriteUpdate a ticket
update_visionwriteCreate or update the PRODUCT_VISION skill content
04

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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (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)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
vendor/skills/frontend/set-up-auth/SKILL.md:30
| **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 |
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
vendor/skills/frontend/set-up-auth/SKILL.md:31
| **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
Why it matters. asks the agent to read credentials
HIGHPrivilege escalation / persistence · review.unsafe_action · CWE-269, CWE-250
.claude/commands/sprint-connect.md
Continue polling until 3 minutes have passed with no actions, then exit
Why it matters. The package instructs the agent to spawn a persistent background polling agent that runs autonomously without ongoing user supervision, and to re-spawn it automatically on timeout.
Fix. rewrite it so the instruction says plainly what it does, and asks the user before it acts
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/scrum/frontend-skill-defaults.generated.ts:158
"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
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/scrum/frontend-skill-defaults.generated.ts:163
"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
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/dashboard-bench.test.ts:162
const TOKEN = "test-bench-token-0123456789abcdef0123";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/dashboard-rebinding.test.ts:20
const TOKEN = "test-rebinding-token-0123456789abcdef";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/dashboard-route-parity.test.ts:37
const TOKEN = "test-route-parity-token-0123456789abcdef";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/milestone-epic-archive.test.ts:254
const TOKEN = "test-me-archive-token-0123456789abcdef";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test/sprint-archive.test.ts:128
const TOKEN = "test-archive-token-0123456789abcdef";
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
execute, remove_dependency, remove_tag, reset_agents, reset_skills, reset_sprint_process, sync_scrum_data
Why it matters. 7 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
vendor/skills/.source.json
.source.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/scrum/skill-sync.ts:87
return createHash("sha1").update(content).digest("hex");
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
test/freshness-security.test.ts:21
writeFileSync(path.join(outside, "id_rsa"), "PRIVATE KEY\n");
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
test/freshness-security.test.ts:59
const traversal = path.join(root, "../", path.basename(outside), "id_rsa");
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
test/freshness-security.test.ts:61
expect(new FreshnessGuard(db).indexIfEligible(path.join(root, "../../.ssh/id_rsa"))).toBe(false);
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
test/freshness-security.test.ts:63
expect(paths().some((p) => p.includes("id_rsa"))).toBe(false);
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
test/freshness-security.test.ts:71
symlinkSync(path.join(outside, "id_rsa"), link);
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/dashboard/app/vite.config.ts:18
outDir: path.resolve(__dirname, '../../../dist/dashboard'),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/dashboard/dashboard.ts:29
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'; } })();
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/dashboard/dashboard.ts:1156
const bundledPath = path.join(path.dirname(fileURLToPath(import.meta.url)), "../../comparison.json");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/dashboard/dashboard.ts:1167
const bundledBench = path.join(path.dirname(fileURLToPath(import.meta.url)), "../../benchmark-results.json");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/dashboard/dashboard.ts:1178
const bundledStoch = path.join(path.dirname(fileURLToPath(import.meta.url)), "../../benchmark-stochastic-results.json");
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/dashboard-auth.test.ts:130
expect(isAllowedOrigin("POST", "http://127.0.0.1:3333")).toBe(true);

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-11 · audit v0.4.1 · source sha a5d390613031full audit observations/trust-audit/mcp-server/velimirmueller__code-context-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11a5d390613031BLOCKF39first audit
06

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.

Advertisement