argus-scan 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- argus_scan-0.1.0/.gitignore +44 -0
- argus_scan-0.1.0/LICENSE +21 -0
- argus_scan-0.1.0/PKG-INFO +189 -0
- argus_scan-0.1.0/README.md +128 -0
- argus_scan-0.1.0/pyproject.toml +92 -0
- argus_scan-0.1.0/src/argus/__init__.py +7 -0
- argus_scan-0.1.0/src/argus/cli.py +478 -0
- argus_scan-0.1.0/src/argus/models.py +128 -0
- argus_scan-0.1.0/src/argus/server.py +841 -0
- argus_scan-0.1.0/src/argus/tools/__init__.py +38 -0
- argus_scan-0.1.0/src/argus/tools/ansible.py +341 -0
- argus_scan-0.1.0/src/argus/tools/dast.py +265 -0
- argus_scan-0.1.0/src/argus/tools/iac.py +339 -0
- argus_scan-0.1.0/src/argus/tools/sast.py +335 -0
- argus_scan-0.1.0/src/argus/tools/sca.py +342 -0
- argus_scan-0.1.0/src/argus/tools/secrets.py +234 -0
- argus_scan-0.1.0/src/argus/tools/terraform.py +397 -0
- argus_scan-0.1.0/src/argus/utils.py +150 -0
- argus_scan-0.1.0/tests/__init__.py +0 -0
- argus_scan-0.1.0/tests/test_models.py +67 -0
- argus_scan-0.1.0/tests/test_sast.py +94 -0
- argus_scan-0.1.0/tests/test_utils.py +73 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
dist/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
.eggs/
|
|
11
|
+
.venv/
|
|
12
|
+
venv/
|
|
13
|
+
env/
|
|
14
|
+
.pytest_cache/
|
|
15
|
+
.mypy_cache/
|
|
16
|
+
.ruff_cache/
|
|
17
|
+
htmlcov/
|
|
18
|
+
.coverage
|
|
19
|
+
*.cover
|
|
20
|
+
|
|
21
|
+
# Node.js / npm
|
|
22
|
+
node_modules/
|
|
23
|
+
dist/
|
|
24
|
+
*.js.map
|
|
25
|
+
*.d.ts
|
|
26
|
+
*.d.ts.map
|
|
27
|
+
|
|
28
|
+
# VS Code
|
|
29
|
+
.vscode/
|
|
30
|
+
*.vsix
|
|
31
|
+
|
|
32
|
+
# OS
|
|
33
|
+
.DS_Store
|
|
34
|
+
Thumbs.db
|
|
35
|
+
|
|
36
|
+
# Environment
|
|
37
|
+
.env
|
|
38
|
+
.env.local
|
|
39
|
+
*.env
|
|
40
|
+
|
|
41
|
+
# Temporary scan output
|
|
42
|
+
*.sarif
|
|
43
|
+
zap-report.json
|
|
44
|
+
trivy-report.json
|
argus_scan-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 codetesting-mcp contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: argus-scan
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Argus — open-source security scanner with many eyes. SAST, DAST, SCA, Secrets, IaC, Terraform, Ansible via CLI and MCP.
|
|
5
|
+
Project-URL: Homepage, https://github.com/your-org/argus-mcp
|
|
6
|
+
Project-URL: Repository, https://github.com/your-org/argus-mcp
|
|
7
|
+
Project-URL: Issues, https://github.com/your-org/argus-mcp/issues
|
|
8
|
+
Project-URL: Documentation, https://github.com/your-org/argus-mcp/blob/main/README.md
|
|
9
|
+
License: MIT License
|
|
10
|
+
|
|
11
|
+
Copyright (c) 2026 codetesting-mcp contributors
|
|
12
|
+
|
|
13
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
14
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
15
|
+
in the Software without restriction, including without limitation the rights
|
|
16
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
17
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
18
|
+
furnished to do so, subject to the following conditions:
|
|
19
|
+
|
|
20
|
+
The above copyright notice and this permission notice shall be included in all
|
|
21
|
+
copies or substantial portions of the Software.
|
|
22
|
+
|
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
24
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
25
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
26
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
27
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
|
+
SOFTWARE.
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Keywords: ai,ansible-lint,argus,bandit,code-scanning,dast,devsecops,gitleaks,mcp,owasp-zap,sast,sca,security,semgrep,tfsec,trivy,vulnerability
|
|
32
|
+
Classifier: Development Status :: 4 - Beta
|
|
33
|
+
Classifier: Intended Audience :: Developers
|
|
34
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
35
|
+
Classifier: Programming Language :: Python :: 3
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
37
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
38
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
39
|
+
Classifier: Topic :: Security
|
|
40
|
+
Classifier: Topic :: Software Development :: Testing
|
|
41
|
+
Requires-Python: >=3.10
|
|
42
|
+
Requires-Dist: anyio>=4.0.0
|
|
43
|
+
Requires-Dist: mcp>=1.0.0
|
|
44
|
+
Provides-Extra: all-tools
|
|
45
|
+
Requires-Dist: ansible-lint>=6.0.0; extra == 'all-tools'
|
|
46
|
+
Requires-Dist: bandit>=1.7.0; extra == 'all-tools'
|
|
47
|
+
Requires-Dist: checkov>=3.0.0; extra == 'all-tools'
|
|
48
|
+
Requires-Dist: detect-secrets>=1.4.0; extra == 'all-tools'
|
|
49
|
+
Requires-Dist: flake8-bandit>=4.0.0; extra == 'all-tools'
|
|
50
|
+
Requires-Dist: flake8>=6.0.0; extra == 'all-tools'
|
|
51
|
+
Requires-Dist: pip-audit>=2.0.0; extra == 'all-tools'
|
|
52
|
+
Requires-Dist: safety>=3.0.0; extra == 'all-tools'
|
|
53
|
+
Requires-Dist: semgrep>=1.0.0; extra == 'all-tools'
|
|
54
|
+
Provides-Extra: dev
|
|
55
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
56
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
|
|
57
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
58
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
59
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
60
|
+
Description-Content-Type: text/markdown
|
|
61
|
+
|
|
62
|
+
# argus-mcp (Python)
|
|
63
|
+
|
|
64
|
+
An **MCP server** that gives AI assistants (Claude, Cursor, etc.) the ability to run comprehensive security scans on your codebase.
|
|
65
|
+
|
|
66
|
+
## What It Does
|
|
67
|
+
|
|
68
|
+
Exposes the following **MCP tools** for use by any MCP-compatible AI client:
|
|
69
|
+
|
|
70
|
+
| Tool | Description | Scanners |
|
|
71
|
+
|------|-------------|----------|
|
|
72
|
+
| `scan_sast` | Static code analysis | Semgrep, Bandit, ESLint-security |
|
|
73
|
+
| `scan_dast` | Dynamic web app scanning | OWASP ZAP, Nikto |
|
|
74
|
+
| `scan_sca` | Dependency vulnerability scanning | Trivy, Safety, pip-audit, npm audit |
|
|
75
|
+
| `scan_secrets` | Leaked secrets & credentials | Gitleaks, detect-secrets, TruffleHog |
|
|
76
|
+
| `scan_iac` | IaC misconfiguration scanning | Checkov, Trivy config, Terrascan |
|
|
77
|
+
| `scan_container` | Container image scanning | Trivy |
|
|
78
|
+
| `scan_all` | Full scan (all of the above) | All tools |
|
|
79
|
+
| `check_tools` | Check tool availability | — |
|
|
80
|
+
|
|
81
|
+
## Installation
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pip install argus-scan
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Install with all Python-native security tools:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pip install "argus-scan[all-tools]"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Usage
|
|
94
|
+
|
|
95
|
+
### Run the MCP Server
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
argus-mcp
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The server communicates via **stdio** (standard MCP transport).
|
|
102
|
+
|
|
103
|
+
### Configure in Cursor / Claude Desktop
|
|
104
|
+
|
|
105
|
+
Add to your MCP configuration (`~/.cursor/mcp.json` or `claude_desktop_config.json`):
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"mcpServers": {
|
|
110
|
+
"argus": {
|
|
111
|
+
"command": "argus-scan"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Or with `uvx` (no installation required):
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"mcpServers": {
|
|
122
|
+
"argus": {
|
|
123
|
+
"command": "uvx",
|
|
124
|
+
"args": ["argus-scan"]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## External Tool Dependencies
|
|
131
|
+
|
|
132
|
+
The MCP server wraps these external tools. Install the ones you need:
|
|
133
|
+
|
|
134
|
+
### SAST
|
|
135
|
+
```bash
|
|
136
|
+
pip install semgrep bandit flake8 flake8-bandit # Python SAST
|
|
137
|
+
npm install -g eslint eslint-plugin-security # JS/TS SAST
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### DAST
|
|
141
|
+
```bash
|
|
142
|
+
docker pull ghcr.io/zaproxy/zaproxy:stable # OWASP ZAP (recommended)
|
|
143
|
+
brew install nikto # Nikto
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### SCA
|
|
147
|
+
```bash
|
|
148
|
+
# Trivy (cross-platform)
|
|
149
|
+
brew install trivy
|
|
150
|
+
# OR
|
|
151
|
+
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh
|
|
152
|
+
|
|
153
|
+
pip install safety pip-audit # Python SCA
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Secret Scanning
|
|
157
|
+
```bash
|
|
158
|
+
brew install gitleaks trufflehog # macOS
|
|
159
|
+
pip install detect-secrets # cross-platform
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### IaC
|
|
163
|
+
```bash
|
|
164
|
+
pip install checkov # Checkov
|
|
165
|
+
brew install terrascan # Terrascan
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Example: Ask Claude to Scan Your Code
|
|
169
|
+
|
|
170
|
+
Once configured, you can ask:
|
|
171
|
+
|
|
172
|
+
- *"Scan `/path/to/myproject` for security vulnerabilities"*
|
|
173
|
+
- *"Check my Python code for OWASP Top 10 issues using Semgrep"*
|
|
174
|
+
- *"Are there any hardcoded secrets in this repository?"*
|
|
175
|
+
- *"Scan my Kubernetes manifests for misconfigurations"*
|
|
176
|
+
- *"Run a full security audit of my codebase"*
|
|
177
|
+
|
|
178
|
+
## Development
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
git clone https://github.com/your-org/argus-mcp
|
|
182
|
+
cd argus-mcp/packages/python
|
|
183
|
+
pip install -e ".[dev]"
|
|
184
|
+
pytest
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## License
|
|
188
|
+
|
|
189
|
+
MIT
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# argus-mcp (Python)
|
|
2
|
+
|
|
3
|
+
An **MCP server** that gives AI assistants (Claude, Cursor, etc.) the ability to run comprehensive security scans on your codebase.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
Exposes the following **MCP tools** for use by any MCP-compatible AI client:
|
|
8
|
+
|
|
9
|
+
| Tool | Description | Scanners |
|
|
10
|
+
|------|-------------|----------|
|
|
11
|
+
| `scan_sast` | Static code analysis | Semgrep, Bandit, ESLint-security |
|
|
12
|
+
| `scan_dast` | Dynamic web app scanning | OWASP ZAP, Nikto |
|
|
13
|
+
| `scan_sca` | Dependency vulnerability scanning | Trivy, Safety, pip-audit, npm audit |
|
|
14
|
+
| `scan_secrets` | Leaked secrets & credentials | Gitleaks, detect-secrets, TruffleHog |
|
|
15
|
+
| `scan_iac` | IaC misconfiguration scanning | Checkov, Trivy config, Terrascan |
|
|
16
|
+
| `scan_container` | Container image scanning | Trivy |
|
|
17
|
+
| `scan_all` | Full scan (all of the above) | All tools |
|
|
18
|
+
| `check_tools` | Check tool availability | — |
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install argus-scan
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Install with all Python-native security tools:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install "argus-scan[all-tools]"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
### Run the MCP Server
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
argus-mcp
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The server communicates via **stdio** (standard MCP transport).
|
|
41
|
+
|
|
42
|
+
### Configure in Cursor / Claude Desktop
|
|
43
|
+
|
|
44
|
+
Add to your MCP configuration (`~/.cursor/mcp.json` or `claude_desktop_config.json`):
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"mcpServers": {
|
|
49
|
+
"argus": {
|
|
50
|
+
"command": "argus-scan"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Or with `uvx` (no installation required):
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"argus": {
|
|
62
|
+
"command": "uvx",
|
|
63
|
+
"args": ["argus-scan"]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## External Tool Dependencies
|
|
70
|
+
|
|
71
|
+
The MCP server wraps these external tools. Install the ones you need:
|
|
72
|
+
|
|
73
|
+
### SAST
|
|
74
|
+
```bash
|
|
75
|
+
pip install semgrep bandit flake8 flake8-bandit # Python SAST
|
|
76
|
+
npm install -g eslint eslint-plugin-security # JS/TS SAST
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### DAST
|
|
80
|
+
```bash
|
|
81
|
+
docker pull ghcr.io/zaproxy/zaproxy:stable # OWASP ZAP (recommended)
|
|
82
|
+
brew install nikto # Nikto
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### SCA
|
|
86
|
+
```bash
|
|
87
|
+
# Trivy (cross-platform)
|
|
88
|
+
brew install trivy
|
|
89
|
+
# OR
|
|
90
|
+
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh
|
|
91
|
+
|
|
92
|
+
pip install safety pip-audit # Python SCA
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Secret Scanning
|
|
96
|
+
```bash
|
|
97
|
+
brew install gitleaks trufflehog # macOS
|
|
98
|
+
pip install detect-secrets # cross-platform
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### IaC
|
|
102
|
+
```bash
|
|
103
|
+
pip install checkov # Checkov
|
|
104
|
+
brew install terrascan # Terrascan
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Example: Ask Claude to Scan Your Code
|
|
108
|
+
|
|
109
|
+
Once configured, you can ask:
|
|
110
|
+
|
|
111
|
+
- *"Scan `/path/to/myproject` for security vulnerabilities"*
|
|
112
|
+
- *"Check my Python code for OWASP Top 10 issues using Semgrep"*
|
|
113
|
+
- *"Are there any hardcoded secrets in this repository?"*
|
|
114
|
+
- *"Scan my Kubernetes manifests for misconfigurations"*
|
|
115
|
+
- *"Run a full security audit of my codebase"*
|
|
116
|
+
|
|
117
|
+
## Development
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
git clone https://github.com/your-org/argus-mcp
|
|
121
|
+
cd argus-mcp/packages/python
|
|
122
|
+
pip install -e ".[dev]"
|
|
123
|
+
pytest
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## License
|
|
127
|
+
|
|
128
|
+
MIT
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "argus-scan"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Argus — open-source security scanner with many eyes. SAST, DAST, SCA, Secrets, IaC, Terraform, Ansible via CLI and MCP."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { file = "LICENSE" }
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
keywords = [
|
|
13
|
+
"argus", "mcp", "security", "sast", "dast", "sca", "devsecops",
|
|
14
|
+
"semgrep", "bandit", "trivy", "owasp-zap", "gitleaks", "tfsec",
|
|
15
|
+
"ansible-lint", "code-scanning", "vulnerability", "ai",
|
|
16
|
+
]
|
|
17
|
+
classifiers = [
|
|
18
|
+
"Development Status :: 4 - Beta",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"License :: OSI Approved :: MIT License",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Topic :: Security",
|
|
26
|
+
"Topic :: Software Development :: Testing",
|
|
27
|
+
]
|
|
28
|
+
dependencies = [
|
|
29
|
+
"mcp>=1.0.0",
|
|
30
|
+
"anyio>=4.0.0",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
[project.optional-dependencies]
|
|
34
|
+
# Install all Python-native security tools
|
|
35
|
+
all-tools = [
|
|
36
|
+
"semgrep>=1.0.0",
|
|
37
|
+
"bandit>=1.7.0",
|
|
38
|
+
"flake8>=6.0.0",
|
|
39
|
+
"flake8-bandit>=4.0.0",
|
|
40
|
+
"safety>=3.0.0",
|
|
41
|
+
"pip-audit>=2.0.0",
|
|
42
|
+
"detect-secrets>=1.4.0",
|
|
43
|
+
"checkov>=3.0.0",
|
|
44
|
+
"ansible-lint>=6.0.0",
|
|
45
|
+
]
|
|
46
|
+
dev = [
|
|
47
|
+
"pytest>=7.0.0",
|
|
48
|
+
"pytest-asyncio>=0.23.0",
|
|
49
|
+
"pytest-cov>=4.0.0",
|
|
50
|
+
"mypy>=1.0.0",
|
|
51
|
+
"ruff>=0.1.0",
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
[project.scripts]
|
|
55
|
+
# Primary CLI — works with no AI subscription
|
|
56
|
+
argus = "argus.cli:run"
|
|
57
|
+
# Alias for MCP clients that reference the full package name
|
|
58
|
+
argus-mcp = "argus.cli:run"
|
|
59
|
+
|
|
60
|
+
[project.urls]
|
|
61
|
+
Homepage = "https://github.com/your-org/argus-mcp"
|
|
62
|
+
Repository = "https://github.com/your-org/argus-mcp"
|
|
63
|
+
Issues = "https://github.com/your-org/argus-mcp/issues"
|
|
64
|
+
Documentation = "https://github.com/your-org/argus-mcp/blob/main/README.md"
|
|
65
|
+
|
|
66
|
+
[tool.hatch.build.targets.wheel]
|
|
67
|
+
packages = ["src/argus"]
|
|
68
|
+
|
|
69
|
+
[tool.hatch.build.targets.sdist]
|
|
70
|
+
include = [
|
|
71
|
+
"/src",
|
|
72
|
+
"/tests",
|
|
73
|
+
"/README.md",
|
|
74
|
+
"/LICENSE",
|
|
75
|
+
]
|
|
76
|
+
|
|
77
|
+
[tool.pytest.ini_options]
|
|
78
|
+
asyncio_mode = "auto"
|
|
79
|
+
testpaths = ["tests"]
|
|
80
|
+
|
|
81
|
+
[tool.mypy]
|
|
82
|
+
python_version = "3.10"
|
|
83
|
+
strict = false
|
|
84
|
+
ignore_missing_imports = true
|
|
85
|
+
|
|
86
|
+
[tool.ruff]
|
|
87
|
+
line-length = 100
|
|
88
|
+
target-version = "py310"
|
|
89
|
+
|
|
90
|
+
[tool.ruff.lint]
|
|
91
|
+
select = ["E", "F", "W", "I", "UP"]
|
|
92
|
+
ignore = ["E501"]
|