foundry-mcp 0.8.22__py3-none-any.whl
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.
Potentially problematic release.
This version of foundry-mcp might be problematic. Click here for more details.
- foundry_mcp/__init__.py +13 -0
- foundry_mcp/cli/__init__.py +67 -0
- foundry_mcp/cli/__main__.py +9 -0
- foundry_mcp/cli/agent.py +96 -0
- foundry_mcp/cli/commands/__init__.py +37 -0
- foundry_mcp/cli/commands/cache.py +137 -0
- foundry_mcp/cli/commands/dashboard.py +148 -0
- foundry_mcp/cli/commands/dev.py +446 -0
- foundry_mcp/cli/commands/journal.py +377 -0
- foundry_mcp/cli/commands/lifecycle.py +274 -0
- foundry_mcp/cli/commands/modify.py +824 -0
- foundry_mcp/cli/commands/plan.py +640 -0
- foundry_mcp/cli/commands/pr.py +393 -0
- foundry_mcp/cli/commands/review.py +667 -0
- foundry_mcp/cli/commands/session.py +472 -0
- foundry_mcp/cli/commands/specs.py +686 -0
- foundry_mcp/cli/commands/tasks.py +807 -0
- foundry_mcp/cli/commands/testing.py +676 -0
- foundry_mcp/cli/commands/validate.py +982 -0
- foundry_mcp/cli/config.py +98 -0
- foundry_mcp/cli/context.py +298 -0
- foundry_mcp/cli/logging.py +212 -0
- foundry_mcp/cli/main.py +44 -0
- foundry_mcp/cli/output.py +122 -0
- foundry_mcp/cli/registry.py +110 -0
- foundry_mcp/cli/resilience.py +178 -0
- foundry_mcp/cli/transcript.py +217 -0
- foundry_mcp/config.py +1454 -0
- foundry_mcp/core/__init__.py +144 -0
- foundry_mcp/core/ai_consultation.py +1773 -0
- foundry_mcp/core/batch_operations.py +1202 -0
- foundry_mcp/core/cache.py +195 -0
- foundry_mcp/core/capabilities.py +446 -0
- foundry_mcp/core/concurrency.py +898 -0
- foundry_mcp/core/context.py +540 -0
- foundry_mcp/core/discovery.py +1603 -0
- foundry_mcp/core/error_collection.py +728 -0
- foundry_mcp/core/error_store.py +592 -0
- foundry_mcp/core/health.py +749 -0
- foundry_mcp/core/intake.py +933 -0
- foundry_mcp/core/journal.py +700 -0
- foundry_mcp/core/lifecycle.py +412 -0
- foundry_mcp/core/llm_config.py +1376 -0
- foundry_mcp/core/llm_patterns.py +510 -0
- foundry_mcp/core/llm_provider.py +1569 -0
- foundry_mcp/core/logging_config.py +374 -0
- foundry_mcp/core/metrics_persistence.py +584 -0
- foundry_mcp/core/metrics_registry.py +327 -0
- foundry_mcp/core/metrics_store.py +641 -0
- foundry_mcp/core/modifications.py +224 -0
- foundry_mcp/core/naming.py +146 -0
- foundry_mcp/core/observability.py +1216 -0
- foundry_mcp/core/otel.py +452 -0
- foundry_mcp/core/otel_stubs.py +264 -0
- foundry_mcp/core/pagination.py +255 -0
- foundry_mcp/core/progress.py +387 -0
- foundry_mcp/core/prometheus.py +564 -0
- foundry_mcp/core/prompts/__init__.py +464 -0
- foundry_mcp/core/prompts/fidelity_review.py +691 -0
- foundry_mcp/core/prompts/markdown_plan_review.py +515 -0
- foundry_mcp/core/prompts/plan_review.py +627 -0
- foundry_mcp/core/providers/__init__.py +237 -0
- foundry_mcp/core/providers/base.py +515 -0
- foundry_mcp/core/providers/claude.py +472 -0
- foundry_mcp/core/providers/codex.py +637 -0
- foundry_mcp/core/providers/cursor_agent.py +630 -0
- foundry_mcp/core/providers/detectors.py +515 -0
- foundry_mcp/core/providers/gemini.py +426 -0
- foundry_mcp/core/providers/opencode.py +718 -0
- foundry_mcp/core/providers/opencode_wrapper.js +308 -0
- foundry_mcp/core/providers/package-lock.json +24 -0
- foundry_mcp/core/providers/package.json +25 -0
- foundry_mcp/core/providers/registry.py +607 -0
- foundry_mcp/core/providers/test_provider.py +171 -0
- foundry_mcp/core/providers/validation.py +857 -0
- foundry_mcp/core/rate_limit.py +427 -0
- foundry_mcp/core/research/__init__.py +68 -0
- foundry_mcp/core/research/memory.py +528 -0
- foundry_mcp/core/research/models.py +1234 -0
- foundry_mcp/core/research/providers/__init__.py +40 -0
- foundry_mcp/core/research/providers/base.py +242 -0
- foundry_mcp/core/research/providers/google.py +507 -0
- foundry_mcp/core/research/providers/perplexity.py +442 -0
- foundry_mcp/core/research/providers/semantic_scholar.py +544 -0
- foundry_mcp/core/research/providers/tavily.py +383 -0
- foundry_mcp/core/research/workflows/__init__.py +25 -0
- foundry_mcp/core/research/workflows/base.py +298 -0
- foundry_mcp/core/research/workflows/chat.py +271 -0
- foundry_mcp/core/research/workflows/consensus.py +539 -0
- foundry_mcp/core/research/workflows/deep_research.py +4142 -0
- foundry_mcp/core/research/workflows/ideate.py +682 -0
- foundry_mcp/core/research/workflows/thinkdeep.py +405 -0
- foundry_mcp/core/resilience.py +600 -0
- foundry_mcp/core/responses.py +1624 -0
- foundry_mcp/core/review.py +366 -0
- foundry_mcp/core/security.py +438 -0
- foundry_mcp/core/spec.py +4119 -0
- foundry_mcp/core/task.py +2463 -0
- foundry_mcp/core/testing.py +839 -0
- foundry_mcp/core/validation.py +2357 -0
- foundry_mcp/dashboard/__init__.py +32 -0
- foundry_mcp/dashboard/app.py +119 -0
- foundry_mcp/dashboard/components/__init__.py +17 -0
- foundry_mcp/dashboard/components/cards.py +88 -0
- foundry_mcp/dashboard/components/charts.py +177 -0
- foundry_mcp/dashboard/components/filters.py +136 -0
- foundry_mcp/dashboard/components/tables.py +195 -0
- foundry_mcp/dashboard/data/__init__.py +11 -0
- foundry_mcp/dashboard/data/stores.py +433 -0
- foundry_mcp/dashboard/launcher.py +300 -0
- foundry_mcp/dashboard/views/__init__.py +12 -0
- foundry_mcp/dashboard/views/errors.py +217 -0
- foundry_mcp/dashboard/views/metrics.py +164 -0
- foundry_mcp/dashboard/views/overview.py +96 -0
- foundry_mcp/dashboard/views/providers.py +83 -0
- foundry_mcp/dashboard/views/sdd_workflow.py +255 -0
- foundry_mcp/dashboard/views/tool_usage.py +139 -0
- foundry_mcp/prompts/__init__.py +9 -0
- foundry_mcp/prompts/workflows.py +525 -0
- foundry_mcp/resources/__init__.py +9 -0
- foundry_mcp/resources/specs.py +591 -0
- foundry_mcp/schemas/__init__.py +38 -0
- foundry_mcp/schemas/intake-schema.json +89 -0
- foundry_mcp/schemas/sdd-spec-schema.json +414 -0
- foundry_mcp/server.py +150 -0
- foundry_mcp/tools/__init__.py +10 -0
- foundry_mcp/tools/unified/__init__.py +92 -0
- foundry_mcp/tools/unified/authoring.py +3620 -0
- foundry_mcp/tools/unified/context_helpers.py +98 -0
- foundry_mcp/tools/unified/documentation_helpers.py +268 -0
- foundry_mcp/tools/unified/environment.py +1341 -0
- foundry_mcp/tools/unified/error.py +479 -0
- foundry_mcp/tools/unified/health.py +225 -0
- foundry_mcp/tools/unified/journal.py +841 -0
- foundry_mcp/tools/unified/lifecycle.py +640 -0
- foundry_mcp/tools/unified/metrics.py +777 -0
- foundry_mcp/tools/unified/plan.py +876 -0
- foundry_mcp/tools/unified/pr.py +294 -0
- foundry_mcp/tools/unified/provider.py +589 -0
- foundry_mcp/tools/unified/research.py +1283 -0
- foundry_mcp/tools/unified/review.py +1042 -0
- foundry_mcp/tools/unified/review_helpers.py +314 -0
- foundry_mcp/tools/unified/router.py +102 -0
- foundry_mcp/tools/unified/server.py +565 -0
- foundry_mcp/tools/unified/spec.py +1283 -0
- foundry_mcp/tools/unified/task.py +3846 -0
- foundry_mcp/tools/unified/test.py +431 -0
- foundry_mcp/tools/unified/verification.py +520 -0
- foundry_mcp-0.8.22.dist-info/METADATA +344 -0
- foundry_mcp-0.8.22.dist-info/RECORD +153 -0
- foundry_mcp-0.8.22.dist-info/WHEEL +4 -0
- foundry_mcp-0.8.22.dist-info/entry_points.txt +3 -0
- foundry_mcp-0.8.22.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: foundry-mcp
|
|
3
|
+
Version: 0.8.22
|
|
4
|
+
Summary: MCP server for SDD toolkit spec management
|
|
5
|
+
Project-URL: Homepage, https://github.com/tylerburleigh/foundry-mcp
|
|
6
|
+
Project-URL: Repository, https://github.com/tylerburleigh/foundry-mcp
|
|
7
|
+
Author: Tyler Burleigh
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: mcp,sdd,spec-driven-development,specification
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Requires-Dist: click>=8.0.0
|
|
20
|
+
Requires-Dist: fastmcp>=0.1.0
|
|
21
|
+
Requires-Dist: filelock>=3.20.1
|
|
22
|
+
Requires-Dist: mcp>=1.0.0
|
|
23
|
+
Requires-Dist: tomli>=2.0.0; python_version < '3.11'
|
|
24
|
+
Provides-Extra: dashboard
|
|
25
|
+
Requires-Dist: pandas>=2.0.0; extra == 'dashboard'
|
|
26
|
+
Requires-Dist: plotly>=5.18.0; extra == 'dashboard'
|
|
27
|
+
Requires-Dist: streamlit>=1.28.0; extra == 'dashboard'
|
|
28
|
+
Provides-Extra: metrics
|
|
29
|
+
Requires-Dist: prometheus-client>=0.17.0; extra == 'metrics'
|
|
30
|
+
Provides-Extra: observability
|
|
31
|
+
Requires-Dist: opentelemetry-exporter-otlp>=1.20.0; extra == 'observability'
|
|
32
|
+
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == 'observability'
|
|
33
|
+
Requires-Dist: prometheus-client>=0.17.0; extra == 'observability'
|
|
34
|
+
Provides-Extra: test
|
|
35
|
+
Requires-Dist: hypothesis>=6.0.0; extra == 'test'
|
|
36
|
+
Requires-Dist: jsonschema>=4.0.0; extra == 'test'
|
|
37
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'test'
|
|
38
|
+
Requires-Dist: pytest-xdist>=3.0.0; extra == 'test'
|
|
39
|
+
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
40
|
+
Provides-Extra: tracing
|
|
41
|
+
Requires-Dist: opentelemetry-exporter-otlp>=1.20.0; extra == 'tracing'
|
|
42
|
+
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == 'tracing'
|
|
43
|
+
Description-Content-Type: text/markdown
|
|
44
|
+
|
|
45
|
+
# foundry-mcp
|
|
46
|
+
|
|
47
|
+
[](https://www.python.org/downloads/)
|
|
48
|
+
[](https://opensource.org/licenses/MIT)
|
|
49
|
+
[](https://modelcontextprotocol.io/)
|
|
50
|
+
[](https://pypi.org/project/foundry-mcp/)
|
|
51
|
+
|
|
52
|
+
**An MCP server and native CLI that bring spec-driven development to your AI assistant.**
|
|
53
|
+
|
|
54
|
+
foundry-mcp packages the spec lifecycle, a single CLI/service layer, and MCP adapters described in the completed specs under `specs/completed/`. Every MCP response uses the standardized `response-v2` envelope, the CLI shares the same service layer, and feature-flagged tool suites cover environment setup, authoring, validation, LLM review, and automated testing.
|
|
55
|
+
|
|
56
|
+
## 🚀 Why foundry-mcp?
|
|
57
|
+
|
|
58
|
+
- **Single service layer for CLI + MCP** — The completed CLI re-implementation and subprocess elimination specs ensure the CLI and MCP tools share contracts, observability, and feature flags.
|
|
59
|
+
- **Spec lifecycle automation** — Tools manage creation, validation, lifecycle transitions, blockers, and journaling with cursor-based pagination and dependency tracking.
|
|
60
|
+
- **Quality gates & behavioral testing** — A dedicated regression harness keeps foundry-mcp aligned with the legacy claude-sdd-toolkit CLI while integration/unit/property suites guard regressions.
|
|
61
|
+
- **LLM-ready workflows** — Provider abstractions, prompt shielding, and graceful fallbacks power AI review, documentation, and PR creation workflows when LLM access is available.
|
|
62
|
+
- **Security & governance baked in** — API keys, workspace scoping, rate limiting, structured logging, and audit trails are enforced before business logic as mandated by the MCP best-practices remediation spec.
|
|
63
|
+
- **Discovery-first design** — Capabilities are declared through `mcp/capabilities_manifest.json` so clients can negotiate response contracts, feature flags, and tool availability.
|
|
64
|
+
|
|
65
|
+
## 📦 Installation
|
|
66
|
+
|
|
67
|
+
### Pre-requisites
|
|
68
|
+
|
|
69
|
+
- Python 3.10 or higher
|
|
70
|
+
- macOS, Linux, or Windows
|
|
71
|
+
- MCP-compatible client (e.g., Claude Code)
|
|
72
|
+
|
|
73
|
+
### Quick install
|
|
74
|
+
|
|
75
|
+
#### Run instantly with `uvx`
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
uvx foundry-mcp
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Install from PyPI with `pip`
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pip install foundry-mcp
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### Install from source (development)
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
git clone https://github.com/tylerburleigh/foundry-mcp.git
|
|
91
|
+
cd foundry-mcp
|
|
92
|
+
pip install -e ".[test]"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Launch the native SDD CLI
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
python -m foundry_mcp.cli --help
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 📅 Release cadence & support channels
|
|
102
|
+
|
|
103
|
+
- The project currently ships **alpha** releases after each spec milestone; see [CHANGELOG.md](CHANGELOG.md) for the latest tagged version.
|
|
104
|
+
- PyPI publishes semantic versions that align with the spec roadmap (`response_contract_v2`, feature flags, test suites, etc.).
|
|
105
|
+
- MCP capabilities expose rollout state so clients can opt-in to new contracts (for example `response_contract=v2`).
|
|
106
|
+
|
|
107
|
+
## 📋 Key features
|
|
108
|
+
|
|
109
|
+
### Spec lifecycle & governance
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
specs/
|
|
113
|
+
├── pending/ # New specs awaiting activation
|
|
114
|
+
├── active/ # Currently being worked on
|
|
115
|
+
├── completed/ # Finished specs (automatically journaled)
|
|
116
|
+
└── archived/ # Historical reference
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
- Discover and validate specs via `spec(action=...)`.
|
|
120
|
+
- Transition spec folders/states via `lifecycle(action=...)`.
|
|
121
|
+
- Automatically journal decisions, blockers, and dependency updates with audit metadata.
|
|
122
|
+
|
|
123
|
+
### Task operations & execution
|
|
124
|
+
|
|
125
|
+
- `task(action=next|prepare|start|complete|...)` and blocker flows expose the full dependency graph.
|
|
126
|
+
- `plan(action=create|list|review)` supports lightweight planning and review flows.
|
|
127
|
+
- Notifications and sampling channels surface phase completions to MCP clients.
|
|
128
|
+
|
|
129
|
+
### Batch metadata utilities
|
|
130
|
+
|
|
131
|
+
- `task(action=metadata-batch)` — Apply metadata updates (e.g., `file_path`, `estimated_hours`) to multiple nodes at once. Supports flexible AND-based filtering by `node_type`, `phase_id`, or `pattern` regex. Includes `dry_run` mode for previewing changes.
|
|
132
|
+
- `task(action=fix-verification-types)` — Auto-fix invalid or missing `verification_type` on verify nodes. Supports legacy mappings (`test` → `run-tests`, `auto` → `run-tests`) and defaults unknown types to `manual`. Includes `dry_run` mode for previewing fixes.
|
|
133
|
+
|
|
134
|
+
### Code, docs, and testing intelligence
|
|
135
|
+
|
|
136
|
+
- Code navigation tools via `code(action=...)` support symbol lookup and call-graph tracing.
|
|
137
|
+
- Testing tools via `test(action=run|discover, preset=quick|unit|full)` run pytest presets with structured output.
|
|
138
|
+
- Shared adapters mirror claude-sdd-toolkit behavior and integrate with the regression testing harness.
|
|
139
|
+
|
|
140
|
+
### LLM-powered workflows
|
|
141
|
+
|
|
142
|
+
- Configurable provider abstraction with OpenAI, Anthropic, and local backends (Ollama, etc.) plus prompt shielding and observability hooks.
|
|
143
|
+
- AI-enhanced review via `review(action=spec|fidelity|parse-feedback)` and PR helpers degrade gracefully when no LLM is configured.
|
|
144
|
+
- Timeouts, retries, and circuit breakers follow the resilience patterns from the remediation specs.
|
|
145
|
+
|
|
146
|
+
### CLI + MCP integration
|
|
147
|
+
|
|
148
|
+
- Run `foundry-mcp` as an MCP server or `python -m foundry_mcp.cli` for the JSON-first CLI.
|
|
149
|
+
- Both surfaces share response helpers, validation, feature flags, and discovery metadata so you can switch between automated MCP clients and terminal workflows without drift.
|
|
150
|
+
|
|
151
|
+
### Resources & prompts
|
|
152
|
+
|
|
153
|
+
- `foundry://specs/` resources expose full spec hierarchies, journals, and templates for AI assistants.
|
|
154
|
+
- Workflow prompts (`start_feature`, `debug_test`, `complete_phase`, etc.) guide SDD operations end-to-end.
|
|
155
|
+
|
|
156
|
+
## 🔐 Access & security
|
|
157
|
+
|
|
158
|
+
- Workspace roots are scoped via configuration to prevent directory escape.
|
|
159
|
+
- Optional API keys (`FOUNDRY_MCP_API_KEYS`) or tenant TOML overrides enforce authentication before any tool runs.
|
|
160
|
+
- Rate limits and concurrency budgets are declared in the capabilities manifest and enforced server-side with structured audit logs.
|
|
161
|
+
- Sensitive data redaction, prompt shielding, and validation helpers protect against prompt injection or oversized payloads.
|
|
162
|
+
|
|
163
|
+
## 🧾 Response contract & discovery
|
|
164
|
+
|
|
165
|
+
All MCP tools emit the standardized envelope defined in `docs/codebase_standards/mcp_response_schema.md`:
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"success": true,
|
|
170
|
+
"data": { ... },
|
|
171
|
+
"error": null,
|
|
172
|
+
"meta": {
|
|
173
|
+
"version": "response-v2",
|
|
174
|
+
"pagination": { ... },
|
|
175
|
+
"warnings": []
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
- `success`, `data`, `error`, and `meta` are always present so clients never guess at output shape.
|
|
181
|
+
- `response_contract_v2` is feature-flagged; clients advertise support via capability negotiation.
|
|
182
|
+
- `mcp/capabilities_manifest.json` advertises the 17 unified tools (plus feature flags like `unified_manifest`).
|
|
183
|
+
|
|
184
|
+
**Legacy → unified mapping (examples)**
|
|
185
|
+
|
|
186
|
+
| Legacy tool | Unified call |
|
|
187
|
+
|---|---|
|
|
188
|
+
| Legacy Tool (Removed) | Unified Equivalent |
|
|
189
|
+
|----------------------|--------------------|
|
|
190
|
+
| `task-next` | `task(action="next")` |
|
|
191
|
+
| `spec-validate` | `spec(action="validate")` |
|
|
192
|
+
| `test-run` | `test(action="run", preset="full")` |
|
|
193
|
+
| `tool-list` | `server(action="tools")` |
|
|
194
|
+
| `get-server-context` | `server(action="context")` |
|
|
195
|
+
|
|
196
|
+
## ⚙️ Configuration
|
|
197
|
+
|
|
198
|
+
### Environment variables
|
|
199
|
+
|
|
200
|
+
| Variable | Description | Default |
|
|
201
|
+
|----------|-------------|---------|
|
|
202
|
+
| `FOUNDRY_MCP_SPECS_DIR` | Path to specs directory | Auto-detected from workspace |
|
|
203
|
+
| `FOUNDRY_MCP_LOG_LEVEL` | Logging level (DEBUG, INFO, etc.) | `INFO` |
|
|
204
|
+
| `FOUNDRY_MCP_WORKFLOW_MODE` | Execution mode: `single`, `autonomous`, `batch` | `single` |
|
|
205
|
+
| `FOUNDRY_MCP_API_KEYS` | Comma-separated API keys required for tool access | Disabled |
|
|
206
|
+
| `FOUNDRY_MCP_FEATURE_FLAGS` | Additional feature flags to enable (e.g., `planning_tools`) | Based on spec rollout |
|
|
207
|
+
| `FOUNDRY_MCP_RESPONSE_CONTRACT` | Force response contract version (`v2`) | Auto-negotiated |
|
|
208
|
+
| `FOUNDRY_MODE` | Server mode: `full` (16 tools) or `minimal` (1 wake tool) | `full` |
|
|
209
|
+
| `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` | LLM provider credentials | Not set |
|
|
210
|
+
|
|
211
|
+
### TOML configuration
|
|
212
|
+
|
|
213
|
+
Create `foundry-mcp.toml` for shared settings:
|
|
214
|
+
|
|
215
|
+
```toml
|
|
216
|
+
[workspace]
|
|
217
|
+
specs_dir = "/path/to/specs"
|
|
218
|
+
|
|
219
|
+
[logging]
|
|
220
|
+
level = "INFO"
|
|
221
|
+
structured = true
|
|
222
|
+
|
|
223
|
+
[workflow]
|
|
224
|
+
mode = "single"
|
|
225
|
+
auto_validate = true
|
|
226
|
+
journal_enabled = true
|
|
227
|
+
|
|
228
|
+
[llm]
|
|
229
|
+
provider = "openai" # or "anthropic", "local"
|
|
230
|
+
model = "gpt-4"
|
|
231
|
+
timeout = 30
|
|
232
|
+
|
|
233
|
+
[security]
|
|
234
|
+
require_api_key = true
|
|
235
|
+
allowed_keys = ["tenant-prod", "tenant-dev"]
|
|
236
|
+
workspace_roots = ["/repos/specs"]
|
|
237
|
+
|
|
238
|
+
[feature_flags]
|
|
239
|
+
enabled = ["environment_tools", "spec_helpers", "planning_tools", "response_contract_v2"]
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## 🚀 Getting started
|
|
243
|
+
|
|
244
|
+
### Launch as an MCP server
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
foundry-mcp
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
The server will advertise its capabilities, feature flags, and response contract so MCP clients (Claude Code, Gemini CLI, etc.) can connect automatically.
|
|
251
|
+
|
|
252
|
+
### Use the native SDD CLI
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
python -m foundry_mcp.cli task next --specs-dir /path/to/specs
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
All CLI commands output JSON for reliable parsing by AI coding tools and mirror the legacy `claude-sdd-toolkit` surface.
|
|
259
|
+
|
|
260
|
+
### Claude Code setup
|
|
261
|
+
|
|
262
|
+
Add foundry-mcp through Claude Code settings (Command Palette → **Claude Code: Configure MCP Servers**) and include:
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{
|
|
266
|
+
"mcpServers": {
|
|
267
|
+
"foundry-mcp": {
|
|
268
|
+
"command": "uvx",
|
|
269
|
+
"args": ["foundry-mcp"],
|
|
270
|
+
"env": {
|
|
271
|
+
"FOUNDRY_MCP_SPECS_DIR": "/path/to/specs",
|
|
272
|
+
"FOUNDRY_MCP_RESPONSE_CONTRACT": "v2"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
<details>
|
|
280
|
+
<summary>Using a pip installation instead?</summary>
|
|
281
|
+
|
|
282
|
+
```json
|
|
283
|
+
{
|
|
284
|
+
"mcpServers": {
|
|
285
|
+
"foundry-mcp": {
|
|
286
|
+
"command": "foundry-mcp",
|
|
287
|
+
"env": {
|
|
288
|
+
"FOUNDRY_MCP_SPECS_DIR": "/path/to/specs"
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
</details>
|
|
295
|
+
|
|
296
|
+
### Quick usage examples
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# List specs via MCP tool (unified router)
|
|
300
|
+
echo '{"action": "list"}' | foundry-mcp --tool spec
|
|
301
|
+
|
|
302
|
+
# Validate a spec via MCP tool
|
|
303
|
+
echo '{"action": "validate", "spec_id": "sdd-core-operations-2025-11-27-001"}' | foundry-mcp --tool spec
|
|
304
|
+
|
|
305
|
+
# Run CLI validation without an MCP client
|
|
306
|
+
python -m foundry_mcp.cli --specs-dir ./specs validate check sdd-core-operations-2025-11-27-001
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## 📚 Documentation
|
|
310
|
+
|
|
311
|
+
| Guide | Description |
|
|
312
|
+
|-------|-------------|
|
|
313
|
+
| [SDD Philosophy](docs/concepts/sdd-philosophy.md) | Why spec-driven development matters |
|
|
314
|
+
| [Architecture Overview](docs/architecture/adr-001-cli-architecture.md) | CLI/MCP architecture decision record |
|
|
315
|
+
| [Development Guide](docs/guides/development-guide.md) | Setup, architecture, contributing |
|
|
316
|
+
| [Testing Guide](docs/guides/testing.md) | Running and debugging tests / fixtures |
|
|
317
|
+
| [LLM Configuration](docs/guides/llm-configuration.md) | Provider setup & fallbacks |
|
|
318
|
+
| [MCP Best Practices](docs/mcp_best_practices/README.md) | Canonical implementation checklist |
|
|
319
|
+
| [Response Schema](docs/codebase_standards/mcp_response_schema.md) | Standardized envelope reference |
|
|
320
|
+
| [CLI Output Contract](docs/codebase_standards/cli-output.md) | JSON-first CLI expectations |
|
|
321
|
+
|
|
322
|
+
## 🧪 Testing & quality gates
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
pytest # Full suite
|
|
326
|
+
pytest tests/integration/test_mcp_smoke.py # MCP smoke tests
|
|
327
|
+
pytest tests/integration/test_mcp_tools.py # Tool contract coverage
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
- Regression tests keep MCP/CLI adapters aligned with the legacy claude-sdd-toolkit contracts.
|
|
331
|
+
- Golden fixtures (`tests/fixtures/golden`) ensure response envelopes, error semantics, and pagination never regress.
|
|
332
|
+
- Freshness checks (doc generation, capability manifests) run alongside core unit and integration suites.
|
|
333
|
+
|
|
334
|
+
## 🤝 Contributing
|
|
335
|
+
|
|
336
|
+
Contributions are welcome! Please read the [MCP Best Practices](docs/mcp_best_practices/README.md) before submitting PRs. All changes should keep specs, docs, code, and fixtures in sync and follow the decision matrix in `AGENTS.md`.
|
|
337
|
+
|
|
338
|
+
## 📄 License
|
|
339
|
+
|
|
340
|
+
MIT License — see [LICENSE](LICENSE) for details.
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
**Built by [Tyler Burleigh](https://github.com/tylerburleigh)** · [Report an Issue](https://github.com/tylerburleigh/foundry-mcp/issues) · [View on GitHub](https://github.com/tylerburleigh/foundry-mcp)
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
foundry_mcp/__init__.py,sha256=V3Ds_VOCLyfrry2-BPGfoH4e6j9YAc4Qm4tObwJJ_jM,405
|
|
2
|
+
foundry_mcp/config.py,sha256=bNJbBctDhoKJ6h4juig1B2DKLHcEzMuYIQQl8gno4J0,57070
|
|
3
|
+
foundry_mcp/server.py,sha256=9GjG4xkk2yD_nNcynCC8RV0EX7xljRWeoWQ-mC0COaw,4897
|
|
4
|
+
foundry_mcp/cli/__init__.py,sha256=K7cSTO88RGrsSwQkpZvhi88ZuazN8X_ldPDEhnAGyqU,1583
|
|
5
|
+
foundry_mcp/cli/__main__.py,sha256=wPwlid-SomQl5oGxtM319jjN4OSE-KWZtsdHctp4juU,167
|
|
6
|
+
foundry_mcp/cli/agent.py,sha256=QPuoZkLeNwmvjqCb2a3CPXJx9YWNJmd8s4a9iRbENIM,2855
|
|
7
|
+
foundry_mcp/cli/config.py,sha256=9jdpVw_LfTOOLR9LO3wzm82ziwKq7tv1JMBrj40iWsE,2980
|
|
8
|
+
foundry_mcp/cli/context.py,sha256=RKlYfcDsjS3Z-rvQxQl3DT8FjDQliDi928SCTJR28MI,10480
|
|
9
|
+
foundry_mcp/cli/logging.py,sha256=z-O-qQSIfndcIOiCkKr8TJ78Pldn0jNXWtjrCk8t1Ho,5974
|
|
10
|
+
foundry_mcp/cli/main.py,sha256=0BPbEbbNzZtS1rDjTqQlLZw2cGL4jaOdHtSk5ov9NWU,1088
|
|
11
|
+
foundry_mcp/cli/output.py,sha256=ZH3cHMoNo39hEXlXO2hcdX21SZdg5ewXyV7YGjl1txs,3986
|
|
12
|
+
foundry_mcp/cli/registry.py,sha256=25yV3o-q7VgnfqjDvqVQHyphe9BQF6y2y70zY52jWLM,2816
|
|
13
|
+
foundry_mcp/cli/resilience.py,sha256=o4flW5JN9nOPq5RVYvRf88cEb4KbqgI3kg2rfkcxv6g,5248
|
|
14
|
+
foundry_mcp/cli/transcript.py,sha256=DbusgsUCipi9l8YVHY20U5rbE13dM76PQbUokGocgV4,7227
|
|
15
|
+
foundry_mcp/cli/commands/__init__.py,sha256=vU8zLcC1opoM5Ox4du-0mG4gxHJ6N1tRaE4F0KoJBfk,1171
|
|
16
|
+
foundry_mcp/cli/commands/cache.py,sha256=_bVPkWXRT4Q-EtDOQIYY6TkJR1m49dm4RQ_lbSEaqRE,3373
|
|
17
|
+
foundry_mcp/cli/commands/dashboard.py,sha256=9T_Lu78p9y491_njoPgM02uPBccp11jbDNBJ1IttGUU,3868
|
|
18
|
+
foundry_mcp/cli/commands/dev.py,sha256=kBtZacvf-lXyGpmdNuZIZZrdZdtMEtxsQqP6HtUR5mk,12210
|
|
19
|
+
foundry_mcp/cli/commands/journal.py,sha256=T7SGvZrdnV0iN1TgHibqBoZSVSMWaye7FiFED3duYik,10936
|
|
20
|
+
foundry_mcp/cli/commands/lifecycle.py,sha256=vtmNyw4QL1igwEeQMoyM0lD-blCvY-3qlYF6sZHc4Z8,8301
|
|
21
|
+
foundry_mcp/cli/commands/modify.py,sha256=Loe5J-P093E9rFJJDZyRFnQB6ez6OkWlZ_eF1bVmiC0,21936
|
|
22
|
+
foundry_mcp/cli/commands/plan.py,sha256=NtESmJUiKlFPwfldLyEjdnpQFqyMNIKxLPv76HdsJNE,18017
|
|
23
|
+
foundry_mcp/cli/commands/pr.py,sha256=4PnLJrsB7op6RIP7Z1cDvrcSGMfknRRfBJrDd8aXBpw,11035
|
|
24
|
+
foundry_mcp/cli/commands/review.py,sha256=2AblIo2NgXHEghlKLFGYeMRnj27mw_mTvjxRUpjHyBo,21174
|
|
25
|
+
foundry_mcp/cli/commands/session.py,sha256=ZBWNHblgqkQHKkx4hkFZIQ5K1Wh7LnB8vw0nMdXtenw,15700
|
|
26
|
+
foundry_mcp/cli/commands/specs.py,sha256=awVhJ1hUvDai4IibjEjDDUcB_FOmSTo-yLh7yROF6h8,20644
|
|
27
|
+
foundry_mcp/cli/commands/tasks.py,sha256=TToK6pcwlAqF1zYQ2mKB36Esw9C3htAyvx6Qc8-nOQE,25246
|
|
28
|
+
foundry_mcp/cli/commands/testing.py,sha256=5ZtZ2XJ79V9FmsnvgQ1Z47qGGKMVeFuCOf7GivntMkI,20317
|
|
29
|
+
foundry_mcp/cli/commands/validate.py,sha256=Y_dJmx0WgdxYQkIa8y6H0HSHtQBhXYaqFMv62wEwuD8,30630
|
|
30
|
+
foundry_mcp/core/__init__.py,sha256=LgBtknZIRhvDQT2c8D07TeymkSmDZonrCxWZUZOgeSM,3025
|
|
31
|
+
foundry_mcp/core/ai_consultation.py,sha256=wAtIUuCHIGy84Bbv6WIC4nEg91x5VqjOH1w58y7zTeA,62861
|
|
32
|
+
foundry_mcp/core/batch_operations.py,sha256=8iSXmAIAMF_r_bAoaR9wGYyjo-zgGPGo70IFb0BbeZk,38625
|
|
33
|
+
foundry_mcp/core/cache.py,sha256=7eM1-J_CXgQUid1JTTRS0aRxOZK9HgTRLEzX-k534po,5443
|
|
34
|
+
foundry_mcp/core/capabilities.py,sha256=Zq6QJ7bvHL4GIOxjQNjmUGLFBeEjvVNj4XP2RLswebE,13144
|
|
35
|
+
foundry_mcp/core/concurrency.py,sha256=qOlfYmlSDYU-deqnqa0r5ccGwey-MIM5QiDag_K6xzk,26571
|
|
36
|
+
foundry_mcp/core/context.py,sha256=2M77uy-1KW-EzVxT2bdWPUFc6mWbANK1iYsCNFhMOls,16292
|
|
37
|
+
foundry_mcp/core/discovery.py,sha256=d-pouSFhYQToQnH6s6Yw5cPDHKp2UpRzMkkNhlmHaKs,53898
|
|
38
|
+
foundry_mcp/core/error_collection.py,sha256=MjpYU0OrTpQRIg8ND-EQzd-H-vM4LKtRHUNuveQFvp8,25069
|
|
39
|
+
foundry_mcp/core/error_store.py,sha256=P5irmUJIXh9BNyg_Mh7HYoKqtSjwHpj9vhUcwtqh4V8,20725
|
|
40
|
+
foundry_mcp/core/health.py,sha256=GcpLnHDSF5W_nf0k7-5icGeZmrKw-sUU_67ddMe8Kt4,25115
|
|
41
|
+
foundry_mcp/core/intake.py,sha256=qjmX5gk9Ae5HjSVLvwmQmPSloJFMsho1SsyUboNhkx8,32722
|
|
42
|
+
foundry_mcp/core/journal.py,sha256=gkB3P-PrBOC_qmoLr0_RfNs-i40he5RL9RVMkBMZgiw,19556
|
|
43
|
+
foundry_mcp/core/lifecycle.py,sha256=LALbkljjUrXtGe0No8eux9vAr-AIlDDltn9jz1HToHY,10959
|
|
44
|
+
foundry_mcp/core/llm_config.py,sha256=9wzUiT7-oAXE-T__VNwX812jUtS6avqczgdBELjCgis,48489
|
|
45
|
+
foundry_mcp/core/llm_patterns.py,sha256=1ZCuCkZ6ov2abk4Wt6T35a2Fg0Dp-0ALV5sdm5N9gXE,15336
|
|
46
|
+
foundry_mcp/core/llm_provider.py,sha256=VG4lJn5gIF8QNbAV81ysyEPkbg3XehCdw5m2KDtae9c,52595
|
|
47
|
+
foundry_mcp/core/logging_config.py,sha256=Dlo6lL5eollUXk9U43PviuvU9d6jW_AREEQK63vE2IE,10960
|
|
48
|
+
foundry_mcp/core/metrics_persistence.py,sha256=rvcNsaGXC811feicjLu7nq7ayUX_aTD7tyHcDGPYO8w,18231
|
|
49
|
+
foundry_mcp/core/metrics_registry.py,sha256=TpOkaFXpPMDagV537IbNPW4InZH1IaQT8v0pLZyBXJc,10438
|
|
50
|
+
foundry_mcp/core/metrics_store.py,sha256=ctBgaedVkSmeyQlQmkrnJEg9jAAxw6sZNfCW2xt2a6o,22482
|
|
51
|
+
foundry_mcp/core/modifications.py,sha256=g6nnXunEhqjXyr5HrV3dPoMMmMjML-3tYWKjlmxt1GY,6343
|
|
52
|
+
foundry_mcp/core/naming.py,sha256=lzIx_6ZScAHD2RO_N_FOzLDoKS7J2Drxh6irCE083IY,4779
|
|
53
|
+
foundry_mcp/core/observability.py,sha256=Y7f9ws8Glml4ThoMynj4G0vkhZEAw2rHtglw9uap7Vo,41477
|
|
54
|
+
foundry_mcp/core/otel.py,sha256=BVb4rgyo11GMUnJuGSji_0mjvTNyO8f5E1LNCoyVe08,13516
|
|
55
|
+
foundry_mcp/core/otel_stubs.py,sha256=lVWL7qQHo7QRj9NvvyqNvvxzjGvLFiDEdJQDqpc5XcE,6834
|
|
56
|
+
foundry_mcp/core/pagination.py,sha256=S_iTmZYmLda1to-__LLMM0sQI1xJMvAzjW0NAHLKx6A,7243
|
|
57
|
+
foundry_mcp/core/progress.py,sha256=ZFBVzxFY_YTQPKOM1zOA_ylQG-tJishht3h41xhWz2I,11978
|
|
58
|
+
foundry_mcp/core/prometheus.py,sha256=d2pYrRlY201RCzMPG_70wrJ0PzCdVzBbJqFAJ7_IiOw,17313
|
|
59
|
+
foundry_mcp/core/rate_limit.py,sha256=6Hrx60Az4z8lxXW0DeEx1hrGQPXRwbhhRVI1PA72BKQ,13395
|
|
60
|
+
foundry_mcp/core/resilience.py,sha256=DrH6fbMYXjRmjKDukT8zLL49JEKsgza2LGsgBow4usQ,18831
|
|
61
|
+
foundry_mcp/core/responses.py,sha256=q9OTtuWzL5ueKT3iEGKa6HTMTYDLM-PsXA_G6jbmyHI,55048
|
|
62
|
+
foundry_mcp/core/review.py,sha256=DkiNG1DWgmm5PCuZrGstYI6mcd7ub9sXQpPARbk-HWM,11183
|
|
63
|
+
foundry_mcp/core/security.py,sha256=4ABOhWBzu7P9gMuC8gTXr3PrjEmEp_eSAgrFZG2sjyI,15444
|
|
64
|
+
foundry_mcp/core/spec.py,sha256=F3285h5fTtCi4n6MLsT3ZALgOH3SiBd-Z6hEKL1M3bo,138336
|
|
65
|
+
foundry_mcp/core/task.py,sha256=CCt_qJD-60Z_r5FmZfUlLVGpdQrpUT6WpVe_PohXsRg,85886
|
|
66
|
+
foundry_mcp/core/testing.py,sha256=roee_ZddoB7xNxRk1pz89-4eOb6Sc2X6vKk0VLzd3Cg,24930
|
|
67
|
+
foundry_mcp/core/validation.py,sha256=Ra5SYGk5iULxBMDqXRQRYFQgrwRfCAv1Y4yqlASbl4Y,80887
|
|
68
|
+
foundry_mcp/core/prompts/__init__.py,sha256=0rx9sX-D_Zgfah-gPoUPYxW5GnhjxZmCVNzvurMOk8s,14316
|
|
69
|
+
foundry_mcp/core/prompts/fidelity_review.py,sha256=mmuWuDW5Ljj1IUYy3yGY7MjuOguLhytz5tYY9y0SqOI,22360
|
|
70
|
+
foundry_mcp/core/prompts/markdown_plan_review.py,sha256=WXH0N-QwC31Bo4i2lrCGWfIjviyi0ZkPS5kAuNOYsZ0,18256
|
|
71
|
+
foundry_mcp/core/prompts/plan_review.py,sha256=m4N5p_EQFrtvhYxt5PVtU9KcSr9sDBGboF-9ZvR40Cg,21992
|
|
72
|
+
foundry_mcp/core/providers/__init__.py,sha256=E9PuavQrH9LyjP33PWwIlBo2uYjjbOebqpvm0N42E7o,6286
|
|
73
|
+
foundry_mcp/core/providers/base.py,sha256=9tNNY4R-mFmiLEocqrDk5Lgt9iSVAd9BZWac0qJ7tXY,17953
|
|
74
|
+
foundry_mcp/core/providers/claude.py,sha256=3AAuzuVgIro8bHhZ2NKnsyPn1J4nSRo2K3q1UAqxkhE,15441
|
|
75
|
+
foundry_mcp/core/providers/codex.py,sha256=9WU1AsR-3W2VJrhnBWl5CST3LrQqoNAGaz6SS0bCcAQ,21696
|
|
76
|
+
foundry_mcp/core/providers/cursor_agent.py,sha256=uavHhSLIgGbHNsJpxQlReSCJmxP5aLdDhAeXa2BtoDs,22572
|
|
77
|
+
foundry_mcp/core/providers/detectors.py,sha256=yOEUB22-P11zdxhNXVOxr-R435YQ4PGx81RmF8vqHSo,16580
|
|
78
|
+
foundry_mcp/core/providers/gemini.py,sha256=v73sprjqnxiVilZJomdDnmY7Y9a8-aAmDo-cxkfj7Z4,14648
|
|
79
|
+
foundry_mcp/core/providers/opencode.py,sha256=FW2EQB3sxwljK9gOHgbuFWQ2LOkgvowg2bNczEGFdyI,26431
|
|
80
|
+
foundry_mcp/core/providers/opencode_wrapper.js,sha256=mSPCHWu1wjVrCso0WRTzv3R9-2X5rMPSSHRKFXgxk3I,7764
|
|
81
|
+
foundry_mcp/core/providers/package-lock.json,sha256=J49dNHIagU2eArW1wyZhGqHaHOV6EyiNerdldoPF3Qs,648
|
|
82
|
+
foundry_mcp/core/providers/package.json,sha256=nwRGNP00W0_kSgSN4b8BxofmagXYPTELhNm3p_eg3g8,513
|
|
83
|
+
foundry_mcp/core/providers/registry.py,sha256=uAVJ0dvE_lTtTM6lE_RV9QCvGjP33gYxxXYCy_68Y8c,19147
|
|
84
|
+
foundry_mcp/core/providers/test_provider.py,sha256=7RlAkc8H-2uBd25tmKs_Cu7Fl6EUpBB5eXKTx7G1Esk,5213
|
|
85
|
+
foundry_mcp/core/providers/validation.py,sha256=ohhDPzvJOkt3y6vLx1_Dl8dTIu6kTtXT39zVm6HhzbA,25866
|
|
86
|
+
foundry_mcp/core/research/__init__.py,sha256=fEBsDm4Oz5qVgEN3etuEEx27jnDV3PkxndTlhOQwcCY,1478
|
|
87
|
+
foundry_mcp/core/research/memory.py,sha256=Z-hitvjiWBTJn1vdFyEECTlrCIaN2FBoirXP23pIdrU,17586
|
|
88
|
+
foundry_mcp/core/research/models.py,sha256=586Z3_IJEEG-4M521vJ04h9yih6WnEs7gHDSnkTxJ7Q,44325
|
|
89
|
+
foundry_mcp/core/research/providers/__init__.py,sha256=KQ39_7XiWkQWVs95rdibZziv6rvHjKlOIcfWq6LihAs,1282
|
|
90
|
+
foundry_mcp/core/research/providers/base.py,sha256=Sso29K5AEr-6IYeIZNoa3LK7tCWoiUECkAQQCFzfjk4,7424
|
|
91
|
+
foundry_mcp/core/research/providers/google.py,sha256=UDthug1szRH1jz_DB0MRMaoj--F3joN0N0u79UVDhB0,17580
|
|
92
|
+
foundry_mcp/core/research/providers/perplexity.py,sha256=4PPZQvTSzjEHY4kxXkwC7h9Z8I5_YKNq6hRajYMvO_c,15093
|
|
93
|
+
foundry_mcp/core/research/providers/semantic_scholar.py,sha256=qGxw5z24yPs9NkKR7cBUKWqRM7gstRBxrPvrSEgW_9I,18993
|
|
94
|
+
foundry_mcp/core/research/providers/tavily.py,sha256=C-8S7jAsCmbuUfsSmZy7JFDZwHC6pPHc2IvHD2NdElE,13019
|
|
95
|
+
foundry_mcp/core/research/workflows/__init__.py,sha256=LHyTClhlGaENg5USVLZs_dWsMLS91YmeBxOC75YpVVQ,1048
|
|
96
|
+
foundry_mcp/core/research/workflows/base.py,sha256=yzGMXdYmGDP_RX9rn0LOdwEEc01ntoLvGNZYy0fvras,10254
|
|
97
|
+
foundry_mcp/core/research/workflows/chat.py,sha256=mrMRh2dyYWjxwc2yFNJL-hrqnb4na0yZuovSPz1c_7o,8313
|
|
98
|
+
foundry_mcp/core/research/workflows/consensus.py,sha256=DY7a6T1Yt_BWPz0PekwSILVb6GDw6ftgWP3O-JfUW_k,19326
|
|
99
|
+
foundry_mcp/core/research/workflows/deep_research.py,sha256=92XOjpXMnhSo1hQjAx9Wy4f8TSLyPl7MnDUy5Y8xSVk,156912
|
|
100
|
+
foundry_mcp/core/research/workflows/ideate.py,sha256=SiV9RTIX4hsjmMDNSNRvD77OVYfbV_LGx-8SLmLyggc,22271
|
|
101
|
+
foundry_mcp/core/research/workflows/thinkdeep.py,sha256=5yWhDstcoxPSkxdyblPniXoB6GRqdFNOY-cjtAL-XaQ,14029
|
|
102
|
+
foundry_mcp/dashboard/__init__.py,sha256=3XUgs6JJbcrx37ABvZPosgNzd5oFqdDm7raNDqWkmFs,811
|
|
103
|
+
foundry_mcp/dashboard/app.py,sha256=Ktv0o6nBjtkXF08g2Oq15daR_hgV22vs1DlUZ55kJGI,3004
|
|
104
|
+
foundry_mcp/dashboard/launcher.py,sha256=budmYi7UkJc_bCITfKOCTL9kOO6MdkV87NreNaJTJ8o,8357
|
|
105
|
+
foundry_mcp/dashboard/components/__init__.py,sha256=etYzKPHwfZdYvm9u7s2CPR0VPnBmWHl8FyJ2YoE7mEI,352
|
|
106
|
+
foundry_mcp/dashboard/components/cards.py,sha256=QQTa4dlLyHwAUVe6zBwPoATmyIMXq24kTVRC0Uyvqno,2414
|
|
107
|
+
foundry_mcp/dashboard/components/charts.py,sha256=5iy7916wy9_jD2adePUB1KObUbcyRdMl-ZOwxxtsWsk,3978
|
|
108
|
+
foundry_mcp/dashboard/components/filters.py,sha256=uN7rFrBvZk6oacPcOiexET02BExNM5olWepjCXDrTf8,3061
|
|
109
|
+
foundry_mcp/dashboard/components/tables.py,sha256=WVq_BMbWBGyaIxuvy3qUrH6tBWsJABC5wfulojJNEK0,4873
|
|
110
|
+
foundry_mcp/dashboard/data/__init__.py,sha256=CFz07CIZhmD12kx77Mr2LG0J--b9DTvyu3uaHDJusvI,261
|
|
111
|
+
foundry_mcp/dashboard/data/stores.py,sha256=-2193Vdz1q4Ls2qmP1aQZ7cF1DWRxeCItq4LxJi6UnA,12391
|
|
112
|
+
foundry_mcp/dashboard/views/__init__.py,sha256=12fUzf3TkGMs0dJHfA6Y856qJEO7lOS_hs6msP3xYRs,208
|
|
113
|
+
foundry_mcp/dashboard/views/errors.py,sha256=suDaoQQsnyr2sYOWhN2nNNWIuIBZPkVIHGMlVvYsgr8,7305
|
|
114
|
+
foundry_mcp/dashboard/views/metrics.py,sha256=88Blo0iObfV_2mvhJV1RuqW7K278mn6vVoejonkTiuY,5725
|
|
115
|
+
foundry_mcp/dashboard/views/overview.py,sha256=BqtUVRC44PNXTd_Vu_PxVPZc3kThbytxANNGs3cmOhI,3369
|
|
116
|
+
foundry_mcp/dashboard/views/providers.py,sha256=sFCh-F8xIhLRQQzgjd_dwZz_S6AgolWSmP3iqczxxYE,2819
|
|
117
|
+
foundry_mcp/dashboard/views/sdd_workflow.py,sha256=lKvh8Ru6WBg5nE8vCcNZibemtRvhMoB3P5boK5Sd68M,8281
|
|
118
|
+
foundry_mcp/dashboard/views/tool_usage.py,sha256=-SD9VwhDJ1SRpHkYXDPINenSaLrQAiXRFEvRrp3-HbA,4760
|
|
119
|
+
foundry_mcp/prompts/__init__.py,sha256=AeAFELo1TTBdw4MVg4VoeDWsGGvzFTmdRtHHOBxwVzA,200
|
|
120
|
+
foundry_mcp/prompts/workflows.py,sha256=1bg43V6lEGeGuGX37G49UYGtDjZ6SZqsXguKb_zZQss,18369
|
|
121
|
+
foundry_mcp/resources/__init__.py,sha256=rnxmkQKsDcL-p-NyVlZtEh9Ie2BQn0nzQ_16NuCLBPY,201
|
|
122
|
+
foundry_mcp/resources/specs.py,sha256=HcXxZFJt8eDFTQpshwxC9PLdtYPbOttVGFbT8mLRO5A,19828
|
|
123
|
+
foundry_mcp/schemas/__init__.py,sha256=iKHwedYPusMeg-Ozdeq-gHDT5nhmqEPP-a9jXi8VyOM,1140
|
|
124
|
+
foundry_mcp/schemas/intake-schema.json,sha256=YisuGVRpMhg66lm-_vSs8SMVwjbsyWfXPSv0u4dI5UI,2691
|
|
125
|
+
foundry_mcp/schemas/sdd-spec-schema.json,sha256=VAmeihOuDHldgk-evwjZLPmoRt4o4mVZ1vCZkhWuh74,12480
|
|
126
|
+
foundry_mcp/tools/__init__.py,sha256=yNmGFFGNp-OMA758oAMxB4z7cvXb_6KPxm-ZyHbi-9I,199
|
|
127
|
+
foundry_mcp/tools/unified/__init__.py,sha256=cKkaNLCbe0XI1XlzndTrPZmjgqw1IJuaqv0Go1E67RU,3431
|
|
128
|
+
foundry_mcp/tools/unified/authoring.py,sha256=tMCrc2wXPMtoe5TnpWuyzgqG-c9gKXg9Pur-al18ZmM,127107
|
|
129
|
+
foundry_mcp/tools/unified/context_helpers.py,sha256=JcaEdn1nVgaZ4GfTktRdZ7oD4pHkU9TH6O8WfWJ9lr0,3056
|
|
130
|
+
foundry_mcp/tools/unified/documentation_helpers.py,sha256=LaQRDv4QCZ6C4Mtx_28WnGbx4XHUy-dpDytYkBrS3MY,10419
|
|
131
|
+
foundry_mcp/tools/unified/environment.py,sha256=rUEha9-Uo-0cwLCWxESTo5blQ4aFaDE76KO2XKg2f8w,46063
|
|
132
|
+
foundry_mcp/tools/unified/error.py,sha256=qzkI6GoFs4bfN79-x0fMpS1ogAn3lkdgzGGymUWEmE8,14452
|
|
133
|
+
foundry_mcp/tools/unified/health.py,sha256=8oo61HeTfuyxTYyuKQPLMHvvYh54ju33invxIGFi5s4,6833
|
|
134
|
+
foundry_mcp/tools/unified/journal.py,sha256=mbVivCiJymd6QFq2u1stVkqhLMM7odrpSyU6X9nRnak,23262
|
|
135
|
+
foundry_mcp/tools/unified/lifecycle.py,sha256=RKESL2wEaEHagDl61eRX0y0AivUoaPn8ibcdHunohmw,20436
|
|
136
|
+
foundry_mcp/tools/unified/metrics.py,sha256=Q1vIXLpQnTfHnpFxXKWwqQpNDc2_iuGIr48Bg7EM47c,22600
|
|
137
|
+
foundry_mcp/tools/unified/plan.py,sha256=JbjidFI7rB-i7AoXcI0IkMbN1aCAPXF7jFS_QDZPZYI,30199
|
|
138
|
+
foundry_mcp/tools/unified/pr.py,sha256=L_Gk9oVP-8PgmbdULFr_BwXBPaLRib_55H8MyHuZ_34,9786
|
|
139
|
+
foundry_mcp/tools/unified/provider.py,sha256=rUIrtr4rh0YWEUoSbb-0GpM_Lx0dUuv2ElFvK8F0_O4,20558
|
|
140
|
+
foundry_mcp/tools/unified/research.py,sha256=V7i4DPq20bIDHSVtcat-XDxUTG0P0FXK9t_MnDoEZEA,43863
|
|
141
|
+
foundry_mcp/tools/unified/review.py,sha256=SrZ4hLPd7CPbeNdgOwEiP_te_LQzh7btsKZ6RYAGIs4,37746
|
|
142
|
+
foundry_mcp/tools/unified/review_helpers.py,sha256=4bbhipPPrxYGprJJksjLaR9xPk4IrTpXT-7aIydd3ew,10253
|
|
143
|
+
foundry_mcp/tools/unified/router.py,sha256=sWqAaey9yhiAoxyrnL8lr2reMWyPgmyIPlwrNgZZmRI,3489
|
|
144
|
+
foundry_mcp/tools/unified/server.py,sha256=Krxwz011kXRmpjnUzP3ifwPkFN83tl5fhRczR3j9Isg,19218
|
|
145
|
+
foundry_mcp/tools/unified/spec.py,sha256=k_1IYVKYPoq8s2R87Ars20NeCFco2-Qv6hUypqE2Y0Y,42429
|
|
146
|
+
foundry_mcp/tools/unified/task.py,sha256=TuLinZ4ZYw6637iKYFFduDAX8pJvIiVe3vELgPtjW18,135684
|
|
147
|
+
foundry_mcp/tools/unified/test.py,sha256=7H2UObajxz0vHZ_1HUne4E7hlkVGnigT70SnDlkPlfk,13894
|
|
148
|
+
foundry_mcp/tools/unified/verification.py,sha256=Kq3BJ7-Rnp2R35dHoFSTdwHPjEf60nce8vWMIKOA32s,16945
|
|
149
|
+
foundry_mcp-0.8.22.dist-info/METADATA,sha256=kNsQD-eo_URF6KfL6bH9v6Kcu8orOFiAlTUSPjmv8aU,13901
|
|
150
|
+
foundry_mcp-0.8.22.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
151
|
+
foundry_mcp-0.8.22.dist-info/entry_points.txt,sha256=EBy4TVvlciNngt9ErVIyNjTImjczKa2FkoZRtIEw6aU,95
|
|
152
|
+
foundry_mcp-0.8.22.dist-info/licenses/LICENSE,sha256=8dabQwxo8HuixKsQaXcVaIHLLQWvPPLuKQFZLAIXL4w,1071
|
|
153
|
+
foundry_mcp-0.8.22.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Tyler Burleigh
|
|
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.
|