sdlc-integrity-mcp
MCP server that provides audit and safety-check tools for enterprise SDLC code integrity, enabling AI agents to scan workspaces for lifecycle gaps, mock-theater tests, DRY violations, and language-specific issues in shell, JavaScript/HTML, and Python.
README
<img src="https://raw.githubusercontent.com/AsobaCloud/sdlc-integrity-mcp/master/docs/asoba-logo.svg" alt="Asoba" width="36" height="36" align="bottom" /> SDLC Code Integrity
MCP server for enterprise SDLC code integrity. AI coding agents call its tools over the Model Context Protocol to scan a workspace for lifecycle teardown gaps, mock-theater tests, DRY violations, and language-specific safety issues in shell, JavaScript/HTML, and Python.
Quick start
Set SDLC_WORKSPACE to the absolute path of the repo to audit. If omitted, the server uses its process working directory. The server speaks MCP over stdio (no HTTP port).
Cursor
Add to ~/.cursor/mcp.json or the project .cursor/mcp.json:
{
"mcpServers": {
"sdlc-integrity": {
"command": "npx",
"args": ["-y", "@asobacloud/sdlc-integrity-mcp"],
"env": {
"SDLC_WORKSPACE": "/absolute/path/to/your/repo"
}
}
}
}
Restart Cursor (or reload MCP servers), then ask the agent to run the integrity tools.
Claude Code
CLI (user scope):
claude mcp add --transport stdio --scope user \
--env SDLC_WORKSPACE=/absolute/path/to/your/repo \
sdlc-integrity -- npx -y @asobacloud/sdlc-integrity-mcp
Or put the same JSON under mcpServers in project .mcp.json (team-shared) or ~/.claude.json (user-wide):
{
"mcpServers": {
"sdlc-integrity": {
"command": "npx",
"args": ["-y", "@asobacloud/sdlc-integrity-mcp"],
"env": {
"SDLC_WORKSPACE": "/absolute/path/to/your/repo"
}
}
}
}
Verify with claude mcp list. Project .mcp.json servers need approval the first time you open the repo in Claude Code.
Codex
CLI:
codex mcp add sdlc-integrity --env SDLC_WORKSPACE=/absolute/path/to/your/repo -- npx -y @asobacloud/sdlc-integrity-mcp
Or edit ~/.codex/config.toml (or project .codex/config.toml in a trusted project):
[mcp_servers.sdlc-integrity]
command = "npx"
args = ["-y", "@asobacloud/sdlc-integrity-mcp"]
[mcp_servers.sdlc-integrity.env]
SDLC_WORKSPACE = "/absolute/path/to/your/repo"
Codex CLI, the IDE extension, and the ChatGPT desktop Codex host share this config.
Run directly
npx -y @asobacloud/sdlc-integrity-mcp
Tools
| Tool | Runtime | What it checks |
|---|---|---|
AuditCodeIntegrity |
python3 |
Lifecycle teardown parity, mock-theater test detection, naming invariants, swallowed exceptions, DRY / duplicative functions. Returns structured JSON. |
ShellSafetyChecker |
bash |
Missing set -euo pipefail, shebang issues, hardcoded credentials, background-job silent-failure risk; optionally shellcheck errors. |
JsSafetyChecker |
node |
JS/HTML syntax errors, duplicate function definitions, duplicate HTML element IDs (AST-based via esprima). |
PythonSafetyChecker |
python3 |
bandit (High/Critical), ruff, AST checks for eval/exec, pickle loads, hardcoded credentials, mutable default args. |
Each tool accepts:
target— file or directory to scan (relative paths resolve againstSDLC_WORKSPACE)timeout— optional timeout in ms (default120000, max600000)
Checker exit code 1 (findings) becomes isError: true on the MCP result. Unexpected crashes are reported as errors.
Requirements
| Runtime | Required for |
|---|---|
| Node.js ≥ 22 | MCP server + JsSafetyChecker |
| Python 3 | AuditCodeIntegrity, PythonSafetyChecker |
| bash | ShellSafetyChecker |
Optional (skipped with a warning if missing):
| Tool | Improves |
|---|---|
| shellcheck | ShellSafetyChecker |
| bandit | PythonSafetyChecker |
| ruff | PythonSafetyChecker |
Custom rules
Drop JSON tool configs into <workspace>/.sdlc-rules/. Local rules override bundled tools with the same name, or add new ones. Script paths resolve relative to .sdlc-rules/.
{
"name": "MyCustomAudit",
"description": "Project-specific integrity check",
"input_schema": {
"type": "object",
"properties": {
"target": { "type": "string", "description": "File or directory to scan" },
"timeout": { "type": "integer", "description": "Timeout in ms (max 600000)" }
}
},
"execution": {
"runtime": "python3",
"script": "./my-audit.py",
"args": ["--target", "{{target}}"],
"default_timeout": 120000,
"max_timeout": 600000
}
}
{{placeholder}} values are filled from the tool call. If a value is omitted, that flag and its placeholder are skipped.
Architecture
rules/*.json → tool schemas + execution specs
scripts/* → checker subprocesses
src/loader.ts → bundled rules + .sdlc-rules/ overlay
src/runner.ts → spawn, timeouts, exit-code → isError
src/index.ts → MCP stdio server
bin/cli.js → npx / bin entrypoint
Development
git clone https://github.com/AsobaCloud/sdlc-integrity-mcp.git
cd sdlc-integrity-mcp
npm install
npm run build
npm test
| Script | Purpose |
|---|---|
npm run build |
Compile TypeScript → dist/ |
npm test |
E2E via real MCP Client + fixture assertions for all tools |
npm start |
Run the server on stdio |
npm run dev |
node --watch on dist/ |
Local MCP config (instead of npx):
{
"mcpServers": {
"sdlc-integrity": {
"command": "node",
"args": ["/absolute/path/to/sdlc-integrity-mcp/dist/index.js"],
"env": {
"SDLC_WORKSPACE": "/absolute/path/to/your/repo"
}
}
}
}
Releasing
CI runs build + E2E on every push/PR. To publish a new version:
- Bump
versioninpackage.json - Commit, push, and create a GitHub Release (
gh release create vX.Y.Z --generate-notes) .github/workflows/publish.ymlpublishes to npm (Trusted Publisher / OIDC, orNPM_TOKENif configured)
License
MIT © Asoba
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.