Codna
OfficialThis server lets an agent understand, search, secure, fix, and provide feedback on code repositories via five Codna MCP tools.
codna_triage: Locate files relevant to an issue in a repo; deterministic, 0 LLM tokens.
codna_recall: Semantic/lexical search over locally indexed code symbols; offline, 0 LLM tokens.
codna_secure: Ingest a SARIF report and classify which scanner findings are reachable/exploitable; read-only, 0 LLM tokens.
codna_fix: Plan a bug fix read-only, or optionally open a PR with the fix (requires git URL + GITHUB_TOKEN).
codna_report_bug: File a bug/feature/question to the thyn-ai/feedback repo, or get a pre-filled issue URL.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CodnaTriage the checkout total bug and list suspect files"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Codna
Understand. Fix. Evolve.
Agents read your code. Codna understands it.
Codna maps a repository before it spends a token. It then reviews pull requests, fixes bugs and
proves which scanner findings are reachable. The same codna command runs on your machine, in the
GitHub Action and behind the GitHub App.
Runs on your machine or your cloud. Your code never leaves without your key.
Install
pip install codna # or: pipx install codna · uv tool install codna
codna --versionPython 3.12–3.13. Wheels for macOS on Apple silicon and Linux x86_64. git on your PATH.
Nothing else to install: no Node, Bun, Docker or server. The agent runtime ships inside the wheel.
Local commands need no Codna key. fix and review use your own model provider key, stored in
the OS keychain and never printed:
codna key set anthropic # also: openai, gemini, google, groq, mistral, openrouter, xai, cursorRelated MCP server: Probe Server
Commands
codna triage . --issue "checkout total is wrong" # suspect files. Deterministic. 0 LLM tokens.
codna review . --pr 123 --post # findings with a verdict on the pull request
codna fix . --tests --apply --max-iterations 3 # patch, re-run your tests, re-fix until green
codna fix <git url> --ref <sha> --issue "…" --open-pr # push a branch and open a pull request
codna secure . --from-sarif results.sarif # which scanner findings are reachable. 0 LLM tokens.codna fix prints the root cause, the impacted symbols, the blast radius, its confidence and a
regression risk. --open-pr needs a git URL and a GitHub write token. codna review posts one
inline comment per finding with severity, category and a suggestion block, and an Approve when the
diff is clean at medium and high. codna secure reads SARIF 2.1.0 from CodeQL, Semgrep, Snyk,
Trivy or any other scanner.
Other commands: init, status, doctor, login, key, impact, memory export, report.
Full reference: docs.codna.ai/reference/cli.
MCP server
Run Codna as a Model Context Protocol server over stdio — the same engine the CLI uses, inside Cursor, Claude Desktop, or your own agent:
pipx install "codna[mcp]" # or: pip install "codna[mcp]"
codna mcp # serve over stdio
codna mcp install --client cursor # optional: write the client config for you (or --client claude)Five tools, each returning JSON; a failure comes back as codna_<tool> error: … text and never
crashes the server:
Tool | What it does | Needs |
| Understand a repo and locate the code relevant to an issue. Deterministic, 0 LLM tokens. | free |
| Prove which SARIF scanner findings (CodeQL, Semgrep, Snyk, Trivy) are reachable. Read-only, 0 LLM tokens. | free |
| Recall code from local on-device memory — semantic + lexical search, fully offline. | free |
| Root-cause and plan a fix (read-only by default); with | free |
| File a bug, feature, or question to thyn-ai/feedback. | free |
Introspection (initialize/tools/list) needs no credentials. Executing any of the five tools
requires the one-time free community login (codna login — device authorization, free community
license) — fully offline thereafter. codna_fix additionally needs a provider key (BYOK, e.g.
ANTHROPIC_API_KEY); codna_report_bug needs GITHUB_TOKEN or it returns a pre-filled issue
URL; codna_recall additionally uses the on-device memory runtime that the same codna login
installs.
Full reference:
docs.codna.ai/guides/mcp.
Code memory
Code memory and recall run on your machine after a one-time free codna login (device
authorization), which also installs the signed on-device runtime. From then on, recall runs fully
offline: no key, no network calls. The optional
codna[memory] extra adds the on-device semantic reranker; without it, recall ranks lexically.
What leaves your machine
Repository mapping, triage, recall and
impactrun offline. No model is involved.fixandreviewsend one issue-specific evidence bundle to the provider you chose, under your key. Not the repository.Secret redaction is always on and cannot be turned off.
privacy.egress: fail-closedincodna.yamlrefuses to run tests without network denial and skips registry lookups during review.Source distributions exclude runtime binaries, keys,
.envfiles and logs.
Links
Homepage: https://codna.ai
Documentation: https://docs.codna.ai
Source (public mirror): https://github.com/thyn-ai/codna-cli
Security: https://codna.ai/security
Available Tools
5 toolscodna_fixA
Find and fix a bug. Runs the full Codna agent + engine + risk simulation.
Requires the one-time free codna login device authorization (free community
license) plus a provider key (BYOK — e.g. ANTHROPIC_API_KEY or codna key set anthropic). Offline truth: planning calls the provider API (network), and only
open_pr=true writes to GitHub — codna_triage, codna_secure and codna_recall are
the fully-offline tools.
Returns the root cause, confidence, model, and (when open_pr) the pull_request_url. Failures come back as 'codna_fix error: ...' text — the tool never raises.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag, or commit to analyze: the planner's repository snapshot is taken at this ref (registration forwards it to create_repository_snapshot). Default '': the repo's current state — the checkout as-is for a local path, the default branch for a git URL. | |
| repo | No | A local path or a git URL. open_pr=true requires a git URL (a local checkout has no remote to push to). Default '.': the current directory, or the server default set by `codna mcp start --repo` (env CODNA_MCP_DEFAULT_REPO). | . |
| issue | No | What's broken — e.g. the failing test or the observed behavior. Required when open_pr=true; otherwise optional but strongly recommended (an empty issue yields a generic repo-wide plan). | |
| model | No | Provider-qualified planner model, e.g. openai/gpt-5. Default 'repository.verified_agentic_v1' (codna's verified agentic runtime). | repository.verified_agentic_v1 |
| open_pr | No | false (default): READ-ONLY plan — returns root cause, confidence and a patch reference, and changes nothing. true: pushes a fix branch and OPENS A PULL REQUEST — needs a git URL for repo and GITHUB_TOKEN (or CODNA_GITHUB_TOKEN) with write access; returns pull_request_url. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses network dependence, GitHub write behavior conditional on open_pr, the return payload (root cause, confidence, model, pull_request_url), and the failure contract ('codna_fix error: ...' text, tool never raises). This is substantially more behavioral context than the annotations alone provide, and it does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well structured: purpose first, then prerequisites/offline truth, then return values and failure behavior. Every sentence carries operational weight, and the most important constraints (network, writes, failure mode) are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with auth requirements, network calls, conditional GitHub writes, offline sibling alternatives, an output schema, and special failure behavior, the description covers all key non-schema context. The output schema handles return details, so nothing critical is missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has detailed descriptions covering defaults, required conditions, and side effects. The description adds general context like auth and output shape but not new per-parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Find and fix a bug') and immediately clarifies the full scope: running the Codna agent, engine, and risk simulation. It also distinguishes itself from fully-offline siblings by naming codna_triage, codna_secure, and codna_recall as offline alternatives, so an agent can separate fix behavior from triage/recall/secure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: it requires codna login and a provider key, explains that planning needs network access, and states that only open_pr=true writes to GitHub. It also points to the fully-offline sibling tools as alternatives when offline behavior is required, which is clear when-to-use vs when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codna_recallARead-onlyIdempotent
Recall relevant code from the local on-device Telys memory — semantic + lexical search over the symbols this machine has already indexed, with zero LLM tokens and zero network calls.
Use when you need the code behind a concept ("where is SARIF provenance validated?")
rather than a whole-repo map (codna_triage) — and when you want it offline. The index
is built on first use (an empty index auto-indexes the repo, once) and is stored
outside the git checkout. On a fresh machine, first use requires the one-time free
codna login device authorization (free community license); the on-device memory
runtime arrives via the login-gated runtime install. After that, recall is fully
offline with no key and no network calls.
repo: a local path or git URL (default: current directory, or the server default set
by codna mcp start --repo).
query: what to recall (required — an empty query returns an error string).
service: optional service name to scope recall to one service in a monorepo
(default: all services).
language: optional language filter such as "python" (default: all indexed languages).
final_k: maximum number of symbols to return (default: 8).
Returns matching symbols, the ranking explanation, and the candidate count as JSON.
Failure modes (missing query, Telys memory not installed, unreadable repo) come back
as "codna_recall error: ..." text — the tool never raises.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | . | |
| query | No | ||
| final_k | No | ||
| service | No | ||
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and idempotentHint=true, but the description adds substantial behavioral context: zero LLM tokens/network calls, auto-index on first use, storage outside git, login requirement, and the explicit failure-mode contract ('never raises', returns error text). This goes well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized in clear blocks: core purpose, usage guidance, parameter list, return format, and failure modes. While long, every sentence adds value and the critical scoping statement is front-loaded. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, setup requirements, failure modes), the description covers everything an agent needs: return JSON shape, error handling, login flow, and default behaviors. The output schema exists but the description still summarizes the return structure, making it self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the sole source of parameter meaning. It explains every parameter with concrete semantics: repo (path/URL, default), query (required, empty error), service (scoping), language (filter), final_k (count, default). This fully compensates for the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific verb and resource: 'Recall relevant code from the local on-device Telys memory' with the mechanism 'semantic + lexical search'. It explicitly differentiates from codna_triage by contrasting 'code behind a concept' vs 'whole-repo map', so an agent can distinguish siblings without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on when to use it ('Use when you need the code behind a concept... and when you want it offline') and names the alternative (codna_triage). It also covers prerequisites like first-use login and the default repo behavior, leaving no ambiguity about invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codna_report_bugA
File a report to thyn-ai/feedback — the public front door for algenta, codna, telys,
and sqai. Files the same shape of issue codna report (the CLI) does.
It only files the issue — codna_fix is the one that can open a PR with the fix.
Requires the one-time free codna login device authorization (free community
license); auto-filing additionally needs a GitHub token (else a pre-filled URL).
title: a short summary, e.g. "codna fix hangs on a monorepo".
body: what happened, or what you want — as much detail as you have.
product: one of algenta, codna, telys, sqai, accounts, docs (default: codna).
include_diagnostics: attach the same redacted output codna doctor prints — no secret
values, only which config sources are set. Off by default.
Returns the filed issue's URL, or — if it couldn't file automatically (no GitHub token
reachable, offline) — a pre-filled URL for a human to finish submitting.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| title | Yes | ||
| product | No | codna | |
| include_diagnostics | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry only generic flags (readOnly=false, destructive=false), so the description carries the behavioral burden — and it delivers: auth prerequisites, the GitHub-token-dependent auto-filing path with a pre-filled URL fallback, the redaction guarantee ('no secret values'), and consistency with the CLI ('same shape of issue codna report does'). No contradiction with readOnlyHint=false, since filing a report is a write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, sibling boundary, prerequisites, one labeled line per parameter, and return behavior. The core purpose is front-loaded and the parameter block is scannable; the only minor blemish is the repeated 'free' in the license note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a 4-parameter mutation tool: it covers selection (purpose and sibling routing), invocation (parameter semantics), prerequisites (login and GitHub token), and fallback behavior, and it even describes the return value (issue URL vs pre-filled URL) despite an output schema already existing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates. It adds meaning to all four parameters: a worked example for title, guidance on body detail, an explicit enumeration of valid product values ('algenta, codna, telys, sqai, accounts, docs') that the schema lacks (no enums defined), and a privacy/redaction note for include_diagnostics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource — 'File a report to thyn-ai/feedback' — and identifies the tool as the public front door for the four products. It also distinguishes itself from a sibling: 'It only files the issue — codna_fix is the one that can open a PR with the fix.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says when to use the tool (to file a report/issue), names the alternative for a different goal (codna_fix for a PR), and lists prerequisites: the one-time codna login device authorization and the GitHub token required for auto-filing, including the offline/no-token fallback to a pre-filled URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codna_secureARead-onlyIdempotent
Prove which scanner findings are reachable. Ingests a SARIF 2.1.0 report (CodeQL / Semgrep / Snyk / Trivy), classifies each finding (exploitable / production-reachable / unreachable / unknown) via the local engine, and reports which are autofix-eligible. Read-only, deterministic, 0 LLM tokens — the SARIF file is the only input read; the repo is never scanned and the agent sidecar never starts.
sarif_path is REQUIRED (see the input schema) — there is no workspace scan or
default-path fallback. SARIF provenance (tool name + revision) must be complete or the
report is rejected. All failures come back as 'codna_secure error: ...' text — the
tool never raises.
Requires the one-time free codna login device authorization (free community
license); fully offline thereafter.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag, or commit the SARIF was produced from. Accepted for parity with `codna secure --ref`; informational only in the MCP path — the local SARIF-only classifier does not resolve it. Default ''. | |
| repo | No | Repository the findings belong to (a local path or a git URL), echoed as 'repository' in the output for traceability. The classification reads ONLY the SARIF file — repo is never scanned. Default '.': the current directory, or the server default set by `codna mcp start --repo` (env CODNA_MCP_DEFAULT_REPO). | . |
| sarif_path | Yes | Path to the scanner's SARIF 2.1.0 report (CodeQL, Semgrep, Snyk, Trivy, or any other scanner). REQUIRED — there is no auto-discovery: omitting it fails input validation, and an empty string returns 'codna_secure error: sarif_path is required'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give readOnlyHint, openWorldHint=false, idempotentHint. The description adds rich context beyond those: deterministic, 0 LLM tokens, repo never scanned, agent sidecar never starts, one-time codna login device authorization required and fully offline thereafter, and all failures returned as 'codna_secure error: ...' text with no raising. No contradiction — read-only matches, openWorld=false matches the no-scan claim, idempotent matches deterministic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence. Three dense paragraphs each earn their place — core purpose/traits, input requirements/error contract, auth prerequisite — with no dead weight. Slightly verbose but tightly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return format is covered. The description covers inputs, failure modes, auth, determinism, and absence of side effects. Nothing an agent needs to invoke it correctly is missing; complexity (SARIF ingestion + classification) is well matched by the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds genuine value: sarif_path is REQUIRED with no auto-discovery or fallback, SARIF provenance must be complete or the report is rejected, and repo is echoed only for traceability while never being scanned. These constraints go beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Prove which scanner findings are reachable,' then details exact mechanics — ingests a SARIF 2.1.0 report (CodeQL/Semgrep/Snyk/Trivy), classifies each finding into four explicit categories, and reports autofix-eligibility. Unambiguous and clearly distinct from the fix/triage/report/recall siblings, establishing this as the read-only analysis step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('reports which are autofix-eligible' hints at running before codna_fix) but never explicit. No sibling is named and no when-to-use vs. when-not conditions are given; alternative routing is left to inference. Error behavior and auth prerequisites are documented, but those are behavioral, not selection, guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
codna_triageARead-onlyIdempotent
Understand a repository and locate the code relevant to an issue.
The sibling tools act, this one maps: codna_fix plans/acts on one bug and codna_recall retrieves stored code memory — triage is the zero-token map + suspect-file list you run first.
Requires the one-time free codna login device authorization (free community
license); fully offline thereafter.
repo: a local path or a git URL (default: current directory). issue: optional description of what you're looking for. Returns suspect files + the context-reduction the engine achieved (0 LLM tokens).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | . | |
| issue | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds meaningful behavioral context beyond those annotations: it requires a one-time 'codna login' device authorization, is 'fully offline thereafter,' and produces '0 LLM tokens,' clarifying the tool's resource and connectivity profile. No contradiction exists between the description and the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core purpose appears in the first sentence, followed by sibling contrast, auth prerequisite, parameters, and output summary. Every segment earns its place; there is no filler or repetitive restating of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with an output schema, the description is complete enough: it covers purpose, sibling alternatives, login requirement, offline behavior, input meanings, and return shape. The optional output schema covers return details, so nothing critical is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears the full burden, and it largely succeeds: repo is explained as 'a local path or a git URL (default: current directory),' and issue as 'optional description of what you're looking for.' The repo semantics are strong; the issue semantics are functional but somewhat terse, so a small gap remains in explaining what constitutes a useful issue input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific activity and resource: 'Understand a repository and locate the code relevant to an issue,' with a concrete output ('suspect files + the context-reduction'). It explicitly differentiates from sibling tools by labeling codna_fix as 'plans/acts on one bug' and codna_recall as 'retrieves stored code memory,' while positioning triage as the 'zero-token map + suspect-file list you run first.' This distinguishes the tool clearly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: triage is 'the... list you run first,' and codna_fix and codna_recall are named with their differing roles, so an agent can select this tool before acting. It also flags the one-time login prerequisite. It does not explicitly state when not to use triage or mention codna_report_bug/codna_secure, so it falls just short of fully explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.6- Changed
codna_fix5 fields changed- added
Input schema / properties / issue / descriptionAdded value: +"What's broken — e.g. the failing test or the observed behavior. Required when open_pr=true; otherwise optional but strongly recommended (an empty issue yields a generic repo-wide plan)." - added
Input schema / properties / model / descriptionAdded value: +"Provider-qualified planner model, e.g. openai/gpt-5. Default 'repository.verified_agentic_v1' (codna's verified agentic runtime)." - added
Input schema / properties / open_pr / descriptionAdded value: +"false (default): READ-ONLY plan — returns root cause, confidence and a patch reference, and changes nothing. true: pushes a fix branch and OPENS A PULL REQUEST — needs a git URL for repo and GITHUB_TOKEN (or CODNA_GITHUB_TOKEN) with write access; returns pull_request_url." - added
Input schema / properties / ref / descriptionAdded value: +"Branch, tag, or commit to analyze: the planner's repository snapshot is taken at this ref (registration forwards it to create_repository_snapshot). Default '': the repo's current state — the checkout as-is for a local path, the default branch for a git URL." - added
Input schema / properties / repo / descriptionAdded value: +"A local path or a git URL. open_pr=true requires a git URL (a local checkout has no remote to push to). Default '.': the current directory, or the server default set by `codna mcp start --repo` (env CODNA_MCP_DEFAULT_REPO)."
1 tool update
v0.1.5- Changed
codna_secure5 fields changed- added
Input schema / properties / ref / descriptionAdded value: +"Branch, tag, or commit the SARIF was produced from. Accepted for parity with `codna secure --ref`; informational only in the MCP path — the local SARIF-only classifier does not resolve it. Default ''." - added
Input schema / properties / repo / descriptionAdded value: +"Repository the findings belong to (a local path or a git URL), echoed as 'repository' in the output for traceability. The classification reads ONLY the SARIF file — repo is never scanned. Default '.': the current directory, or the server default set by `codna mcp start --repo` (env CODNA_MCP_DEFAULT_REPO)." - removed
Input schema / properties / sarif_path / defaultRemoved value: -"" - added
Input schema / properties / sarif_path / descriptionAdded value: +"Path to the scanner's SARIF 2.1.0 report (CodeQL, Semgrep, Snyk, Trivy, or any other scanner). REQUIRED — there is no auto-discovery: omitting it fails input validation, and an empty string returns 'codna_secure error: sarif_path is required'." - added
Input schema / requiredAdded value: +[ + "sarif_path" +]
5 tool updates
v0.1.0- First observed
codna_fix - First observed
codna_recall - First observed
codna_report_bug - First observed
codna_secure - First observed
codna_triage
TDQS
Scored across 5 tools
Each tool targets a clearly distinct workflow: triage maps issues to suspect files, fix performs the actual bug fix, recall searches local code memory, secure classifies SARIF findings, and report_bug files feedback. There is minor conceptual overlap between triage and recall, but their descriptions draw a clear line between whole-repo mapping and concept-level symbol recall.
All tools share the codna_ prefix and use lowercase imperative verbs, giving a predictable and recognizable pattern. The only small deviation is report_bug, which appends an object noun, while the others are bare verbs.
Five tools is well-scoped for a coding-agent server: triage, fix, recall, secure, and bug reporting each cover a distinct high-level capability without redundancy. The count feels intentional rather than padded.
The toolset covers the main workflows an agent needs: locating relevant code, fixing bugs, recalling indexed symbols, verifying security findings, and reporting issues. Minor gaps exist such as no general issue-creation tool or explicit test/verify step, but these can be worked around via the CLI or GitHub.
Maintenance
Related MCP Connectors
Scan any public GitHub MCP-server repo for security issues. 37 MCP-specific L1 rules, 8 languages.
Remote MCP for tool license checks, vendor policy review, alternatives, and license receipts.
Repository knowledge graph MCP server for codebase understanding and debugging.
MCP server for static security analysis of Android source code
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for persistent code exploration and diff-aware review, exposing explore and review tools to map call paths, blast radius, and generate explainable risk-scored reports.3 npm2MIT
- AlicenseNot gradedqualityBmaintenanceProvides a set of MCP tools to clone and analyze arbitrary MCP server repositories, run static and dynamic security probes in isolated Docker containers, and produce vulnerability verdicts with a human-in-the-loop approval step before filing public reports.MIT
- AlicenseNot gradedqualityCmaintenanceProvides MCP tools for fetching GitHub PR diffs, searching codebases, running unit tests, and linting code, enabling automated code review and CI/CD workflows.MIT

Celmis MCP Serverofficial
AlicenseNot gradedqualityAmaintenanceEnables querying indexed code across multiple repositories with file-level citations, reviewing pull requests, auditing dependencies, and exporting SBOMs and evidence packs through MCP tools.3AGPL 3.0