dell-mcp 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.
Files changed (106) hide show
  1. dell_mcp-0.1.0/PKG-INFO +23 -0
  2. dell_mcp-0.1.0/README.md +382 -0
  3. dell_mcp-0.1.0/dell_mcp.egg-info/PKG-INFO +23 -0
  4. dell_mcp-0.1.0/dell_mcp.egg-info/SOURCES.txt +104 -0
  5. dell_mcp-0.1.0/dell_mcp.egg-info/dependency_links.txt +1 -0
  6. dell_mcp-0.1.0/dell_mcp.egg-info/entry_points.txt +2 -0
  7. dell_mcp-0.1.0/dell_mcp.egg-info/requires.txt +18 -0
  8. dell_mcp-0.1.0/dell_mcp.egg-info/top_level.txt +1 -0
  9. dell_mcp-0.1.0/pyproject.toml +61 -0
  10. dell_mcp-0.1.0/setup.cfg +4 -0
  11. dell_mcp-0.1.0/src/__init__.py +0 -0
  12. dell_mcp-0.1.0/src/ai_clustering/__init__.py +0 -0
  13. dell_mcp-0.1.0/src/ai_clustering/dependency_matcher.py +160 -0
  14. dell_mcp-0.1.0/src/ai_clustering/embedding_service.py +154 -0
  15. dell_mcp-0.1.0/src/ai_clustering/explain.py +29 -0
  16. dell_mcp-0.1.0/src/ai_clustering/graph_clustering.py +531 -0
  17. dell_mcp-0.1.0/src/ai_clustering/ingest_and_cluster.py +216 -0
  18. dell_mcp-0.1.0/src/ai_clustering/nl_compiler.py +37 -0
  19. dell_mcp-0.1.0/src/ai_clustering/ollama_service.py +84 -0
  20. dell_mcp-0.1.0/src/ai_clustering/schemas/workflow.py +69 -0
  21. dell_mcp-0.1.0/src/ai_clustering/workflow_generator.py +1 -0
  22. dell_mcp-0.1.0/src/ai_clustering/workflow_naming.py +106 -0
  23. dell_mcp-0.1.0/src/cli/__init__.py +3 -0
  24. dell_mcp-0.1.0/src/cli/commands/__init__.py +1 -0
  25. dell_mcp-0.1.0/src/cli/commands/ansible.py +63 -0
  26. dell_mcp-0.1.0/src/cli/commands/audit.py +86 -0
  27. dell_mcp-0.1.0/src/cli/commands/cluster.py +52 -0
  28. dell_mcp-0.1.0/src/cli/commands/compatibility.py +133 -0
  29. dell_mcp-0.1.0/src/cli/commands/config.py +74 -0
  30. dell_mcp-0.1.0/src/cli/commands/diagnostics.py +119 -0
  31. dell_mcp-0.1.0/src/cli/commands/governance.py +112 -0
  32. dell_mcp-0.1.0/src/cli/commands/pipeline.py +51 -0
  33. dell_mcp-0.1.0/src/cli/commands/runtime.py +108 -0
  34. dell_mcp-0.1.0/src/cli/commands/server.py +36 -0
  35. dell_mcp-0.1.0/src/cli/commands/system.py +45 -0
  36. dell_mcp-0.1.0/src/cli/components.py +321 -0
  37. dell_mcp-0.1.0/src/cli/container.py +52 -0
  38. dell_mcp-0.1.0/src/cli/context.py +8 -0
  39. dell_mcp-0.1.0/src/cli/exceptions.py +12 -0
  40. dell_mcp-0.1.0/src/cli/main.py +179 -0
  41. dell_mcp-0.1.0/src/cli/plugins/__init__.py +48 -0
  42. dell_mcp-0.1.0/src/cli/services/__init__.py +23 -0
  43. dell_mcp-0.1.0/src/cli/services/ansible.py +50 -0
  44. dell_mcp-0.1.0/src/cli/services/audit.py +59 -0
  45. dell_mcp-0.1.0/src/cli/services/bridge.py +20 -0
  46. dell_mcp-0.1.0/src/cli/services/cluster.py +119 -0
  47. dell_mcp-0.1.0/src/cli/services/compatibility.py +140 -0
  48. dell_mcp-0.1.0/src/cli/services/config.py +94 -0
  49. dell_mcp-0.1.0/src/cli/services/diagnostics.py +148 -0
  50. dell_mcp-0.1.0/src/cli/services/governance.py +136 -0
  51. dell_mcp-0.1.0/src/cli/services/runtime.py +75 -0
  52. dell_mcp-0.1.0/src/cli/services/system.py +59 -0
  53. dell_mcp-0.1.0/src/cli/theme.py +170 -0
  54. dell_mcp-0.1.0/src/core/__init__.py +33 -0
  55. dell_mcp-0.1.0/src/core/compatibility/ansible_enricher.py +167 -0
  56. dell_mcp-0.1.0/src/core/compatibility/engine.py +664 -0
  57. dell_mcp-0.1.0/src/core/compatibility/models.py +202 -0
  58. dell_mcp-0.1.0/src/core/compatibility/orchestrator.py +236 -0
  59. dell_mcp-0.1.0/src/core/compatibility/repository.py +374 -0
  60. dell_mcp-0.1.0/src/core/compatibility/sources.py +228 -0
  61. dell_mcp-0.1.0/src/core/compression.py +136 -0
  62. dell_mcp-0.1.0/src/core/config.py +110 -0
  63. dell_mcp-0.1.0/src/core/database.py +1044 -0
  64. dell_mcp-0.1.0/src/core/exceptions.py +120 -0
  65. dell_mcp-0.1.0/src/core/metrics.py +240 -0
  66. dell_mcp-0.1.0/src/core/models.py +245 -0
  67. dell_mcp-0.1.0/src/governance/__init__.py +1 -0
  68. dell_mcp-0.1.0/src/governance/core/__init__.py +1 -0
  69. dell_mcp-0.1.0/src/governance/core/policy.py +60 -0
  70. dell_mcp-0.1.0/src/governance/core/risk.py +88 -0
  71. dell_mcp-0.1.0/src/governance/core/validator.py +58 -0
  72. dell_mcp-0.1.0/src/governance/middleware.py +89 -0
  73. dell_mcp-0.1.0/src/governance/runtime/__init__.py +1 -0
  74. dell_mcp-0.1.0/src/governance/runtime/interceptor.py +63 -0
  75. dell_mcp-0.1.0/src/parser/__init__.py +9 -0
  76. dell_mcp-0.1.0/src/parser/asyncapi_parser.py +61 -0
  77. dell_mcp-0.1.0/src/parser/graphql_parser.py +66 -0
  78. dell_mcp-0.1.0/src/parser/grpc_parser.py +57 -0
  79. dell_mcp-0.1.0/src/parser/openapi_parser.py +369 -0
  80. dell_mcp-0.1.0/src/proxy/__init__.py +0 -0
  81. dell_mcp-0.1.0/src/proxy/api.py +1168 -0
  82. dell_mcp-0.1.0/src/proxy/executors/__init__.py +11 -0
  83. dell_mcp-0.1.0/src/proxy/executors/base.py +56 -0
  84. dell_mcp-0.1.0/src/proxy/executors/dell_omsdk_executor.py +68 -0
  85. dell_mcp-0.1.0/src/proxy/executors/httpx_executor.py +289 -0
  86. dell_mcp-0.1.0/src/proxy/executors/workflow_execution_service.py +243 -0
  87. dell_mcp-0.1.0/src/proxy/server.py +802 -0
  88. dell_mcp-0.1.0/src/proxy/stdio_server.py +37 -0
  89. dell_mcp-0.1.0/tests/test_caching_optimizer.py +131 -0
  90. dell_mcp-0.1.0/tests/test_clustering_quality.py +70 -0
  91. dell_mcp-0.1.0/tests/test_edge_concurrency.py +98 -0
  92. dell_mcp-0.1.0/tests/test_edge_resilience.py +94 -0
  93. dell_mcp-0.1.0/tests/test_edge_security.py +97 -0
  94. dell_mcp-0.1.0/tests/test_generator_bootstrap.py +113 -0
  95. dell_mcp-0.1.0/tests/test_governance_api.py +275 -0
  96. dell_mcp-0.1.0/tests/test_hierarchical_exposure.py +112 -0
  97. dell_mcp-0.1.0/tests/test_hierarchical_exposure_comprehensive.py +157 -0
  98. dell_mcp-0.1.0/tests/test_microservice.py +134 -0
  99. dell_mcp-0.1.0/tests/test_mock_api.py +34 -0
  100. dell_mcp-0.1.0/tests/test_multi_api_ingestion.py +165 -0
  101. dell_mcp-0.1.0/tests/test_nl_compiler.py +89 -0
  102. dell_mcp-0.1.0/tests/test_parser.py +61 -0
  103. dell_mcp-0.1.0/tests/test_real_world_specs.py +69 -0
  104. dell_mcp-0.1.0/tests/test_security_hardening.py +73 -0
  105. dell_mcp-0.1.0/tests/test_server.py +28 -0
  106. dell_mcp-0.1.0/tests/test_workflow_lifecycle_patterns.py +184 -0
