{"id":51320596,"url":"https://github.com/tmhsdigital/developer-tools-mcp","last_synced_at":"2026-07-01T13:01:23.300Z","repository":{"id":360029239,"uuid":"1248384695","full_name":"TMHSDigital/Developer-Tools-MCP","owner":"TMHSDigital","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-14T23:31:33.000Z","size":104,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T01:14:22.130Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://tmhsdigital.github.io/Developer-Tools-MCP/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TMHSDigital.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-24T15:17:51.000Z","updated_at":"2026-06-14T23:28:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TMHSDigital/Developer-Tools-MCP","commit_stats":null,"previous_names":["tmhsdigital/developer-tools-mcp"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/TMHSDigital/Developer-Tools-MCP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2FDeveloper-Tools-MCP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2FDeveloper-Tools-MCP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2FDeveloper-Tools-MCP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2FDeveloper-Tools-MCP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TMHSDigital","download_url":"https://codeload.github.com/TMHSDigital/Developer-Tools-MCP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2FDeveloper-Tools-MCP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35007278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-01T13:01:22.158Z","updated_at":"2026-07-01T13:01:23.251Z","avatar_url":"https://github.com/TMHSDigital.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Developer Tools MCP\n\nMCP server exposing the TMHSDigital developer-tools ecosystem as agent-callable tools.\n\n![License: CC-BY-NC-ND-4.0](https://img.shields.io/badge/license-CC--BY--NC--ND--4.0-green)\n![Version](https://img.shields.io/badge/version-0.2.0-blue)\n\n**v0.2.0 adds a write surface.** Three write tools ship alongside the four read tools. All write tools default to dry-run and require `DEVTOOLS_META_ROOT` and `GH_TOKEN`. The write surface is now complete; see [ROADMAP.md](ROADMAP.md).\n\n---\n\n## What it does\n\n### Read tools (no token needed for public repos)\n\n| Tool | Description |\n|------|-------------|\n| `devtools_getRegistry` | Return entries from `registry.json`, with optional filtering by type, status, or slug |\n| `devtools_getFleetStatus` | List all repos with registry version, latest release tag, and current/behind/ahead signal |\n| `devtools_checkDrift` | Return drift findings: standards-version mismatches and missing required workflows |\n| `devtools_inspectRepo` | Detailed view of one repo: GitHub metadata, open PRs, CI run status, standards-version |\n\n`devtools_checkDrift` fetches `standards/drift-checker.config.json` from the meta-repo at runtime. The canonical drift checker (`scripts/drift_check/cli.py`) is authoritative; this tool is a convenience reader for agents that cannot run Python locally.\n\n### Write tools (dry-run by default; require `DEVTOOLS_META_ROOT` and `GH_TOKEN`)\n\n| Tool | Description |\n|------|-------------|\n| `devtools_restampRepo` | Preview or apply a standards-version restamp across fleet repos. Dry-run calls the canonical drift checker to discover drifted files; apply stamps via the Phase 1 Python scripts, branches, PRs, and squash-merges. |\n| `devtools_syncRegistry` | Preview or apply `registry.json` field edits and regenerate derived artifacts (README, CLAUDE.md, docs/index.html). Update-only: rejects slugs not in `registry.json`. Apply runs `sync_from_registry.py`, verifies with `--check`, and opens a meta-repo PR. |\n| `devtools_createTool` | Plan or execute creation of a new ecosystem tool repo. Dry-run validates inputs, runs `scaffold/create-tool.py` to a temp dir, lists generated files, and reports the would-be registry entry and `STANDARDS_VERSION`. Apply creates a real public GitHub repo (IRREVERSIBLE; requires `confirm=true` and a token with repo-creation scope), scaffolds and bootstraps it, applies branch protection, and registers it via a meta-repo PR. |\n\n**Boundary rule:** `devtools_syncRegistry` only updates existing entries. `devtools_createTool` is the only tool that can add a new entry.\n\n**createTool apply guard:** Setting `apply=true` without `confirm=true` is refused. The `gh repo create` step creates a live public repo and cannot be undone.\n\n---\n\n## Running as an MCP server\n\n### Quick start with npx\n\n```bash\nGH_TOKEN=your_token npx @tmhs/devtools-mcp\n```\n\n### From source\n\n```bash\ngit clone https://github.com/TMHSDigital/Developer-Tools-MCP.git\ncd Developer-Tools-MCP\nnpm install\nnpm run build\nGH_TOKEN=your_token node dist/index.js\n```\n\n### Claude Desktop / Cursor config\n\nAdd to your MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"devtools\": {\n      \"command\": \"npx\",\n      \"args\": [\"@tmhs/devtools-mcp\"],\n      \"env\": {\n        \"GH_TOKEN\": \"your_token_here\"\n      }\n    }\n  }\n}\n```\n\n---\n\n## Environment variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `GH_TOKEN` | Strongly recommended | GitHub personal access token. No scopes required for public repos. Without it, GitHub limits unauthenticated requests to 60 per hour per IP. A single full fleet call fans out to 20-30 requests. |\n| `GITHUB_TOKEN` | Alternative | Accepted as a fallback if `GH_TOKEN` is not set. |\n| `DEVTOOLS_META_ROOT` | Required for write tools | Absolute path to a local `Developer-Tools-Directory` checkout. When set, `registry.json`, `VERSION`, and the drift config are read from disk instead of GitHub. Required for all write tools (`restampRepo`, `syncRegistry`, `createTool`). |\n\nCopy `.env.example` to `.env` and fill in `GH_TOKEN` before running locally.\n\n---\n\n## Caching\n\nAll GitHub API and raw file responses are cached in memory with a 5-minute TTL. Repeated tool calls within a session reuse cached data without additional API requests.\n\n---\n\n## Public safety posture\n\n- Write tools default to dry-run (`apply=false`). No network mutations without explicit opt-in.\n- `createTool apply` requires both `apply=true` AND `confirm=true` plus a token with repo-creation scope.\n- No secrets are committed. Tokens come from environment variables only.\n- No hardcoded paths. All GitHub reads use the public API or raw content URLs.\n- Rate-limit errors name `GH_TOKEN` and link to how to get one.\n\n---\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test\n```\n\nTests use vitest with mocked fetch responses. No live API calls are made in CI.\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nCC-BY-NC-ND-4.0 - see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmhsdigital%2Fdeveloper-tools-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmhsdigital%2Fdeveloper-tools-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmhsdigital%2Fdeveloper-tools-mcp/lists"}