You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4c5a75c
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .claude-plugin/marketplace.json
+5-5Lines changed: 5 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -6,19 +6,19 @@
6
6
},
7
7
"metadata": {
8
8
"description": "CodeAnt AI CLI and MCP server — org-wide secret triage, cross-repo SAST/SCA findings, on-demand scans, and local PR review inside Claude.",
9
-
"version": "0.4.14"
9
+
"version": "0.5.10"
10
10
},
11
11
"plugins": [
12
12
{
13
13
"name": "codeant",
14
-
"source": "./.",
15
-
"description": "Drive CodeAnt AI from inside Claude Code via the CodeAnt MCP server. Read-only by default; write tools (trigger scan, resolve PR thread) gated behind CODEANT_READ_ONLY=0.",
16
-
"version": "0.4.14",
14
+
"source": "./",
15
+
"description": "Drive CodeAnt AI from inside Claude Code via the CodeAnt MCP server. Read-only by default; write tools (trigger scan, resolve PR thread, write API requests) gated behind CODEANT_READ_ONLY=0.",
Copy file name to clipboardExpand all lines: .claude-plugin/plugin.json
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,13 @@
1
1
{
2
2
"name": "codeant",
3
-
"version": "0.4.14",
3
+
"version": "0.5.10",
4
4
"description": "CodeAnt AI MCP server inside Claude Code — org-wide secret triage, cross-repo SAST/SCA findings, on-demand scans, and local PR review.",
Copy file name to clipboardExpand all lines: changelog.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,17 @@
1
1
# Changelog
2
2
3
+
## [0.5.10] - 03/10/2026
4
+
- MCP: parallel `codeant_scans_results` calls no longer swallow other tool responses, leak findings onto the protocol stream, or hang the server
5
+
- MCP: `codeant_login` returns the sign-in link right away and finishes in the background (call it again to confirm); a missing browser launcher no longer crashes the server
6
+
- MCP: the saved token is read on every request, so `codeant login` / `codeant logout` in a terminal take effect without restarting the server
7
+
- MCP: `codeant_review_local` reports failures (for example, no git repository) as errors instead of an empty issue list
8
+
- MCP: smaller results — compact JSON, slim and paged `codeant_scans_repos`, `codeant_pentest_history`, and cloud scan history, paged CSPM findings without compliance mappings, smaller default page sizes, and a size limit (`CODEANT_MCP_MAX_RESULT_CHARS`, default 80000) that refuses oversized results with a hint
9
+
- MCP: the server sends instructions that tell agents how to discover, page, and recover authentication (including `force: true` when a configured token is rejected)
10
+
- MCP: concurrent `codeant_login` calls share one sign-in; `codeant_cloud_scan_history` pages with `offset`
11
+
- MCP: removed pull request tool parameters that no provider applied (`defaultBranch`, `codeant_pr_comments``addressed`, `codeant_comments_search``includeAddressed` and `createdAfter`) and corrected the `codeant_pr_get`, `codeant_pr_comments`, `codeant_comments_search`, and `codeant_api_get` descriptions
12
+
- MCPB: added Dashboard URL and Disable telemetry settings, and listed `codeant_scans_overrides`
13
+
- The Azure DevOps "org URL not found" error now names `AZURE_DEVOPS_ORG_URL` instead of a command that does not exist
14
+
3
15
## [0.5.9] - 02/10/2026
4
16
- Added `duplicate_code` to `scans results` / `findings repo`
5
17
- Dismissed and false-positive flags are kept on IaC and dead-code findings, and shown as `metadata.dismissed` / `metadata.false_positive`
|`codeant_hotlist_get`| read | One complete Hotlist finding by stable ID. |
22
22
|`codeant_findings_antipatterns`| read | Anti-pattern findings across selected or all organization repos (paged: `limit`, `offset`, `all`). |
23
-
|`codeant_cloud_scan_history`| read | AWS/Azure/GCP CSPM, VM, or container scan history. |
24
-
|`codeant_cloud_findings_list`| read | Findings for one CSPM, VM, or container scan (VM/container paged: `limit`, `offset`, `all`). |
23
+
|`codeant_cloud_scan_history`| read | AWS/Azure/GCP CSPM, VM, or container scan history (newest first, 10 per provider by default and up to 200, paged with `limit`/`offset`, without per-service rollups unless `full`). |
24
+
|`codeant_cloud_findings_list`| read | Findings for one CSPM, VM, or container scan (paged: `limit`, `offset`, `all`; compliance mappings only with `full`). |
25
25
|`codeant_cloud_finding_get`| read | Full detail for one cloud finding UID. |
26
-
|`codeant_pentest_history`| read | Pentest engagement history. |
|`codeant_pentest_issues`| read | All available issues for a pentest engagement. |
28
28
|`codeant_pentest_report`| read | Full pentest customer report. |
29
29
|`codeant_api_get`| read | Authenticated GET request to any relative CodeAnt app API path, with exact org/provider context. |
30
30
|`codeant_pr_list`| read | List PRs/MRs across GitHub, GitLab, Bitbucket, Azure DevOps. |
31
31
|`codeant_pr_get`| read | Detail for a PR/MR. |
32
32
|`codeant_pr_comments`| read | Comments on a PR, filtered. |
33
33
|`codeant_comments_search`| read | Free-text search across CodeAnt review comments. |
34
-
|`codeant_review_local`| read | Run a CodeAnt review on local working-copy changes. |
34
+
|`codeant_review_local`| read | Run a CodeAnt review on local working-copy changes in the server's working directory. |
35
+
|`codeant_login`| auth | Start browser sign-in; returns the sign-in link immediately. Call again to confirm. |
36
+
|`codeant_logout`| auth | Revoke and clear the saved token (shared with the CLI). |
35
37
|`codeant_scans_start`|**write**| Trigger a new scan. Gated. |
36
38
|`codeant_pr_resolve`|**write**| Resolve a PR conversation thread. Gated. |
37
39
|`codeant_api_request`|**write**| Authenticated POST/PUT/PATCH/DELETE request to a relative CodeAnt app API path, with exact org/provider context. Gated. |
@@ -40,17 +42,24 @@ Write tools are only registered when `CODEANT_READ_ONLY=0`. Default = read-only.
40
42
41
43
For complete finding coverage, examples, tenant/provider selection, and response details, see the [CodeAnt findings documentation](https://docs.codeant.ai/cli/findings).
42
44
43
-
Every tool carries MCP annotations (`title`, `readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`) so the client can decide whether to auto-approve calls.
45
+
Every tool carries MCP annotations (`title`, `readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`) so the client can decide whether to auto-approve calls. The server also sends `instructions` (discovery order, paging, auth recovery) in its `initialize` result.
46
+
47
+
Results are compact JSON. Any result over `CODEANT_MCP_MAX_RESULT_CHARS` characters is refused with an error and a narrowing hint; [src/mcp/shape.js](src/mcp/shape.js) holds the MCP-only projections and page defaults. CLI commands keep their full output.
48
+
49
+
`codeant_login` runs sign-in in the background: the first call returns `{ status: "pending", loginUrl, browserOpened }`, and the next call returns `{ status: "success" }` once the user finishes. The token is read from `~/.codeant/config.json` on every request, so CLI logins and logouts apply to a running server.
|`CODEANT_TELEMETRY_DISABLED`|`1` or `true` stops usage events (PostHog, tied to the API token). | enabled |
60
+
|`CODEANT_MCP_MAX_RESULT_CHARS`| Largest tool result, in characters, before the server refuses it with a hint. |`80000`|
52
61
53
-
The CLI also reads these from `~/.codeant/config.json` when not set in env. For MCP usage prefer env — it keeps per-client config explicit.
62
+
The token, base URL, and dashboard URL fall back to `~/.codeant/config.json` when not set in env. PR tools also need an SCM token (`GITHUB_TOKEN`, `GITLAB_TOKEN`, `BITBUCKET_TOKEN`, `AZURE_DEVOPS_TOKEN`) and, for Azure DevOps, `AZURE_DEVOPS_ORG_URL`.
54
63
55
64
---
56
65
@@ -109,10 +118,13 @@ npm run mcpb:build
109
118
open -a Claude dist/codeant.mcpb
110
119
```
111
120
112
-
Claude pops an install dialog asking for the `user_config` fields:
113
-
-**CodeAnt API token** (sensitive, required)
114
-
-**API base URL** (defaults to `https://api.codeant.ai`)
121
+
Claude pops an install dialog asking for the `user_config` fields (all optional):
122
+
-**CodeAnt API token** (sensitive; leave blank and call `codeant_login` instead)
123
+
-**API base URL** (defaults to `https://api.codeant.ai`, which the CLI maps to `https://service.codeant.ai`)
124
+
-**Dashboard URL** (self-hosted only; used by `codeant_login`)
115
125
-**Read-only mode** (defaults to on)
126
+
-**Disable telemetry** (defaults to off)
127
+
- SCM tokens and self-hosted SCM URLs for the PR tools
116
128
117
129
After install, manage it in **Settings → Connectors**.
Expect 23 tools in the `tools/list` response (or 26 if `CODEANT_READ_ONLY=0`).
177
+
Expect 24 tools in the `tools/list` response (or 27 if `CODEANT_READ_ONLY=0`). `tests/mcp/server.test.js` checks that this list matches the manifest's `tools`.
166
178
167
179
### Bumping the version
168
180
@@ -191,9 +203,9 @@ CodeAnt's MCP server uses stdio + a packaged bundle, so the submission route is
191
203
192
204
Reviewer notes worth preparing:
193
205
194
-
-**Auth model.**CodeAnt uses a user-scoped API token entered into `user_config.api_token`. The token never leaves the user's machine — the bundle talks to `api.codeant.ai`(or the user's self-hosted URL) directly. No third-party OAuth flow needed.
206
+
-**Auth model.**Users sign in with the `codeant_login` tool (browser sign-in, token saved to `~/.codeant/config.json`) or paste a token into `user_config.api_token`. The token is stored only on the user's machine (`~/.codeant/config.json`) and is sent only to the CodeAnt API (or the user's self-hosted URL) as a Bearer token — never to any third party. No third-party OAuth flow needed.
195
207
-**Sandbox creds.** Email support@codeant.ai for a reviewer sandbox token; paste it into the submission form's reviewer-notes field along with an org slug that has scans + PRs to browse.
196
-
-**Write tools.** Gated behind `user_config.read_only` (defaults to on). Reviewers can toggle off to test `codeant_scans_start` / `codeant_pr_resolve`.
208
+
-**Write tools.** Gated behind `user_config.read_only` (defaults to on). Reviewers can toggle off to test `codeant_scans_start` / `codeant_pr_resolve` / `codeant_api_request`.
| Server fails to start in Claude Desktop |`~/Library/Logs/Claude/mcp-server-codeant.log`|
205
217
| Tool calls return errors | Same log — server stderr is captured there. |
206
218
| Tool not listed at all | Check `CODEANT_READ_ONLY` — write tools are hidden when set to `1`. |
207
-
| Auth errors on every tool | Confirm `CODEANT_API_TOKEN` is set in the MCP env (not just in `~/.codeant/config.json`). |
219
+
| Auth errors on every tool | Call `codeant_login`, or run `codeant login` in a terminal; the server reads `~/.codeant/config.json` on every request. An explicit `CODEANT_API_TOKEN` in the MCP env takes precedence, so check it is current. |
220
+
|`codeant_login` fails on a self-hosted instance | Set `CODEANT_DASHBOARD_URL` (or the MCPB **Dashboard URL** setting, or `codeant set-dashboard-url`). |
221
+
| A tool returns "Result too large" | Follow the hint (smaller `limit`, filters, `fields`), or raise `CODEANT_MCP_MAX_RESULT_CHARS` if your client accepts larger results. |
222
+
|`codeant_review_local` returns "Could not find a .git directory" | The client started the server outside a git repository (Claude Desktop does). Use a project-scoped client such as Claude Code. |
208
223
| MCPB install dialog never appears | Open `.mcpb` with `open -a Claude dist/codeant.mcpb` to force the desktop app to handle it. |
Copy file name to clipboardExpand all lines: mcpb/manifest.json
+21-4Lines changed: 21 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
"display_name": "CodeAnt AI",
5
5
"version": "0.5.3",
6
6
"description": "Drive CodeAnt AI security scans and code review from Claude — org-wide secret triage, cross-repo SAST/SCA findings, on-demand scans, and local PR review.",
7
-
"long_description": "CodeAnt AI inside Claude. Ask things like \"show my highest-priority Hotlist findings\", \"list AWS cloud findings\", \"show this pentest report\", or \"review my staged changes\" — Claude calls the CodeAnt API directly via this MCP server.\n\nIncludes 23 read-only tools, including repository, Hotlist, cloud security, anti-pattern, and pentest findings plus an authenticated GET escape hatch for new APIs, and 3 opt-in write tools gated behind a setting.\n\nRequires a CodeAnt account. Sign up at https://codeant.ai. To authenticate, call the `codeant_login` tool — it opens the CodeAnt sign-in page in your browser and saves the token automatically.\n\nCollects anonymous usage telemetry via PostHog by default; set CODEANT_TELEMETRY_DISABLED=1 to opt out.",
7
+
"long_description": "CodeAnt AI inside Claude. Ask things like \"show my highest-priority Hotlist findings\", \"list AWS cloud findings\", \"show this pentest report\", or \"review my staged changes\" — Claude calls the CodeAnt API directly via this MCP server.\n\nIncludes 22 read-only tools, covering repository, Hotlist, cloud security, anti-pattern, and pentest findings plus an authenticated GET escape hatch for new APIs, 2 sign-in tools, and 3 opt-in write tools gated behind a setting.\n\nRequires a CodeAnt account. Sign up at https://codeant.ai. To authenticate, call the `codeant_login` tool — it returns a sign-in link (and opens it in your browser when it can), then saves the token once you finish.\n\nCollects usage telemetry via PostHog by default (events are tied to your CodeAnt token); turn on \"Disable telemetry\" in the extension settings to opt out.",
{ "name": "codeant_hotlist_get", "description": "Fetch one complete Hotlist finding by its stable ID." },
66
69
{ "name": "codeant_findings_antipatterns", "description": "List anti-pattern findings across selected or all organization repositories." },
@@ -76,7 +79,7 @@
76
79
{ "name": "codeant_pr_comments", "description": "List comments on a PR/MR with optional filters." },
77
80
{ "name": "codeant_comments_search", "description": "Search across CodeAnt review comments by free-text query." },
78
81
{ "name": "codeant_review_local", "description": "Run a CodeAnt AI review on local working-copy changes." },
79
-
{ "name": "codeant_login", "description": "Open app.codeant.ai in the browser and poll until the user completes sign-in; saves the resulting API token." },
82
+
{ "name": "codeant_login", "description": "Start browser sign-in to CodeAnt AI and return the sign-in link; saves the API token once sign-in completes." },
80
83
{ "name": "codeant_logout", "description": "Clear the saved API token and sign out of CodeAnt AI." },
81
84
{ "name": "codeant_scans_start", "description": "Trigger a new scan run (write — gated behind read_only=false)." },
"description": "When enabled, write tools (trigger scan, resolve PR thread, write API requests) are hidden. Recommended.",
105
115
"required": false,
106
116
"default": true
107
117
},
118
+
"telemetry_disabled": {
119
+
"type": "boolean",
120
+
"title": "Disable telemetry",
121
+
"description": "Stop sending usage events (PostHog) from this extension.",
122
+
"required": false,
123
+
"default": false
124
+
},
108
125
"github_token": {
109
126
"type": "string",
110
127
"title": "GitHub token",
@@ -140,7 +157,7 @@
140
157
"github_api_url": {
141
158
"type": "string",
142
159
"title": "GitHub API URL",
143
-
"description": "Override for GitHub Enterprise Server (e.g. https://github.example.com/api/v3). Leave blank for GitHub.com.",
160
+
"description": "GitHub Enterprise Server only: the server root, e.g. https://github.example.com (/api/v3 is added automatically). Leave blank for GitHub.com.",
0 commit comments