diff --git a/.cursor/mcp.json b/.cursor/mcp.json index dc243ec..05348ae 100644 --- a/.cursor/mcp.json +++ b/.cursor/mcp.json @@ -1,46 +1,46 @@ { "mcpServers": { "nlt-build": { - "type": "streamableHttp", - "url": "http://127.0.0.1:8760/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + "type": "streamableHttp", + "url": "http://127.0.0.1:8760/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-memory": { + "type": "streamableHttp", + "url": "http://127.0.0.1:8761/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-setup": { + "type": "streamableHttp", + "url": "http://127.0.0.1:8762/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-linear-issues": { + "type": "streamableHttp", + "url": "http://127.0.0.1:8763/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-project-docs": { + "type": "streamableHttp", + "url": "http://127.0.0.1:8764/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-release-ship": { + "type": "streamableHttp", + "url": "http://127.0.0.1:8765/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } } - }, - "nlt-memory": { - "type": "streamableHttp", - "url": "http://127.0.0.1:8761/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - }, - "nlt-setup": { - "type": "streamableHttp", - "url": "http://127.0.0.1:8762/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - }, - "nlt-linear-issues": { - "type": "streamableHttp", - "url": "http://127.0.0.1:8763/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - }, - "nlt-project-docs": { - "type": "streamableHttp", - "url": "http://127.0.0.1:8764/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - }, - "nlt-release-ship": { - "type": "streamableHttp", - "url": "http://127.0.0.1:8765/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - } } } diff --git a/.mcp.json b/.mcp.json index 955aa4b..81f0e5e 100644 --- a/.mcp.json +++ b/.mcp.json @@ -1,52 +1,46 @@ { "mcpServers": { "nlt-build": { - "type": "http", - "url": "http://127.0.0.1:8760/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + "type": "http", + "url": "http://127.0.0.1:8760/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } }, - "instructions": "Code quality scoring (0-100 across 7 categories), security scanning (Bandit + secret detection), quality gates (pass/fail against configurable presets), documentation lookup, domain expert consultation, and project profiling for Python projects." - }, - "nlt-memory": { - "type": "http", - "url": "http://127.0.0.1:8761/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + "nlt-memory": { + "type": "http", + "url": "http://127.0.0.1:8761/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } }, - "instructions": "Code quality scoring (0-100 across 7 categories), security scanning (Bandit + secret detection), quality gates (pass/fail against configurable presets), documentation lookup, domain expert consultation, and project profiling for Python projects." - }, - "nlt-setup": { - "type": "http", - "url": "http://127.0.0.1:8762/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + "nlt-setup": { + "type": "http", + "url": "http://127.0.0.1:8762/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } }, - "instructions": "Code quality scoring (0-100 across 7 categories), security scanning (Bandit + secret detection), quality gates (pass/fail against configurable presets), documentation lookup, domain expert consultation, and project profiling for Python projects." - }, - "nlt-linear-issues": { - "type": "http", - "url": "http://127.0.0.1:8763/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + "nlt-linear-issues": { + "type": "http", + "url": "http://127.0.0.1:8763/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } }, - "instructions": "Code quality scoring (0-100 across 7 categories), security scanning (Bandit + secret detection), quality gates (pass/fail against configurable presets), documentation lookup, domain expert consultation, and project profiling for Python projects." - }, - "nlt-project-docs": { - "type": "http", - "url": "http://127.0.0.1:8764/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + "nlt-project-docs": { + "type": "http", + "url": "http://127.0.0.1:8764/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } }, - "instructions": "Documentation MCP: epic/story/prompt generators, artifact validation, and planning helpers for Markdown docs in this repo." - }, - "nlt-release-ship": { - "type": "http", - "url": "http://127.0.0.1:8765/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - }, - "instructions": "Code quality scoring (0-100 across 7 categories), security scanning (Bandit + secret detection), quality gates (pass/fail against configurable presets), documentation lookup, domain expert consultation, and project profiling for Python projects." - } + "nlt-release-ship": { + "type": "http", + "url": "http://127.0.0.1:8765/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + } } } diff --git a/.vscode/mcp.json b/.vscode/mcp.json index d274106..04feef7 100644 --- a/.vscode/mcp.json +++ b/.vscode/mcp.json @@ -1,46 +1,46 @@ { "servers": { "nlt-build": { - "type": "http", - "url": "http://127.0.0.1:8760/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + "type": "http", + "url": "http://127.0.0.1:8760/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-memory": { + "type": "http", + "url": "http://127.0.0.1:8761/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-setup": { + "type": "http", + "url": "http://127.0.0.1:8762/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-linear-issues": { + "type": "http", + "url": "http://127.0.0.1:8763/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-project-docs": { + "type": "http", + "url": "http://127.0.0.1:8764/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } + }, + "nlt-release-ship": { + "type": "http", + "url": "http://127.0.0.1:8765/mcp", + "headers": { + "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" + } } - }, - "nlt-memory": { - "type": "http", - "url": "http://127.0.0.1:8761/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - }, - "nlt-setup": { - "type": "http", - "url": "http://127.0.0.1:8762/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - }, - "nlt-linear-issues": { - "type": "http", - "url": "http://127.0.0.1:8763/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - }, - "nlt-project-docs": { - "type": "http", - "url": "http://127.0.0.1:8764/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - }, - "nlt-release-ship": { - "type": "http", - "url": "http://127.0.0.1:8765/mcp", - "headers": { - "X-Tapps-Project-Root": "/home/wtthornton/code/agentforge-echo-plugin" - } - } } } diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..10413b5 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,43 @@ + +# Security Policy + +## Supported Versions + +| Version | Supported | +|---------|-----------| +| latest | Yes | + +## Reporting a Vulnerability + +If you discover a security vulnerability in this project, please report it +responsibly: + +1. **Do NOT open a public issue.** Security vulnerabilities should be reported + privately. +2. Use [GitHub's private vulnerability reporting](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability) + to submit your report. +3. Include: + - A description of the vulnerability + - Steps to reproduce + - Potential impact + - Suggested fix (if any) + +## Response Timeline + +- **Acknowledgment:** Within 48 hours of report +- **Assessment:** Within 1 week +- **Fix or mitigation:** Within 2 weeks for critical issues + +## Security Measures + +This project uses automated security scanning: + +- **Bandit** — static analysis for common security issues in Python +- **Secret scanning** — detection of hardcoded API keys, tokens, and passwords +- **pip-audit** — dependency vulnerability scanning against the PyPI advisory database +- **CodeQL** — GitHub's semantic code analysis engine + +## Scope + +This policy applies to the latest release and the main development branch. +Older versions receive security patches on a best-effort basis.