@@ -0,0 +1,23 @@
1
+ Metadata-Version: 2.4
2
+ Name: dell-mcp
3
+ Version: 0.1.0
4
+ Summary: Dell Enterprise MCP Workflow Proxy
5
+ Requires-Python: >=3.10
6
+ Requires-Dist: fastmcp>=3.4.2
7
+ Requires-Dist: httpx>=0.28.1
8
+ Requires-Dist: instructor>=1.15.3
9
+ Requires-Dist: ollama>=0.6.2
10
+ Requires-Dist: openapi-core>=0.23.1
11
+ Requires-Dist: pydantic>=2.13.4
12
+ Requires-Dist: fastapi>=0.110.0
13
+ Requires-Dist: uvicorn>=0.30.0
14
+ Requires-Dist: networkx>=3.0
15
+ Requires-Dist: sentence-transformers>=3.0.0
16
+ Requires-Dist: scikit-learn>=1.5.0
17
+ Requires-Dist: leidenalg>=0.10.2
18
+ Requires-Dist: igraph>=0.11.0
19
+ Requires-Dist: tenacity>=9.1.4
20
+ Requires-Dist: sqlalchemy>=2.0.51
21
+ Requires-Dist: aiosqlite>=0.22.1
22
+ Requires-Dist: PyYAML>=6.0.1
23
+ Requires-Dist: mcp>=0.1.0
@@ -0,0 +1,382 @@
1
+ # Dell Enterprise MCP Proxy - Infrastructure Command Center CLI (`drake`)
2
+
3
+ The **Infrastructure Command Center CLI (`drake`)** is the primary operational control plane and administration utility for the Dell Enterprise MCP Proxy platform.
4
+
5
+ It is designed for:
6
+ * **Infrastructure Engineers** managing bare-metal systems and server topologies.
7
+ * **Platform Reliability Engineers (PRE)** monitoring runtime states and API availability.
8
+ * **Dell PowerEdge Administrators** validating hardware compliance and firmware inventories.
9
+ * **Governance & Compliance Teams** auditing AI-generated workflows and reviewing action ledgers.
10
+
11
+ The CLI acts as a thin presentation and orchestration layer over the underlying Dell MCP services, presenting a high-performance, unified, and resilient command center experience.
12
+
13
+ ---
14
+
15
+ ## Architecture Diagram
16
+
17
+ The CLI is decoupled from the core business engines and repositories using a strict presentation layer design:
18
+
19
+ ```mermaid
20
+ flowchart TD
21
+ subgraph Presentation Layer
22
+ A[Operator Console / shell] -->|drake CLI| B[Typer Main Router src/cli/main.py]
23
+ B -->|Command Group Router src/cli/commands/*| C[CLIContainer src/cli/container.py]
24
+ C -->|Lazy Resolution| D[CLI Service Adapter src/cli/services/*]
25
+ end
26
+ subgraph Core Platform Services
27
+ D -->|Database Sync / Async Session| E[(SQLite governance.db)]
28
+ D -->|Pre-flight Verification| F[Compatibility Engine]
29
+ D -->|Playbook Enrichment| G[Ansible Exporter]
30
+ D -->|FastMCP Runtime State| H[Execution Manager]
31
+ end
32
+ ```
33
+
34
+ ### Dependency Rules
35
+ * Commands **must never** directly instantiate SQLite connections, SQLAlchemy sessions, HTTPX clients, or core logic engines.
36
+ * All operations must flow through service adapters resolved via the centralized **CLIContainer**.
37
+ * Console visual structures are decoupled from business logic.
38
+
39
+ ---
40
+
41
+ ## Installation & Requirements
42
+
43
+ ### System Requirements
44
+ * Python 3.10 or higher.
45
+ * `uv` (fast Python package installer).
46
+ * Stateful access to `data/governance.db` (seeded and active).
47
+
48
+ ### Editable Development Installation
49
+ Install the project dependencies and wire the executable script locally using `uv`:
50
+
51
+ #### 1. Install uv
52
+ ```bash
53
+ curl -LsSf https://astral.sh/uv/install.sh | sh
54
+ ```
55
+
56
+ #### 2. Install Local LLM Engine (Ollama)
57
+ You must also install and start the local LLM engine Ollama and pull/run the Llama3 model:
58
+ ```bash
59
+ # Run Ollama with Llama3 model
60
+ ollama run llama3
61
+ ```
62
+
63
+ #### 3. Environment Setup
64
+ Initialize the virtual environment and install all dependencies:
65
+ ```bash
66
+ # Sync all platform virtual environment dependencies
67
+ uv sync
68
+
69
+ # Install the drake package in editable mode
70
+ uv pip install -e .
71
+ ```
72
+
73
+ #### 4. Activate the Virtual Environment
74
+ Activate the `uv`-managed virtual environment so that `drake` resolves to the correct venv binary:
75
+ ```powershell
76
+ # Windows (PowerShell) — run once per terminal session
77
+ .venv\Scripts\Activate.ps1
78
+ ```
79
+
80
+ After activation, run bare `drake` commands directly:
81
+ ```bash
82
+ drake --help
83
+ ```
84
+
85
+ > **Alternative (no activation needed):** Prefix every command with `uv run`:
86
+ > ```bash
87
+ > uv run drake --help
88
+ > uv run drake overview
89
+ > ```
90
+
91
+ > **Environment Variable:** Ensure the following variable is defined in your `.env` file:
92
+ > `DELL_MCP_API_KEY` — used in `src/proxy/api.py` to authenticate proxy calls and administration endpoints.
93
+
94
+ ---
95
+
96
+ ## Quick Start
97
+
98
+ Activate the virtual environment first, then run commands:
99
+
100
+ ```powershell
101
+ # 1. Activate venv (once per terminal session)
102
+ .venv\Scripts\Activate.ps1
103
+
104
+ # 2. Print global help instructions and subcommand catalog
105
+ drake --help
106
+
107
+ # 3. Render the executive control plane dashboard overview
108
+ drake overview
109
+
110
+ # 4. Verify subsystem readiness and health assessment matrix
111
+ drake health
112
+ ```
113
+
114
+ > **Or without activation:** prefix every command with `uv run drake ...`
115
+
116
+ ---
117
+
118
+ ## Command Reference
119
+
120
+ The Command Center organizes operational tasks into specialized command groups:
121
+
122
+ ### 1. `cluster`
123
+ Manages AI clustering, OpenAPI integrations, and spec parsing.
124
+ * **`summary`**
125
+ * *Purpose*: Render clustering metrics and distribution data.
126
+ * *Syntax*: `drake cluster summary`
127
+ * *Example Output*: Prints total endpoints, Leiden clusters, and average confidence levels.
128
+ * **`graph`**
129
+ * *Purpose*: Display active relationship graphs of endpoints.
130
+ * *Syntax*: `drake cluster graph`
131
+ * **`run --spec <path>`**
132
+ * *Purpose*: Parse an OpenAPI specification file and regenerate workflow clusters.
133
+ * *Syntax*: `drake cluster run --spec openapi.json`
134
+
135
+ ### 2. `governance`
136
+ Enforces human-in-the-loop review cycles for LLM-generated workflows.
137
+ * **`pending`**
138
+ * *Purpose*: List all workflows awaiting human approval.
139
+ * *Syntax*: `drake governance pending`
140
+ * **`approved`**
141
+ * *Purpose*: List all certified/approved operational workflows.
142
+ * *Syntax*: `drake governance approved`
143
+ * **`rejected`**
144
+ * *Purpose*: List workflows blocked or rejected by operators.
145
+ * *Syntax*: `drake governance rejected`
146
+ * **`review <workflow_id>`**
147
+ * *Purpose*: Inspect a workflow's details and constituent API steps.
148
+ * *Syntax*: `drake governance review test_wf_1`
149
+ * **`approve <workflow_id>`**
150
+ * *Purpose*: Approve a pending workflow, promoting it to an executable FastMCP tool.
151
+ * *Syntax*: `drake governance approve test_wf_1`
152
+ * **`reject <workflow_id> --reason <text>`**
153
+ * *Purpose*: Reject a workflow and document the audit reason.
154
+ * *Syntax*: `drake governance reject test_wf_1 --reason "Security validation failed"`
155
+
156
+ ### 3. `compatibility`
157
+ Pre-flight verification intelligence.
158
+ * **`validate <workflow_id> --target-ip <ip>`**
159
+ * *Purpose*: Validate workflow steps against target hardware.
160
+ * *Syntax*: `drake compatibility validate test_wf_1 --target-ip 192.168.0.120`
161
+ * **`explain <workflow_id>`**
162
+ * *Purpose*: Render the DAG rules tree that evaluates the workflow.
163
+ * *Syntax*: `drake compatibility explain test_wf_1`
164
+ * **`dashboard <workflow_id> --target-ip <ip>`**
165
+ * *Purpose*: Renders the decision cockpit (see flagship section below).
166
+ * *Syntax*: `drake compatibility dashboard test_wf_1 --target-ip 192.168.0.120`
167
+ * **`rules`**
168
+ * *Purpose*: Print the active policies and compatibility rules catalog.
169
+ * *Syntax*: `drake compatibility rules`
170
+ * **`device <ip>`**
171
+ * *Purpose*: Query stateful cached specifications for a datacenter node.
172
+ * *Syntax*: `drake compatibility device 192.168.0.120`
173
+
174
+ ### 4. `runtime`
175
+ Controls the FastMCP integration hooks.
176
+ * **`tools`**
177
+ * *Purpose*: List currently exposed FastMCP tools ready for client consumption.
178
+ * *Syntax*: `drake runtime tools`
179
+ * **`reload`**
180
+ * *Purpose*: Trigger hot-reloads to refresh tool mappings from database states.
181
+ * *Syntax*: `drake runtime reload`
182
+ * **`execute <tool_name> --params <json>`**
183
+ * *Purpose*: Manually invoke a registered workflow.
184
+ * *Syntax*: `drake runtime execute test_workflow --params '{"sys_id": 1}'`
185
+
186
+ ### 5. `ansible`
187
+ Exports workflow logic to infrastructure-as-code files.
188
+ * **`preview <workflow_id>`**
189
+ * *Purpose*: Render syntax-highlighted playbook configurations directly on the console.
190
+ * *Syntax*: `drake ansible preview test_wf_1`
191
+ * **`export <workflow_id> --output <path>`**
192
+ * *Purpose*: Export enriched playbooks directly to files.
193
+ * *Syntax*: `drake ansible export test_wf_1 --output playbooks/deploy.yml`
194
+
195
+ ### 6. `audit`
196
+ Exposes the compliance history ledger.
197
+ * **`events`**
198
+ * *Purpose*: List administrative events, modifications, and approvals.
199
+ * *Syntax*: `drake audit events`
200
+ * **`executions`**
201
+ * *Purpose*: Print workflow runs, durations, status codes, and targets.
202
+ * *Syntax*: `drake audit executions`
203
+ * **`summary`**
204
+ * *Purpose*: Present compliance summaries and error trends.
205
+ * *Syntax*: `drake audit summary`
206
+
207
+ ### 7. `system`
208
+ Prints operational topology data.
209
+ * **`topology`**
210
+ * *Purpose*: Display the system dependencies tree.
211
+ * *Syntax*: `drake system topology`
212
+
213
+ ### 8. `diagnostics`
214
+ Evaluates internal health checks.
215
+ * **`db`** / **`api`** / **`compatibility`** / **`runtime`**
216
+ * *Purpose*: Troubleshoot connections to database files, REST endpoints, and facts caches.
217
+ * *Syntax*: `drake diagnostics db`
218
+
219
+ ---
220
+
221
+ ## Flagship Feature: Compatibility Cockpit
222
+
223
+ The **Compatibility Cockpit** provides a single Go/No-Go verdict before executing any workflow on target hardware:
224
+
225
+ ```bash
226
+ drake compatibility dashboard <workflow_id> --target-ip <ip>
227
+ ```
228
+
229
+ ### Cockpit Panels
230
+
231
+ 1. **Target Device**: Displays model, BIOS version, Lifecycle Controller version, and scan time.
232
+ 2. **Validation Scores**:
233
+ * *Compatibility Score*: Measures compliance with active rules catalog (0-100%).
234
+ * *Risk Score*: Computes operational risk coefficients (0-100).
235
+ * *Blast Radius*: Outlines impact boundary (e.g. `NODE`, `CHASSIS`, `RACK`, `DATACENTER`).
236
+ * *Confidence*: Quality indicator of cached/retrieved device specifications.
237
+ 3. **Violations**: Lists check failures, expected vs actual properties, and corrective remediation actions.
238
+ 4. **Prerequisites Dependencies**: Structured tree showing parent-child dependency checks.
239
+ 5. **Final Execution Verdict**: Bold colored indicator marking either `✓ SAFE TO EXECUTE` or `✗ BLOCK EXECUTION`.
240
+
241
+ ---
242
+
243
+ ## Universal JSON Mode
244
+
245
+ To support scripting, automation pipeline runs, and DevOps integration, every CLI command supports the `--json` flag:
246
+
247
+ ```bash
248
+ drake --json compatibility dashboard test_wf_1 --target-ip 192.168.0.120
249
+ ```
250
+
251
+ When `--json` is enabled:
252
+ * All styled panels, colors, tables, trees, and interactive spinners are **bypassed**.
253
+ * Only valid machine-readable JSON is written to `stdout`.
254
+ * Standard logs and non-critical warnings are redirected to `stderr`.
255
+
256
+ ---
257
+
258
+ ## Watch Mode
259
+
260
+ Monitor executive statuses or health assessment matrices in real-time using watch flags:
261
+
262
+ ```bash
263
+ drake overview --watch --interval 2
264
+ drake health --watch
265
+ ```
266
+
267
+ * **`--watch`**: Toggles live loop.
268
+ * **`--interval` (`-i`)**: Defines update frequency in seconds (default: 5).
269
+ * *Exit*: Cleanly intercepts `Ctrl+C` to terminate the loops without locking SQLite files.
270
+
271
+ ---
272
+
273
+ ## Plugin System
274
+
275
+ The Command Center includes a self-discovering plugin mechanism located in **`src/cli/plugins/`**.
276
+
277
+ ### How Plugin Discovery Works
278
+ * The CLI scans the `src/cli/plugins/` directory at startup.
279
+ * It dynamically loads modules that do not start with an underscore (`_`).
280
+ * It registers subcommands if they expose a `register_plugin(app)` function or expose a `typer.Typer()` application named `app`.
281
+
282
+ ### Authoring Custom Plugins
283
+ Create a Python module in `src/cli/plugins/network_config.py`:
284
+ ```python
285
+ import typer
286
+
287
+ app = typer.Typer(help="Manage switch network configurations")
288
+
289
+ @app.command("show")
290
+ def show_switch_status():
291
+ print("Switch connections operational.")
292
+ ```
293
+ The CLI automatically loads this, making the command `drake network_config show` immediately available.
294
+
295
+ ### Failure Isolation
296
+ If a plugin raises an exception during import or initialization:
297
+ * The exception is caught and printed as a warning (`⚠ WARNING: Plugin load failed`).
298
+ * The core CLI continues to boot successfully, preserving primary operations.
299
+
300
+ ---
301
+
302
+ ## Security Features
303
+
304
+ ### Secrets Masking Shield
305
+ To ensure security, the CLI scans outputs for sensitive keys (e.g. `password`, `token`, `key`, `secret`, `authorization`, `ssn`) and masks them recursively:
306
+ * **Console Output**: Masked with `********` inside tables and panels.
307
+ * **JSON Mode**: Formatted structure replaces sensitive strings with `********`, preventing data leaks in automation logs.
308
+
309
+ ### Access Trails
310
+ Operations that alter states (e.g. `governance approve`, `governance reject`) write audit records to the local governance ledger, documenting administrative actor and time.
311
+
312
+ ---
313
+
314
+ ## Troubleshooting
315
+
316
+ ### Legacy Windows Output Crash (`UnicodeEncodeError`)
317
+ * *Symptom*: Commands crash printing `UnicodeEncodeError: 'charmap' codec can't encode character...`
318
+ * *Cause*: Legacy Windows terminal character set (e.g. CP-1252) cannot print unicode symbols (`⚠`, `✓`).
319
+ * *Resolution*: Force the environment to use UTF-8 encoding:
320
+ ```powershell
321
+ $env:PYTHONIOENCODING="utf-8"
322
+ ```
323
+
324
+ ### Packaging Script Location Error (`ModuleNotFoundError`)
325
+ * *Symptom*: Running `drake` raises `ModuleNotFoundError: No module named 'src'`.
326
+ * *Cause*: The bare `drake` command resolves to a system-level Python install that does not have access to the project source tree. This happens when the virtual environment is not activated.
327
+ * *Resolution (preferred)*: Activate the `uv` virtual environment before running any commands:
328
+ ```powershell
329
+ .venv\Scripts\Activate.ps1
330
+ drake --help
331
+ ```
332
+ * *Resolution (alternative)*: Use `uv run` to automatically route through the correct venv:
333
+ ```bash
334
+ uv run drake --help
335
+ uv run drake health
336
+ ```
337
+
338
+ ### SQLite Database Locks
339
+ * *Symptom*: Actions time out or fail with database locks.
340
+ * *Cause*: Concurrent operations on SQLite files during long-running tasks.
341
+ * *Resolution*: Run `drake diagnostics db` to check connection status. Ensure the microservice FastAPI server is running with WAL journal modes.
342
+
343
+ ---
344
+
345
+ ## Operator Workflows
346
+
347
+ ### Workflow 1: Platform Monitoring
348
+ Verify global status and watch for changes during maintenance windows:
349
+ ```bash
350
+ $env:PYTHONIOENCODING="utf-8"
351
+ drake health
352
+ drake overview --watch --interval 10
353
+ ```
354
+
355
+ ### Workflow 2: Safe Pre-Flight Validation & Approval
356
+ Review a workflow generated by clustering, validate it against target hardware, and approve it:
357
+ ```bash
358
+ # 1. List pending LLM workflows
359
+ drake governance pending
360
+
361
+ # 2. Inspect step details
362
+ drake governance review test_wf_1
363
+
364
+ # 3. Perform pre-flight compatibility evaluation cockpit
365
+ drake compatibility dashboard test_wf_1 --target-ip 192.168.0.120
366
+
367
+ # 4. Approve workflow
368
+ drake governance approve test_wf_1
369
+ ```
370
+
371
+ ### Workflow 3: IaC Automation Export
372
+ Validate a workflow and export it to an enriched Ansible playbook for target datacenter node setups:
373
+ ```bash
374
+ # 1. Verify compatibility
375
+ drake compatibility validate test_wf_1 --target-ip 192.168.0.120
376
+
377
+ # 2. Preview playbooks syntax
378
+ drake ansible preview test_wf_1
379
+
380
+ # 3. Export playbook to target directory
381
+ drake ansible export test_wf_1 --output playbooks/idrac_setup.yml
382
+ ```
@@ -0,0 +1,23 @@
1
+ Metadata-Version: 2.4
2
+ Name: dell-mcp
3
+ Version: 0.1.0
4
+ Summary: Dell Enterprise MCP Workflow Proxy
5
+ Requires-Python: >=3.10
6
+ Requires-Dist: fastmcp>=3.4.2
7
+ Requires-Dist: httpx>=0.28.1
8
+ Requires-Dist: instructor>=1.15.3
9
+ Requires-Dist: ollama>=0.6.2
10
+ Requires-Dist: openapi-core>=0.23.1
11
+ Requires-Dist: pydantic>=2.13.4
12
+ Requires-Dist: fastapi>=0.110.0
13
+ Requires-Dist: uvicorn>=0.30.0
14
+ Requires-Dist: networkx>=3.0
15
+ Requires-Dist: sentence-transformers>=3.0.0
16
+ Requires-Dist: scikit-learn>=1.5.0
17
+ Requires-Dist: leidenalg>=0.10.2
18
+ Requires-Dist: igraph>=0.11.0
19
+ Requires-Dist: tenacity>=9.1.4
20
+ Requires-Dist: sqlalchemy>=2.0.51
21
+ Requires-Dist: aiosqlite>=0.22.1
22
+ Requires-Dist: PyYAML>=6.0.1
23
+ Requires-Dist: mcp>=0.1.0
@@ -0,0 +1,104 @@
1
+ README.md
2
+ pyproject.toml
3
+ dell_mcp.egg-info/PKG-INFO
4
+ dell_mcp.egg-info/SOURCES.txt
5
+ dell_mcp.egg-info/dependency_links.txt
6
+ dell_mcp.egg-info/entry_points.txt
7
+ dell_mcp.egg-info/requires.txt
8
+ dell_mcp.egg-info/top_level.txt
9
+ src/__init__.py
10
+ src/ai_clustering/__init__.py
11
+ src/ai_clustering/dependency_matcher.py
12
+ src/ai_clustering/embedding_service.py
13
+ src/ai_clustering/explain.py
14
+ src/ai_clustering/graph_clustering.py
15
+ src/ai_clustering/ingest_and_cluster.py
16
+ src/ai_clustering/nl_compiler.py
17
+ src/ai_clustering/ollama_service.py
18
+ src/ai_clustering/workflow_generator.py
19
+ src/ai_clustering/workflow_naming.py
20
+ src/ai_clustering/schemas/workflow.py
21
+ src/cli/__init__.py
22
+ src/cli/components.py
23
+ src/cli/container.py
24
+ src/cli/context.py
25
+ src/cli/exceptions.py
26
+ src/cli/main.py
27
+ src/cli/theme.py
28
+ src/cli/commands/__init__.py
29
+ src/cli/commands/ansible.py
30
+ src/cli/commands/audit.py
31
+ src/cli/commands/cluster.py
32
+ src/cli/commands/compatibility.py
33
+ src/cli/commands/config.py
34
+ src/cli/commands/diagnostics.py
35
+ src/cli/commands/governance.py
36
+ src/cli/commands/pipeline.py
37
+ src/cli/commands/runtime.py
38
+ src/cli/commands/server.py
39
+ src/cli/commands/system.py
40
+ src/cli/plugins/__init__.py
41
+ src/cli/services/__init__.py
42
+ src/cli/services/ansible.py
43
+ src/cli/services/audit.py
44
+ src/cli/services/bridge.py
45
+ src/cli/services/cluster.py
46
+ src/cli/services/compatibility.py
47
+ src/cli/services/config.py
48
+ src/cli/services/diagnostics.py
49
+ src/cli/services/governance.py
50
+ src/cli/services/runtime.py
51
+ src/cli/services/system.py
52
+ src/core/__init__.py
53
+ src/core/compression.py
54
+ src/core/config.py
55
+ src/core/database.py
56
+ src/core/exceptions.py
57
+ src/core/metrics.py
58
+ src/core/models.py
59
+ src/core/compatibility/ansible_enricher.py
60
+ src/core/compatibility/engine.py
61
+ src/core/compatibility/models.py
62
+ src/core/compatibility/orchestrator.py
63
+ src/core/compatibility/repository.py
64
+ src/core/compatibility/sources.py
65
+ src/governance/__init__.py
66
+ src/governance/middleware.py
67
+ src/governance/core/__init__.py
68
+ src/governance/core/policy.py
69
+ src/governance/core/risk.py
70
+ src/governance/core/validator.py
71
+ src/governance/runtime/__init__.py
72
+ src/governance/runtime/interceptor.py
73
+ src/parser/__init__.py
74
+ src/parser/asyncapi_parser.py
75
+ src/parser/graphql_parser.py
76
+ src/parser/grpc_parser.py
77
+ src/parser/openapi_parser.py
78
+ src/proxy/__init__.py
79
+ src/proxy/api.py
80
+ src/proxy/server.py
81
+ src/proxy/stdio_server.py
82
+ src/proxy/executors/__init__.py
83
+ src/proxy/executors/base.py
84
+ src/proxy/executors/dell_omsdk_executor.py
85
+ src/proxy/executors/httpx_executor.py
86
+ src/proxy/executors/workflow_execution_service.py
87
+ tests/test_caching_optimizer.py
88
+ tests/test_clustering_quality.py
89
+ tests/test_edge_concurrency.py
90
+ tests/test_edge_resilience.py
91
+ tests/test_edge_security.py
92
+ tests/test_generator_bootstrap.py
93
+ tests/test_governance_api.py
94
+ tests/test_hierarchical_exposure.py
95
+ tests/test_hierarchical_exposure_comprehensive.py
96
+ tests/test_microservice.py
97
+ tests/test_mock_api.py
98
+ tests/test_multi_api_ingestion.py
99
+ tests/test_nl_compiler.py
100
+ tests/test_parser.py
101
+ tests/test_real_world_specs.py
102
+ tests/test_security_hardening.py
103
+ tests/test_server.py
104
+ tests/test_workflow_lifecycle_patterns.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ drake = src.cli.main:main
@@ -0,0 +1,18 @@
1
+ fastmcp>=3.4.2
2
+ httpx>=0.28.1
3
+ instructor>=1.15.3
4
+ ollama>=0.6.2
5
+ openapi-core>=0.23.1
6
+ pydantic>=2.13.4
7
+ fastapi>=0.110.0
8
+ uvicorn>=0.30.0
9
+ networkx>=3.0
10
+ sentence-transformers>=3.0.0
11
+ scikit-learn>=1.5.0
12
+ leidenalg>=0.10.2
13
+ igraph>=0.11.0
14
+ tenacity>=9.1.4
15
+ sqlalchemy>=2.0.51
16
+ aiosqlite>=0.22.1
17
+ PyYAML>=6.0.1
18
+ mcp>=0.1.0
@@ -0,0 +1 @@
1
+ src
@@ -0,0 +1,61 @@
1
+ [project]
2
+ name = "dell-mcp"
3
+ version = "0.1.0"
4
+ description = "Dell Enterprise MCP Workflow Proxy"
5
+ requires-python = ">=3.10"
6
+ dependencies = [
7
+ "fastmcp>=3.4.2",
8
+ "httpx>=0.28.1",
9
+ "instructor>=1.15.3",
10
+ "ollama>=0.6.2",
11
+ "openapi-core>=0.23.1",
12
+ "pydantic>=2.13.4",
13
+ "fastapi>=0.110.0",
14
+ "uvicorn>=0.30.0",
15
+ "networkx>=3.0",
16
+ "sentence-transformers>=3.0.0",
17
+ "scikit-learn>=1.5.0",
18
+ "leidenalg>=0.10.2",
19
+ "igraph>=0.11.0",
20
+ "tenacity>=9.1.4",
21
+ "sqlalchemy>=2.0.51",
22
+ "aiosqlite>=0.22.1",
23
+ "PyYAML>=6.0.1",
24
+ "mcp>=0.1.0",
25
+ ]
26
+
27
+ [project.scripts]
28
+ drake = "src.cli.main:main"
29
+
30
+ [dependency-groups]
31
+ dev = [
32
+ "black>=26.5.1",
33
+ "flake8>=7.3.0",
34
+ "mypy>=2.1.0",
35
+ "pytest>=9.1.0",
36
+ "pytest-asyncio>=0.23.5",
37
+ ]
38
+
39
+ [tool.black]
40
+ line-length = 88
41
+ target-version = ["py311"]
42
+ include = '\.pyi?$'
43
+
44
+ [tool.mypy]
45
+ python_version = "3.11"
46
+ strict = true
47
+ disallow_untyped_defs = true
48
+ ignore_missing_imports = true
49
+
50
+ [tool.pytest.ini_options]
51
+ testpaths = ["tests"]
52
+ asyncio_mode = "auto"
53
+
54
+ [build-system]
55
+ requires = ["setuptools>=61.0.0", "wheel"]
56
+ build-backend = "setuptools.build_meta"
57
+
58
+ [tool.setuptools.packages.find]
59
+ where = ["."]
60
+ include = ["src*"]
61
+
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
File without changes
File without changes