aspice-check 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.
- aspice_check-0.1.0/PKG-INFO +242 -0
- aspice_check-0.1.0/README.md +216 -0
- aspice_check-0.1.0/pyproject.toml +55 -0
- aspice_check-0.1.0/setup.cfg +4 -0
- aspice_check-0.1.0/src/aspice_check/__init__.py +5 -0
- aspice_check-0.1.0/src/aspice_check/mcp_server.py +481 -0
- aspice_check-0.1.0/src/aspice_check/mcp_tools.py +246 -0
- aspice_check-0.1.0/src/aspice_check/pipeline.py +396 -0
- aspice_check-0.1.0/src/aspice_check/py.typed +0 -0
- aspice_check-0.1.0/src/aspice_check.egg-info/PKG-INFO +242 -0
- aspice_check-0.1.0/src/aspice_check.egg-info/SOURCES.txt +13 -0
- aspice_check-0.1.0/src/aspice_check.egg-info/dependency_links.txt +1 -0
- aspice_check-0.1.0/src/aspice_check.egg-info/entry_points.txt +3 -0
- aspice_check-0.1.0/src/aspice_check.egg-info/requires.txt +8 -0
- aspice_check-0.1.0/src/aspice_check.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: aspice-check
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Orchestrator composing confluence-ai and aspice-eval into a pipeline CLI and MCP server
|
|
5
|
+
Author: ASPICE Check Contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: aspice,confluence,mcp,pipeline,orchestrator
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
16
|
+
Classifier: Typing :: Typed
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
Requires-Dist: confluence-ai>=0.1.0
|
|
20
|
+
Requires-Dist: aspice-eval>=0.1.0
|
|
21
|
+
Requires-Dist: click>=8.1.0
|
|
22
|
+
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
24
|
+
Requires-Dist: hypothesis>=6.90.0; extra == "dev"
|
|
25
|
+
Requires-Dist: pytest-mock; extra == "dev"
|
|
26
|
+
|
|
27
|
+
# aspice-check
|
|
28
|
+
|
|
29
|
+
Orchestrator composing `confluence-ai` and `aspice-eval` into a pipeline CLI and MCP server.
|
|
30
|
+
|
|
31
|
+
## Pipeline CLI — aspice-analyze
|
|
32
|
+
|
|
33
|
+
Run a full ASPICE gap analysis pipeline on a Confluence SDP page: export → evaluate → publish.
|
|
34
|
+
|
|
35
|
+
### Usage
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
aspice-analyze <PAGE_URL> --target-level <1-5> --groups <GROUPS> [OPTIONS]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Examples
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Full pipeline: export, evaluate at level 2, publish report back to Confluence
|
|
45
|
+
aspice-analyze \
|
|
46
|
+
"https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
|
|
47
|
+
--target-level 2 \
|
|
48
|
+
--groups SWE,MAN \
|
|
49
|
+
--email user@acme.com \
|
|
50
|
+
--api-token YOUR_TOKEN \
|
|
51
|
+
--region us-east-1
|
|
52
|
+
|
|
53
|
+
# Evaluate without publishing
|
|
54
|
+
aspice-analyze \
|
|
55
|
+
"https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
|
|
56
|
+
--target-level 1 \
|
|
57
|
+
--groups SWE \
|
|
58
|
+
--no-publish
|
|
59
|
+
|
|
60
|
+
# Use OpenAI instead of Bedrock
|
|
61
|
+
aspice-analyze \
|
|
62
|
+
"https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
|
|
63
|
+
--target-level 3 \
|
|
64
|
+
--groups SWE,SYS,MAN,SUP \
|
|
65
|
+
--provider openai \
|
|
66
|
+
--model gpt-4o
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Options
|
|
70
|
+
|
|
71
|
+
| Option | Env Variable | Description |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| `PAGE_URL` | — | Confluence Cloud page URL (required) |
|
|
74
|
+
| `--target-level` | — | ASPICE capability level 1–5 (required) |
|
|
75
|
+
| `--groups` | — | Comma-separated process groups, e.g. `SWE,MAN` (required) |
|
|
76
|
+
| `--email` | `CONFLUENCE_EMAIL` | Confluence account email |
|
|
77
|
+
| `--api-token` | `CONFLUENCE_API_TOKEN` | Confluence API token |
|
|
78
|
+
| `--provider` | `ASPICE_EVAL_PROVIDER` | AI provider: `bedrock`, `openai`, `anthropic` (default: `bedrock`) |
|
|
79
|
+
| `--model` | — | AI model name (default depends on provider) |
|
|
80
|
+
| `--region` | `AWS_DEFAULT_REGION` | AWS region (required for Bedrock) |
|
|
81
|
+
| `--report-title` | — | Custom title for the published report page |
|
|
82
|
+
| `--output-dir` | — | Local directory for intermediate artifacts |
|
|
83
|
+
| `--no-publish` | — | Skip publishing report to Confluence |
|
|
84
|
+
| `--verbose` | — | Enable DEBUG-level logging |
|
|
85
|
+
| `--quiet` | — | Suppress progress messages |
|
|
86
|
+
|
|
87
|
+
### Exit Codes
|
|
88
|
+
|
|
89
|
+
| Code | Meaning |
|
|
90
|
+
|------|---------|
|
|
91
|
+
| 0 | Success |
|
|
92
|
+
| 1 | Parameter validation error |
|
|
93
|
+
| 2 | Export stage failure |
|
|
94
|
+
| 3 | Evaluation stage failure |
|
|
95
|
+
| 4 | Publish stage failure |
|
|
96
|
+
|
|
97
|
+
## MCP Server — aspice-mcp
|
|
98
|
+
|
|
99
|
+
An MCP (Model Context Protocol) server exposing evaluation and Confluence tools to AI assistants. It uses **stdio transport** (JSON-RPC 2.0) and works with any MCP-compatible client.
|
|
100
|
+
|
|
101
|
+
### Configuration
|
|
102
|
+
|
|
103
|
+
The server is configured in your MCP client's config file. The exact location depends on the client:
|
|
104
|
+
|
|
105
|
+
| Client | Config file |
|
|
106
|
+
|--------|-------------|
|
|
107
|
+
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
108
|
+
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
109
|
+
| Kiro | `.kiro/settings/mcp.json` (workspace) or `~/.kiro/settings/mcp.json` (global) |
|
|
110
|
+
| VS Code (Copilot) | `.vscode/mcp.json` |
|
|
111
|
+
|
|
112
|
+
Add the following to your config:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"mcpServers": {
|
|
117
|
+
"aspice": {
|
|
118
|
+
"command": "aspice-mcp",
|
|
119
|
+
"args": [],
|
|
120
|
+
"env": {
|
|
121
|
+
"CONFLUENCE_EMAIL": "user@acme.com",
|
|
122
|
+
"CONFLUENCE_API_TOKEN": "your-token",
|
|
123
|
+
"AWS_DEFAULT_REGION": "us-east-1"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The `env` block passes credentials to the server process. Tools that need Confluence access (`export_page`) or AI providers (`evaluate_sdp`, `describe_image`) will use these values. You can omit credentials here and pass them per-tool-call instead.
|
|
131
|
+
|
|
132
|
+
If `aspice-mcp` is not on your `PATH` (e.g. installed in a virtualenv), use the full path:
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"mcpServers": {
|
|
137
|
+
"aspice": {
|
|
138
|
+
"command": "/path/to/venv/bin/aspice-mcp",
|
|
139
|
+
"args": []
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Starting Manually (for testing)
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
aspice-mcp
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
The server reads JSON-RPC requests from stdin and writes responses to stdout. Logs go to stderr.
|
|
152
|
+
|
|
153
|
+
### Tool Inventory
|
|
154
|
+
|
|
155
|
+
| Tool | Description |
|
|
156
|
+
|------|-------------|
|
|
157
|
+
| `evaluate_sdp` | Evaluate an SDP document against ASPICE knowledge base criteria |
|
|
158
|
+
| `validate_kb` | Validate a knowledge base directory for schema compliance and completeness |
|
|
159
|
+
| `list_standards` | List available knowledge base standards and their process groups |
|
|
160
|
+
| `export_page` | Export a Confluence Cloud page to Markdown with AI image descriptions |
|
|
161
|
+
| `describe_image` | Generate an AI description of an image file |
|
|
162
|
+
|
|
163
|
+
### Tool Parameters
|
|
164
|
+
|
|
165
|
+
**evaluate_sdp** — `provider` (required), `model` (required), `sdp_path`, `sdp_content`, `target_level` (1–5, default 3), `process_groups`, `standard`
|
|
166
|
+
|
|
167
|
+
**validate_kb** — `kb_path` (required), `standard`
|
|
168
|
+
|
|
169
|
+
**list_standards** — `kb_path` (optional, uses bundled KB if omitted)
|
|
170
|
+
|
|
171
|
+
**export_page** — `page_url` (required), `output_dir` (required), `email` (required), `api_token` (required), `ai_provider`, `ai_model`, `output_format`
|
|
172
|
+
|
|
173
|
+
**describe_image** — `image_path` (required), `provider` (required), `model` (required), `is_gliffy`, `page_title`
|
|
174
|
+
|
|
175
|
+
### Example Tool Call (JSON-RPC)
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "validate_kb", "arguments": {"kb_path": "/path/to/knowledge_base", "standard": "aspice"}}}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Response:
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{"jsonrpc": "2.0", "id": 1, "result": {"content": [{"type": "text", "text": "{\"is_valid\": true, ...}"}]}}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Error Handling
|
|
188
|
+
|
|
189
|
+
Invalid parameters return a structured error with code `-32602`:
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
{"jsonrpc": "2.0", "id": 1, "error": {"code": -32602, "message": "Invalid params", "data": {"tool": "evaluate_sdp", "parameter": "provider", "actual_value": "gpt", "valid_values": ["bedrock", "openai", "anthropic"], "suggestion": "Use one of: bedrock, openai, anthropic"}}}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Installation
|
|
196
|
+
|
|
197
|
+
### From the monorepo (development)
|
|
198
|
+
|
|
199
|
+
Install all three packages in editable mode from the repo root:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
pip install -e ./confluence-ai
|
|
203
|
+
pip install -e ./aspice-eval
|
|
204
|
+
pip install -e ./aspice-check
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
This registers the `aspice-analyze` and `aspice-mcp` commands in your environment. Verify:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
which aspice-mcp
|
|
211
|
+
# → /path/to/venv/bin/aspice-mcp
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### From PyPI (once published)
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
pip install aspice-check
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
This pulls in `confluence-ai` and `aspice-eval` automatically.
|
|
221
|
+
|
|
222
|
+
### Making `aspice-mcp` available to MCP clients
|
|
223
|
+
|
|
224
|
+
MCP clients launch the server as a subprocess, so the `aspice-mcp` command must be resolvable from the client's environment. Two options:
|
|
225
|
+
|
|
226
|
+
1. **Use the absolute path** in your MCP config (works regardless of PATH):
|
|
227
|
+
```json
|
|
228
|
+
{ "command": "/path/to/venv/bin/aspice-mcp" }
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
2. **Activate the venv** before launching the client, or install into the system Python so `aspice-mcp` is on the global PATH.
|
|
232
|
+
|
|
233
|
+
To find the path after installing:
|
|
234
|
+
```bash
|
|
235
|
+
which aspice-mcp
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Requires Python 3.10+.
|
|
239
|
+
|
|
240
|
+
## License
|
|
241
|
+
|
|
242
|
+
MIT
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# aspice-check
|
|
2
|
+
|
|
3
|
+
Orchestrator composing `confluence-ai` and `aspice-eval` into a pipeline CLI and MCP server.
|
|
4
|
+
|
|
5
|
+
## Pipeline CLI — aspice-analyze
|
|
6
|
+
|
|
7
|
+
Run a full ASPICE gap analysis pipeline on a Confluence SDP page: export → evaluate → publish.
|
|
8
|
+
|
|
9
|
+
### Usage
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
aspice-analyze <PAGE_URL> --target-level <1-5> --groups <GROUPS> [OPTIONS]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Examples
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Full pipeline: export, evaluate at level 2, publish report back to Confluence
|
|
19
|
+
aspice-analyze \
|
|
20
|
+
"https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
|
|
21
|
+
--target-level 2 \
|
|
22
|
+
--groups SWE,MAN \
|
|
23
|
+
--email user@acme.com \
|
|
24
|
+
--api-token YOUR_TOKEN \
|
|
25
|
+
--region us-east-1
|
|
26
|
+
|
|
27
|
+
# Evaluate without publishing
|
|
28
|
+
aspice-analyze \
|
|
29
|
+
"https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
|
|
30
|
+
--target-level 1 \
|
|
31
|
+
--groups SWE \
|
|
32
|
+
--no-publish
|
|
33
|
+
|
|
34
|
+
# Use OpenAI instead of Bedrock
|
|
35
|
+
aspice-analyze \
|
|
36
|
+
"https://acme.atlassian.net/wiki/spaces/ENG/pages/12345/My-SDP" \
|
|
37
|
+
--target-level 3 \
|
|
38
|
+
--groups SWE,SYS,MAN,SUP \
|
|
39
|
+
--provider openai \
|
|
40
|
+
--model gpt-4o
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Options
|
|
44
|
+
|
|
45
|
+
| Option | Env Variable | Description |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| `PAGE_URL` | — | Confluence Cloud page URL (required) |
|
|
48
|
+
| `--target-level` | — | ASPICE capability level 1–5 (required) |
|
|
49
|
+
| `--groups` | — | Comma-separated process groups, e.g. `SWE,MAN` (required) |
|
|
50
|
+
| `--email` | `CONFLUENCE_EMAIL` | Confluence account email |
|
|
51
|
+
| `--api-token` | `CONFLUENCE_API_TOKEN` | Confluence API token |
|
|
52
|
+
| `--provider` | `ASPICE_EVAL_PROVIDER` | AI provider: `bedrock`, `openai`, `anthropic` (default: `bedrock`) |
|
|
53
|
+
| `--model` | — | AI model name (default depends on provider) |
|
|
54
|
+
| `--region` | `AWS_DEFAULT_REGION` | AWS region (required for Bedrock) |
|
|
55
|
+
| `--report-title` | — | Custom title for the published report page |
|
|
56
|
+
| `--output-dir` | — | Local directory for intermediate artifacts |
|
|
57
|
+
| `--no-publish` | — | Skip publishing report to Confluence |
|
|
58
|
+
| `--verbose` | — | Enable DEBUG-level logging |
|
|
59
|
+
| `--quiet` | — | Suppress progress messages |
|
|
60
|
+
|
|
61
|
+
### Exit Codes
|
|
62
|
+
|
|
63
|
+
| Code | Meaning |
|
|
64
|
+
|------|---------|
|
|
65
|
+
| 0 | Success |
|
|
66
|
+
| 1 | Parameter validation error |
|
|
67
|
+
| 2 | Export stage failure |
|
|
68
|
+
| 3 | Evaluation stage failure |
|
|
69
|
+
| 4 | Publish stage failure |
|
|
70
|
+
|
|
71
|
+
## MCP Server — aspice-mcp
|
|
72
|
+
|
|
73
|
+
An MCP (Model Context Protocol) server exposing evaluation and Confluence tools to AI assistants. It uses **stdio transport** (JSON-RPC 2.0) and works with any MCP-compatible client.
|
|
74
|
+
|
|
75
|
+
### Configuration
|
|
76
|
+
|
|
77
|
+
The server is configured in your MCP client's config file. The exact location depends on the client:
|
|
78
|
+
|
|
79
|
+
| Client | Config file |
|
|
80
|
+
|--------|-------------|
|
|
81
|
+
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
82
|
+
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
83
|
+
| Kiro | `.kiro/settings/mcp.json` (workspace) or `~/.kiro/settings/mcp.json` (global) |
|
|
84
|
+
| VS Code (Copilot) | `.vscode/mcp.json` |
|
|
85
|
+
|
|
86
|
+
Add the following to your config:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"mcpServers": {
|
|
91
|
+
"aspice": {
|
|
92
|
+
"command": "aspice-mcp",
|
|
93
|
+
"args": [],
|
|
94
|
+
"env": {
|
|
95
|
+
"CONFLUENCE_EMAIL": "user@acme.com",
|
|
96
|
+
"CONFLUENCE_API_TOKEN": "your-token",
|
|
97
|
+
"AWS_DEFAULT_REGION": "us-east-1"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
The `env` block passes credentials to the server process. Tools that need Confluence access (`export_page`) or AI providers (`evaluate_sdp`, `describe_image`) will use these values. You can omit credentials here and pass them per-tool-call instead.
|
|
105
|
+
|
|
106
|
+
If `aspice-mcp` is not on your `PATH` (e.g. installed in a virtualenv), use the full path:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"mcpServers": {
|
|
111
|
+
"aspice": {
|
|
112
|
+
"command": "/path/to/venv/bin/aspice-mcp",
|
|
113
|
+
"args": []
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Starting Manually (for testing)
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
aspice-mcp
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
The server reads JSON-RPC requests from stdin and writes responses to stdout. Logs go to stderr.
|
|
126
|
+
|
|
127
|
+
### Tool Inventory
|
|
128
|
+
|
|
129
|
+
| Tool | Description |
|
|
130
|
+
|------|-------------|
|
|
131
|
+
| `evaluate_sdp` | Evaluate an SDP document against ASPICE knowledge base criteria |
|
|
132
|
+
| `validate_kb` | Validate a knowledge base directory for schema compliance and completeness |
|
|
133
|
+
| `list_standards` | List available knowledge base standards and their process groups |
|
|
134
|
+
| `export_page` | Export a Confluence Cloud page to Markdown with AI image descriptions |
|
|
135
|
+
| `describe_image` | Generate an AI description of an image file |
|
|
136
|
+
|
|
137
|
+
### Tool Parameters
|
|
138
|
+
|
|
139
|
+
**evaluate_sdp** — `provider` (required), `model` (required), `sdp_path`, `sdp_content`, `target_level` (1–5, default 3), `process_groups`, `standard`
|
|
140
|
+
|
|
141
|
+
**validate_kb** — `kb_path` (required), `standard`
|
|
142
|
+
|
|
143
|
+
**list_standards** — `kb_path` (optional, uses bundled KB if omitted)
|
|
144
|
+
|
|
145
|
+
**export_page** — `page_url` (required), `output_dir` (required), `email` (required), `api_token` (required), `ai_provider`, `ai_model`, `output_format`
|
|
146
|
+
|
|
147
|
+
**describe_image** — `image_path` (required), `provider` (required), `model` (required), `is_gliffy`, `page_title`
|
|
148
|
+
|
|
149
|
+
### Example Tool Call (JSON-RPC)
|
|
150
|
+
|
|
151
|
+
```json
|
|
152
|
+
{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "validate_kb", "arguments": {"kb_path": "/path/to/knowledge_base", "standard": "aspice"}}}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Response:
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{"jsonrpc": "2.0", "id": 1, "result": {"content": [{"type": "text", "text": "{\"is_valid\": true, ...}"}]}}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Error Handling
|
|
162
|
+
|
|
163
|
+
Invalid parameters return a structured error with code `-32602`:
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{"jsonrpc": "2.0", "id": 1, "error": {"code": -32602, "message": "Invalid params", "data": {"tool": "evaluate_sdp", "parameter": "provider", "actual_value": "gpt", "valid_values": ["bedrock", "openai", "anthropic"], "suggestion": "Use one of: bedrock, openai, anthropic"}}}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Installation
|
|
170
|
+
|
|
171
|
+
### From the monorepo (development)
|
|
172
|
+
|
|
173
|
+
Install all three packages in editable mode from the repo root:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
pip install -e ./confluence-ai
|
|
177
|
+
pip install -e ./aspice-eval
|
|
178
|
+
pip install -e ./aspice-check
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
This registers the `aspice-analyze` and `aspice-mcp` commands in your environment. Verify:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
which aspice-mcp
|
|
185
|
+
# → /path/to/venv/bin/aspice-mcp
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### From PyPI (once published)
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
pip install aspice-check
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
This pulls in `confluence-ai` and `aspice-eval` automatically.
|
|
195
|
+
|
|
196
|
+
### Making `aspice-mcp` available to MCP clients
|
|
197
|
+
|
|
198
|
+
MCP clients launch the server as a subprocess, so the `aspice-mcp` command must be resolvable from the client's environment. Two options:
|
|
199
|
+
|
|
200
|
+
1. **Use the absolute path** in your MCP config (works regardless of PATH):
|
|
201
|
+
```json
|
|
202
|
+
{ "command": "/path/to/venv/bin/aspice-mcp" }
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
2. **Activate the venv** before launching the client, or install into the system Python so `aspice-mcp` is on the global PATH.
|
|
206
|
+
|
|
207
|
+
To find the path after installing:
|
|
208
|
+
```bash
|
|
209
|
+
which aspice-mcp
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Requires Python 3.10+.
|
|
213
|
+
|
|
214
|
+
## License
|
|
215
|
+
|
|
216
|
+
MIT
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "aspice-check"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Orchestrator composing confluence-ai and aspice-eval into a pipeline CLI and MCP server"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "ASPICE Check Contributors"},
|
|
14
|
+
]
|
|
15
|
+
keywords = ["aspice", "confluence", "mcp", "pipeline", "orchestrator"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 3 - Alpha",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"License :: OSI Approved :: MIT License",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.10",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Topic :: Software Development :: Quality Assurance",
|
|
25
|
+
"Typing :: Typed",
|
|
26
|
+
]
|
|
27
|
+
dependencies = [
|
|
28
|
+
"confluence-ai>=0.1.0",
|
|
29
|
+
"aspice-eval>=0.1.0",
|
|
30
|
+
"click>=8.1.0",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
[project.optional-dependencies]
|
|
34
|
+
dev = [
|
|
35
|
+
"pytest>=7.4.0",
|
|
36
|
+
"hypothesis>=6.90.0",
|
|
37
|
+
"pytest-mock",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
[project.scripts]
|
|
41
|
+
aspice-analyze = "aspice_check.pipeline:analyze"
|
|
42
|
+
aspice-mcp = "aspice_check.mcp_server:main"
|
|
43
|
+
|
|
44
|
+
[tool.setuptools.packages.find]
|
|
45
|
+
where = ["src"]
|
|
46
|
+
|
|
47
|
+
[tool.setuptools.package-data]
|
|
48
|
+
aspice_check = ["py.typed"]
|
|
49
|
+
|
|
50
|
+
[tool.pytest.ini_options]
|
|
51
|
+
testpaths = ["tests"]
|
|
52
|
+
pythonpath = ["src"]
|
|
53
|
+
|
|
54
|
+
[tool.hypothesis]
|
|
55
|
+
database_backend = "directory"
|