Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Deterministic, offline FMECA MCP server: failure modes, criticality matrix, mitigations, readiness
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"fmeca": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/praxec/fmeca:0.2.2"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add fmeca -- docker run -i --rm ghcr.io/praxec/fmeca:0.2.2프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"fmeca": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/praxec/fmeca:0.2.2"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"fmeca": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/praxec/fmeca:0.2.2"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검
레지스트리 이름이 GitHub 계정 praxec 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.2.2)은 15일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Docker도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Recta
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
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.
Cheaper cross-chain stablecoin routes for AI agents; 5 % of the verified saving, nothing if none.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
fmeca-mcp is a structured FMECA engine exposed as an MCP server. You feed it failure modes and the observations that characterise them; it derives the severity/probability scores, computes criticality off a fixed matrix, tracks mitigations under a prevent→detect→fail-fast discipline, and tells you whether the analysis is ready to sign off. Any MCP client (Claude Code, Cursor, or a custom orchestrator) drives it over the standard protocol.
For AI agents: to install the server and its skills for your client, follow docs/AGENT-INSTALL.md.
Failure Modes, Effects & Criticality Analysis is a structured risk-triage method: enumerate how a thing can fail, judge how bad each failure is (severity) and how likely it is (probability), and rank the combined criticality so the worst risks get addressed first. Mitigations are then layered on and the *residual* risk is re-assessed. fmeca-mcp owns the structure and the arithmetic of that process; the caller supplies the domain judgement.
The engine is a pure function of (events in) → (criticality + residual + gaps + readiness out). It does no I/O beyond an append-only event log, makes no network calls, and runs no model.
Crucially, the caller never supplies a score. A caller (often an LLM) does the fuzzy work — naming a failure mode, its cause and effect, and proposing mitigations — and supplies *observations* drawn from a fixed catalog (e.g. data_loss, happens_in_normal_use). The kernel maps those observations to severity/probability levels through a locked evidence→score map and reads criticality off a fixed, locked S×P matrix. The model proposes; the code scores. Because criticality, residual risk, standing, and readiness are *computed* by a fold over the event log — never stored, never accepted as input — the same analysis always yields the same result, and no model can talk the matrix into a softer answer.
npx -y @matthew-cochran/fmeca
The npm launcher downloads the matching release binary, verifies its checksum, caches it and runs it. The package installs two command aliases, fmeca and fmeca-mcp, both running the same launcher. Point your MCP client at either command (see MCP client config).
# Linux / macOS
curl -fsSL https://github.com/praxec/fmeca/releases/latest/download/install.sh | sh
irm https://github.com/praxec/fmeca/releases/latest/download/install.ps1 | iex
The installer resolves your OS and CPU architecture, downloads the matching release asset, verifies its SHA-256 against the release's checksums.sha256, extracts it safely, and atomically installs the binary into a user-local managed directory ($HOME/.local/bin on Linux/macOS, %LOCALAPPDATA%\Programs\fmeca-mcp on Windows). It never compiles from source and fails loudly on an unsupported OS/architecture.
Pin a specific release instead of the current latest stable:
curl -fsSL https://github.com/praxec/fmeca/releases/latest/download/install.sh \
| sh -s -- --version v0.1.0
The installers can also be fetched from a specific release, for example https://github.com/praxec/fmeca/releases/download/v0.1.0/install.sh.
The installer scripts are published as release assets alongside the binaries.
Or download the archive directly. Every release publishes a checksums.sha256 and a machine-readable release-manifest.json listing each target, asset, digest, version, and source SHA:
| OS | Arch | Target triple | Asset | Build support | Runtime smoke tested |
|---|---|---|---|---|---|
| Linux | x86_64 | x86_64-unknown-linux-gnu | fmeca-mcp-x86_64-unknown-linux-gnu.tar.gz | native CI | native CI |
| Linux | arm64 | aarch64-unknown-linux-gnu | fmeca-mcp-aarch64-unknown-linux-gnu.tar.gz | native CI | native CI |
| macOS | x86_64 | x86_64-apple-darwin | fmeca-mcp-x86_64-apple-darwin.tar.gz | native CI | native CI |
| macOS | Apple Silicon | aarch64-apple-darwin | fmeca-mcp-aarch64-apple-darwin.tar.gz | native CI | native CI |
| Windows | x86_64 | x86_64-pc-windows-msvc | fmeca-mcp-x86_64-pc-windows-msvc.zip | native CI | native CI |
| Windows | arm64 | aarch64-pc-windows-msvc | fmeca-mcp-aarch64-pc-windows-msvc.zip | native CI | native CI |
"Native CI" means each asset is built and its MCP initialize/tools/list handshake smoke-tested on that platform's own runner. No other CPU/OS combination is claimed; unsupported platforms are rejected rather than silently cross-compiled.
Re-run the installer to update. Only the binary in the managed install directory is replaced (atomically); application state and configuration live outside that directory and are never overwritten. See Configuration for where state goes.
docker run -i --rm ghcr.io/praxec/fmeca:0.1.0
Mount your project to keep analyses in its .fmeca/ folder (without a mount the state is lost when the container exits). FMECA_STATE_DIR points the server at that folder even before fmeca-mcp init has created it:
docker run -i --rm --user "$(id -u):$(id -g)" -v "$PWD:/work" -w /work -e FMECA_STATE_DIR=/work/.fmeca -e OPENROUTER_API_KEY ghcr.io/praxec/fmeca:0.1.0
cargo install fmeca-mcp
cargo install works once the crate is published to crates.io. Until then, build from a checkout with cargo build --release.
It speaks MCP over stdio (the standard transport). Wire it into your editor like any other MCP server. The same entry works in Claude Code (.mcp.json) and Copilot (.mcp.json) (Cursor needs "type": "stdio"; see its section in AGENT-INSTALL):
{
"mcpServers": { "fmeca": { "command": "npx", "args": ["-y", "@matthew-cochran/fmeca"] } } }
Use "command": "fmeca-mcp" (or its alias "command": "fmeca") with "args": [] for the binary. Codex uses TOML:
[mcp_servers.fmeca]
command = "npx" args = ["-y", "@matthew-cochran/fmeca"] env_vars = ["OPENROUTER_API_KEY"]
Every client, with the skills install for each (including Cursor's .cursor/mcp.json entry), is in docs/AGENT-INSTALL.md. The key is optional (only vet uses it) and is never written to a config file: pass it as "env": { "OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}" } where the client expands variables, or let the server inherit it from the environment.
| Tool | Does |
|---|---|
session.open | Start or resume a session; optionally selects the matrix strategy and records analysis metadata (title, level, aspect, scope_paths, parent), all fixed for the session's life. |
append | Add a failure mode (add_failure_mode), add a mitigation (add_mitigation), or re-score an existing failure mode (rescore). set_mitigation_status moves a mitigation through planned, implemented, verified or abandoned (verified needs evidence other than a note). set_failure_mode_disposition accepts a failure mode's residual risk (needs an approver) or excludes it as not credible (needs evidence); failure modes are never deleted. Returns the recomputed state. |
state.get | Read-only projection of the session: every failure mode with its computed criticality, residual, and standing. |
risk.next | The highest-criticality unmitigated failure mode — what to address next. |
readiness.assess | The readiness gate: is every High/Medium residual reduced and every blocker cleared? |
report.export | The full FMECA table for the session. |
scoring.catalog | The fixed observation vocabulary for a strategy — the ids the caller draws from. |
analyze | Stateless one-shot: hand over an entire analysis, get back the entire computed report. No session, no persistence. |
session.list | Every analysis in the state dir (the project's .fmeca/ when there is one), with its metadata, standing counts (excluded failure modes are counted separately), ready, ready_verified and resolution counts. Filters: level, aspect, parent. A log that fails to replay is listed with its error. |
vet | Advisory: asks Jev (via OpenRouter, needs OPENROUTER_API_KEY) whether observations, mitigations, coverage and readiness hold up, and returns probabilities beside the deterministic gate. Never writes or changes a score; without a key it reports vet_unavailable. |
actions.suggest | Read-only. Reads a session (or an inline analysis) under a risk policy and suggests actions: per-failure-mode risk bands, evidence confidence, dispositions, tagged actions and a sign-off verdict. Never changes the analysis or the log. |
policy.list | Read-only. The built-in policy presets and the project's .fmeca/policies/ files, each with its name, hash and class. A project file that does not load is listed with its error. |
The analyze tool reuses the exact same kernel compute as the session path, so the two can never diverge.
.fmeca/)fmeca-mcp init # at the project root: creates .fmeca/
git add .fmeca && git commit -m "chore: add .fmeca" fmeca-mcp check --dir .fmeca # in CI: replays every log, catches duplicate ids
Launch the server from the project root (or set FMECA_STATE_DIR) and it keeps one log per analysis in .fmeca/, named - . The setup, merge behaviour, Docker mount and the skill for each level are in docs/AGENT-INSTALL.md.
A risk policy reads an analysis through your project's own risk bands, sets a sign-off rule, and suggests tagged actions (design, review, test, ops, process, docs, security). It is computed when you ask and is never written to the log, so one analysis can be read under several policies. fmeca suggests; it never acts.
Presets: compat-0.1 (the default; its sign-off equals readiness.assess), prototype, standard, business-critical, safety-critical and confidence-view. Your own policies are TOML files in .fmeca/policies/ .toml and resolve after the presets.
fmeca-mcp policy list # presets and project files
fmeca-mcp policy validate .fmeca/policies/team.toml # ok , or the error fmeca-mcp suggest checkout-implementation --policy standard --format markdown
suggest exits 0 when the policy's sign-off passes, 1 when it fails (usable in CI) and 2 on a usage or policy error. Agents call the same thing as the actions.suggest and policy.list tools. The model, every preset and the action catalog are in docs/policies.md.
| Variable | Default | Effect |
|---|---|---|
FMECA_STATE_DIR | nearest .fmeca/, else $XDG_DATA_HOME/fmeca-mcp (or $HOME/.local/share/fmeca-mcp), else ./fmeca-state | Where the per-session logs live. |
OPENROUTER_API_KEY | unset | Enables the optional vet tool. Read from the environment only. |
FMECA_JEV_MODEL | typesafe/jev-1.13 | The model vet asks. |
FMECA_JEV_TIMEOUT_SECS | 30 | vet request timeout, in seconds. |
The criticality matrix is a closed, code-resident strategy selected at session.open (and fixed for the session'
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요