Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Read-only MCP server over a local log-analysis backend; a client that computes no verdicts.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"itsoc": {
"command": "uvx",
"args": [
"itsoc-mcp"
]
}
}
}Führe das in deinem Terminal aus
claude mcp add itsoc -- uvx itsoc-mcpIn .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"itsoc": {
"command": "uvx",
"args": [
"itsoc-mcp"
]
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"itsoc": {
"type": "stdio",
"command": "uvx",
"args": [
"itsoc-mcp"
]
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto Ankit512 bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.0) kam vor 3 Monaten in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) auf deinem Computer.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, sync. labs
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Lipsync videos, dub them into other languages, make talking videos and open sync. Studio.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
mcp-name: io.github.Ankit512/itsoc-icp
itsoc-icp (Python package itsoc_mcp) exposes this project's existing log-analysis capabilities as Model Context Protocol tools, so an MCP-capable agent (Claude Code / Claude Desktop) can drive them. It is an isolated sibling package: it imports nothing from anomaly_detector.py, changes no /api/* route, and adds no dependency to the core backend.
http://127.0.0.1:8765 by default). This server computes no verdicts: severities, correlation, and rule verdicts are owned by the frozen deterministic detector on the backend. Tools relay; they never re-decide.propose_block_ip can create a proposal in the pending state only; all execution and approval authority strictly resides on the backend console with human-in-the-loop step-up authentication. analyze_log kicks off log analysis and explain_finding requests an advisory explanation via the existing endpoint — an explanation never changes, suppresses, or escalates a verdict.null / "0 lines parsed" / idle states are passed through verbatim — never a fabricated all-clear or an empty file.console/redact.py) before it leaves, unless you opt into a trusted local session (see below).Every tool response carries a provenance block stating: verdicts are deterministic/rule-owned, explanations are advisory, MITRE tags are derived (not verdicts), plus the running detector's detector_sha256.
| Tool | What it returns | Honesty notes | ||||
|---|---|---|---|---|---|---|
analyze_log(source, compare=False) | Runs the existing analyze flow on a local path or an http(s) URL; returns run_id + summary (severity counts, lines parsed/unparsed, unrecognized flag, detector sha). | Unrecognized format → "0 lines parsed", explicitly not an all-clear. | ||||
list_runs() | Saved runs from run history, plus the current run. | Empty history is honestly empty. | ||||
get_findings(run_id='', severity='', rule='', host='', limit=50) | Filtered findings for the active run: rule-owned severity, rule_id, derived MITRE tags. | Host/title are redacted by default. A non-current run_id is an honest error (this server never switches the active run). | ||||
get_evidence(finding_id, run_id='') | Real evidence lines + rule predicate + timeline for one finding. | Raw lines and timeline labels are redacted by default. | ||||
explain_finding(finding_id, run_id='') | Advisory LLM explanation via /api/explain. | Advisory only; redacted by default; an unreachable model is an honest error. | ||||
export_run(format, run_id='') | Proxies /api/export (`csv\ | html\ | xml\ | json\ | md`). | Idle → honest 409 ("nothing to export yet"), never an empty file. Content carries raw log text, so it is withheld by default (real size + sha256 returned); set the trusted-local flag to receive it inline. |
threat_intel_lookup(ip, bundle_path=None) | Offline STIX→MITRE lookup for one IPv4, reusing threat_intel/ (match + severity from threat_detector.py, MITRE from the cached ATT&CK DB). No network egress. | No bundle configured → honest n/a; no match → honest "no match", not an all-clear. | ||||
propose_block_ip(incident_id, runbook_id='rb-block-ip') | Proposes a perimeter IP block by creating a pending approval record on the backend console. | Proposal creation only: zero execution authority, zero approval authority. Step-up auth on console is required to approve/execute. |
Every tool declares all four MCP hints as explicit booleans (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) so hosts can warn before invoke and OpenAI's directory will accept the contract. Read tools (list_runs, get_findings, get_evidence, export_run, threat_intel_lookup) are readOnlyHint: true. analyze_log, explain_finding, and propose_block_ip are writes (additive, not destructive). All backend-facing tools are openWorldHint: true.
The core backend stays stdlib-only — do not install anything to run it. Install the MCP SDK only if you want to run this server:
pip install -r itsoc_mcp/requirements-mcp.txt # the `mcp` SDK, and nothing else
python3 console/serve.py # serves http://127.0.0.1:8765
python -m itsoc_mcp
| Variable | Default | Purpose |
|---|---|---|
ITSOC_BASE_URL | http://127.0.0.1:8765 | Where the local backend is listening. |
ITSOC_MCP_TRUSTED_LOCAL | *(unset)* | Set to 1 to return raw (unredacted) log text and inline export content. Leave unset for any session an MCP client could relay off-machine — the default masks IPs, usernames, and known hosts. |
ITSOC_STIX_BUNDLE | *(unset)* | Path to a local STIX bundle for threat_intel_lookup. Unset → the tool honestly reports "n/a — nothing to match against". |
Paste into your MCP client config (e.g. Claude Desktop's claude_desktop_config.json, or .mcp.json for Claude Code). Replace /ABSOLUTE/PATH/TO/itsoc with the repo root:
{
"mcpServers": { "itsoc-icp": { "command": "python", "args": ["-m", "itsoc_mcp"], "cwd": "/ABSOLUTE/PATH/TO/itsoc", "env": { "ITSOC_BASE_URL": "http://127.0.0.1:8765" } } } }
To allow raw evidence/export on a trusted local machine, add "ITSOC_MCP_TRUSTED_LOCAL": "1" (and optionally "ITSOC_STIX_BUNDLE": "...") to that env block. The backend (python3 console/serve.py) must be running.
Network-free, no SDK, no ATT&CK cache required — the client is faked and the offline mapper is stubbed:
python3 itsoc_mcp/test_mcp.py
It asserts each tool's shape, that get_evidence/get_findings/explain_finding are redacted by default and raw only with ITSOC_MCP_TRUSTED_LOCAL=1, and that idle/unrecognized/error states return honest errors, not empty payloads.
uvx / pipx)pyproject.toml builds an itsoc-icp distribution with an itsoc-icp console script (itsoc_mcp.server:main) and pins mcp>=1.9,<2 — MCP clients speak the stable 1.x API; mcp 2.0 changed the server API. The package is self-contained: designed to run with no repo checkout.
uvx itsoc-icp # or: pipx run itsoc-icp (the backend must still be running)
Two honesty points, stated plainly:
console/redact.py — used whenever the repo is importable. In a bare install it falls back to a verbatim vendored mirror (_redact_vendored.py) that masks identically (redact-by-default; raw only with ITSOC_MCP_TRUSTED_LOCAL=1). A drift-guard test asserts the two never diverge, so the vendored copy can never silently mask *less*. redaction.redact_source() reports which is active. If neither could load, the module fails to import rather than pass text through — it fails closed, never open.threat_intel/ package, which a bare install does not ship. In a standalone install that one tool fails closed with an honest "offline threat-intel unavailable … NOT a clean verdict / not an all-clear" message — never a fabricated match or a fake all-clear. Run from the repo (python -m itsoc_mcp) to use offline threat-intel. Every other tool is a client of the backend API and works identically standalone or in-repo.Standalone means *no repo checkout is needed for the MCP package* — the backend (python3 console/serve.py) still runs separately and must be reachable at ITSOC_BASE_URL.
MIT — see the repository's top-level LICENSE.