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
docs(sdk): add MCP server phase, CI config health to roadmap, ADR-015
- Phase 5: MCP server for AI assistant integration (ADR-015)
Documents why MCP over skill files: staleness, vendor neutrality,
structured data, single source of truth
- CI preflight and living issue (Renovate-style config health tracking)
- Runtime network dependency notes for --check-tools
Copy file name to clipboardExpand all lines: docs/developer/SDK-ROADMAP.md
+90Lines changed: 90 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -147,13 +147,103 @@ Refactor `.github/actions/scanner-*` to call `argus scan` internally. Actions sh
147
147
-[ ] Progress indicators during scanning and container pulls
148
148
-[ ]`argus report github` — post results as PR comment via GitHub API
149
149
150
+
### CI Preflight and Config Health
151
+
152
+
-[ ] CI workflow step: `argus validate --strict --check-tools` as a gate before scan jobs
153
+
-[ ] Living issue (Renovate-style): a single "Argus Config Health" GitHub issue that gets updated (not recreated) when config validation fails on the default branch. Scheduled workflow runs `argus validate --strict --check-tools`, updates the issue body with current status, and auto-closes when healthy. Avoids issue spam — one issue, always current.
154
+
-[ ]`argus validate --check-tools` notes for scanners with runtime network dependencies (e.g., OSV API, ClamAV freshclam, Trivy DB updates) — informational, not blocking
155
+
150
156
### CI Templates
151
157
-[ ] GitLab CI template
152
158
-[ ] Jenkins pipeline template
153
159
-[ ] Azure DevOps template
154
160
155
161
---
156
162
163
+
## Remaining: Phase 5 — MCP Server (AI Assistant Integration)
164
+
165
+
Expose Argus as an MCP (Model Context Protocol) server so AI coding assistants can drive scanning natively. Replaces the need for tool-specific skill files with a single, tool-agnostic integration that stays current with the installed Argus version.
166
+
167
+
### Why MCP over skill files
168
+
169
+
We explored three approaches for AI assistant integration:
170
+
171
+
1.**Skill file installed by `argus init`** — A markdown file copied into the user's project that teaches AI assistants how to shell out to the Argus CLI. Problems:
172
+
- Immediately becomes a stale snapshot with no update mechanism
173
+
- AI tools have no skill registries or update notifications
174
+
- Must be duplicated per tool (`.claude/commands/`, `.cursorrules`, `.github/copilot-instructions.md`) or the project picks favorites
175
+
- The AI parses unstructured terminal output, losing information
176
+
177
+
2.**"Inform, don't install"** — `argus init` prints a URL to the skill. Avoids staleness but puts the integration burden entirely on the user, and still has the terminal-parsing problem.
178
+
179
+
3.**MCP server** — Argus exposes structured tools that any MCP-compatible AI assistant discovers automatically. The assistant calls typed functions and receives structured JSON instead of parsing CLI output. Updates ship with `pip install --upgrade argus`. Tool-agnostic by design (Claude Code, Cursor, Windsurf, VS Code Copilot all support MCP).
|`argus_validate`|`config_path`| Validation errors and warnings for argus.yml |
190
+
|`argus_list_scanners`| — | Available scanners with install status and descriptions |
191
+
|`argus_init`|`path`, `platform`| Generated config content and file paths |
192
+
193
+
**Resources:**
194
+
195
+
| Resource URI | Description |
196
+
|-------------|-------------|
197
+
|`argus://config`| Current argus.yml parsed as structured data |
198
+
|`argus://results/latest`| Most recent scan results from the last run |
199
+
200
+
### User setup
201
+
202
+
```json
203
+
{
204
+
"mcpServers": {
205
+
"argus": {
206
+
"command": "argus",
207
+
"args": ["mcp"]
208
+
}
209
+
}
210
+
}
211
+
```
212
+
213
+
One line of config in any MCP-compatible tool. The AI assistant then has full Argus capabilities without needing to know CLI syntax, parse terminal output, or have a skill file installed.
214
+
215
+
### Dependencies and portability considerations
216
+
217
+
The MCP server is a new interface to the existing engine — it does not change the scanner dependency story. Scanners still require either local binaries or Docker. Key considerations:
218
+
219
+
- Pure Python scanners (bandit, checkov, osv) work without Docker
220
+
- Binary scanners (gitleaks, trivy, opengrep) need Docker or local install
221
+
-`argus_list_scanners` should clearly report what's available and what's missing
222
+
- Graceful degradation: scans return partial results with clear "unavailable" status per scanner rather than failing entirely
223
+
- Phase 3 (portability) should land first to maximize the set of scanners that work out of the box
224
+
225
+
### Implementation tasks
226
+
227
+
-[ ]`argus/mcp.py` — MCP server module using the MCP Python SDK
228
+
-[ ]`argus mcp` CLI subcommand to start the server (stdio transport)
229
+
-[ ]`argus_detect` tool — wraps `detect_project()` from init module
-[ ]`argus://config` resource — reads and parses argus.yml
235
+
-[ ]`argus://results/latest` resource — reads most recent results from output dir
236
+
-[ ] Add `mcp` extra to pyproject.toml (`pip install argus-security[mcp]`)
237
+
-[ ] Tests for all MCP tools with mock engine
238
+
-[ ] Documentation: setup instructions per AI tool, example interactions
239
+
-[ ]`argus init` prints MCP setup hint in summary output
240
+
241
+
### Existing skill file
242
+
243
+
The skill at `.agents/skills/argus-scanner-selection/` remains as a reference document and works for AI tools that don't support MCP. It is not versioned or synced to releases. Once the MCP server ships, the skill can reference it as the preferred integration path.
0 commit comments