From 5f3e9b8164794191292811e1ac30e05a5f0e18a1 Mon Sep 17 00:00:00 2001
From: fOuttaMyPaint <154358121+TMHSDigital@users.noreply.github.com>
Date: Sun, 24 May 2026 11:44:13 -0400
Subject: [PATCH 1/2] feat: register developer-tools-mcp in ecosystem registry
Signed-off-by: fOuttaMyPaint <154358121+TMHSDigital@users.noreply.github.com>
---
CLAUDE.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++++
README.md | 2 ++
docs/index.html | 2 +-
registry.json | 19 +++++++++++++++
4 files changed, 86 insertions(+), 1 deletion(-)
diff --git a/CLAUDE.md b/CLAUDE.md
index b05e027..08f1393 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -83,6 +83,7 @@ Static HTML/CSS/JS. No build step. No external CDN. The `pages.yml` workflow cop
| Monday Cursor Plugin | Plugin | 21 | 8 | 45 |
| Steam Cursor Plugin | Plugin | 30 | 9 | 25 |
| Steam MCP Server | MCP Server | 0 | 0 | 25 |
+| Developer Tools MCP | MCP Server | 0 | 0 | 4 |
@@ -164,3 +165,66 @@ Open `docs/index.html` in a browser. The script falls back to embedded registry
| Jinja2 >=3.1,<4.0 | Scaffold template rendering | `requirements.txt` |
The docs site has zero runtime dependencies. The sync script is pure stdlib.
+
+# context-mode — MANDATORY routing rules
+
+You have context-mode MCP tools available. These rules are NOT optional — they protect your context window from flooding. A single unrouted command can dump 56 KB into context and waste the entire session.
+
+## BLOCKED commands — do NOT attempt these
+
+### curl / wget — BLOCKED
+Any Bash command containing `curl` or `wget` is intercepted and replaced with an error message. Do NOT retry.
+Instead use:
+- `ctx_fetch_and_index(url, source)` to fetch and index web pages
+- `ctx_execute(language: "javascript", code: "const r = await fetch(...)")` to run HTTP calls in sandbox
+
+### Inline HTTP — BLOCKED
+Any Bash command containing `fetch('http`, `requests.get(`, `requests.post(`, `http.get(`, or `http.request(` is intercepted and replaced with an error message. Do NOT retry with Bash.
+Instead use:
+- `ctx_execute(language, code)` to run HTTP calls in sandbox — only stdout enters context
+
+### WebFetch — BLOCKED
+WebFetch calls are denied entirely. The URL is extracted and you are told to use `ctx_fetch_and_index` instead.
+Instead use:
+- `ctx_fetch_and_index(url, source)` then `ctx_search(queries)` to query the indexed content
+
+## REDIRECTED tools — use sandbox equivalents
+
+### Bash (>20 lines output)
+Bash is ONLY for: `git`, `mkdir`, `rm`, `mv`, `cd`, `ls`, `npm install`, `pip install`, and other short-output commands.
+For everything else, use:
+- `ctx_batch_execute(commands, queries)` — run multiple commands + search in ONE call
+- `ctx_execute(language: "shell", code: "...")` — run in sandbox, only stdout enters context
+
+### Read (for analysis)
+If you are reading a file to **Edit** it → Read is correct (Edit needs content in context).
+If you are reading to **analyze, explore, or summarize** → use `ctx_execute_file(path, language, code)` instead. Only your printed summary enters context. The raw file content stays in the sandbox.
+
+### Grep (large results)
+Grep results can flood context. Use `ctx_execute(language: "shell", code: "grep ...")` to run searches in sandbox. Only your printed summary enters context.
+
+## Tool selection hierarchy
+
+1. **GATHER**: `ctx_batch_execute(commands, queries)` — Primary tool. Runs all commands, auto-indexes output, returns search results. ONE call replaces 30+ individual calls.
+2. **FOLLOW-UP**: `ctx_search(queries: ["q1", "q2", ...])` — Query indexed content. Pass ALL questions as array in ONE call.
+3. **PROCESSING**: `ctx_execute(language, code)` | `ctx_execute_file(path, language, code)` — Sandbox execution. Only stdout enters context.
+4. **WEB**: `ctx_fetch_and_index(url, source)` then `ctx_search(queries)` — Fetch, chunk, index, query. Raw HTML never enters context.
+5. **INDEX**: `ctx_index(content, source)` — Store content in FTS5 knowledge base for later search.
+
+## Subagent routing
+
+When spawning subagents (Agent/Task tool), the routing block is automatically injected into their prompt. Bash-type subagents are upgraded to general-purpose so they have access to MCP tools. You do NOT need to manually instruct subagents about context-mode.
+
+## Output constraints
+
+- Keep responses under 500 words.
+- Write artifacts (code, configs, PRDs) to FILES — never return them as inline text. Return only: file path + 1-line description.
+- When indexing content, use descriptive source labels so others can `ctx_search(source: "label")` later.
+
+## ctx commands
+
+| Command | Action |
+|---------|--------|
+| `ctx stats` | Call the `ctx_stats` MCP tool and display the full output verbatim |
+| `ctx doctor` | Call the `ctx_doctor` MCP tool, run the returned shell command, display as checklist |
+| `ctx upgrade` | Call the `ctx_upgrade` MCP tool, run the returned shell command, display as checklist |
diff --git a/README.md b/README.md
index 93c56ba..62afe1b 100644
--- a/README.md
+++ b/README.md
@@ -62,6 +62,7 @@ flowchart LR
| **Monday Cursor Plugin** | Plugin | 21 | 8 | 45 | [](https://github.com/TMHSDigital/Monday-Cursor-Plugin) [](https://tmhsdigital.github.io/Monday-Cursor-Plugin/) |
| **Steam Cursor Plugin** | Plugin | 30 | 9 | 25 | [](https://github.com/TMHSDigital/Steam-Cursor-Plugin) [](https://tmhsdigital.github.io/Steam-Cursor-Plugin/) |
| **Steam MCP Server** | MCP Server | - | - | 25 | [](https://github.com/TMHSDigital/steam-mcp) [](https://www.npmjs.com/package/@tmhs/steam-mcp) |
+| **Developer Tools MCP** | MCP Server | - | - | 4 | [](https://github.com/TMHSDigital/Developer-Tools-MCP) |