Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Free, local check before an AI agent acts: your rules return ACT, BLOCK or ESCALATE.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
ABE_POLICY, ABE_RESOLVER, FLOW_API_KEY「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"abe": {
"command": "uvx",
"args": [
"abe-ai",
"mcp"
],
"env": {
"ABE_POLICY": "your-value",
"ABE_RESOLVER": "your-value",
"FLOW_API_KEY": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add abe --env ABE_POLICY=your-value --env ABE_RESOLVER=your-value --env FLOW_API_KEY=your-value -- uvx abe-ai mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"abe": {
"command": "uvx",
"args": [
"abe-ai",
"mcp"
],
"env": {
"ABE_POLICY": "your-value",
"ABE_RESOLVER": "your-value",
"FLOW_API_KEY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"abe": {
"type": "stdio",
"command": "uvx",
"args": [
"abe-ai",
"mcp"
],
"env": {
"ABE_POLICY": "your-value",
"ABE_RESOLVER": "your-value",
"FLOW_API_KEY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
ABE_RESOLVER envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント flowinfosystems-index で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:ABE_POLICY, FLOW_API_KEY
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.2.3)がレジストリに届いたのは24 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Tools MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況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.
Web production tools for AI agents: contrast, JP text, WebP, JSON-LD, slugs, dates and 40+ more
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Abe is a free, open-source guardrail that checks every AI agent action before it happens.
Your agent is about to pay an invoice, buy servers, delete a table or email a customer. Abe checks the action against your rules in under a millisecond, on your machine, and answers `ACT`, `BLOCK` or `ESCALATE`, with a tamper-evident record of why.
▶ [Watch the 40-second demo](https://www.youtube.com/watch?v=ctE8Kz9a6W0): an AI agent tries to spend $12,500 twice. Rules decide the easy calls; Flow catches the duplicate and approves the real renewal. (Run it yourself)
Apache-2.0. No account, no API key, no network, no model, no usage limits. Every check runs on your machine, at no cost, forever.
main, DROP TABLE in production.ESCALATE, never ACT.When rules can't decide, Abe returns ESCALATE. By default that goes to a person. Add --resolver flow and only that action is sent to Flow (redacted), which returns a decision, a reason, and what would prove it wrong, for about $0.03 to $0.05 each. ACT and BLOCK never leave your machine. Details below.
pip install abe-ai # or: npm install abe-ai
abe init # writes abe-policy.yaml + request.json abe check request.json
```text
Decision: ESCALATE Reason: FINANCIAL_THRESHOLD_EXCEEDED Rules: purchase_review_limit Risk: MEDIUM Record: jgr_01M3Q4...
from abe import Abe
abe = Abe("abe-policy.yaml")
result = abe.check( action={"type": "wire_transfer", "amount": 50000}, context={"agent_id": "finance-agent"}, )
if result.decision == "ACT": ... # execute exactly as evaluated elif result.decision == "BLOCK": ... # do not execute; tell the user result.reason_code else: # ESCALATE ... # hold; ask a human, or let a resolver decide
result.record.to_dict() # the Judgment-Grounded Record (store it, ship it to your SIEM)
from claude_agent_sdk import ClaudeAgentOptions
from abe import Abe from abe.integrations.claude_agent_sdk import abe_hooks
options = ClaudeAgentOptions(hooks=abe_hooks(Abe("abe-policy.yaml"), agent_id="ops-agent"))
Every tool call is checked before it runs. BLOCK → deny with Abe's reason; ESCALATE → deny, ask or defer (hand it to a person); ACT → your normal permissions. Tool inputs are action fields (action.command, action.amount). See examples/claude_agent_sdk.
import { Abe } from "abe-ai";
const abe = new Abe({ policy: "./abe-policy.yaml" }); const result = await abe.check({ action: { type: "purchase", amount: 12500, currency: "USD" }, context: { agent_id: "procurement-agent", principal_id: "user_123" }, }); console.log(result.decision); // "ESCALATE"
version: "0.1"
defaults: { unmatched: ESCALATE } # nothing matched -> needs judgment (fail closed) rules:
judgment_required:
Also: authorization per agent, required evidence, risk and irreversibility thresholds, confidence minimums. BLOCK beats ESCALATE beats ACT. Bad input or a broken rule returns ESCALATE / EVALUATION_FAILURE, never ACT. Full reference: SPEC.md.
Replay saved requests through a policy before it touches real money. Label each case with what your people decided and Abe reports where it disagrees; compare against the live policy to see exactly which decisions a change moves.
# cases.jsonl: one request per line, or {"id": "inv-1042", "request": {...}, "expected": "BLOCK"}
abe replay cases.jsonl --policy new-policy.yaml --baseline abe-policy.yaml
abe replay cases.jsonl --policy new-policy.yaml --baseline abe-policy.yaml --fail-on-change # CI: exit 1 if anything moved
Shadow mode runs Abe beside your current approval process. Decisions, results and exit codes are exactly what enforce mode would return, and every record is marked "mode": "shadow". Keep approving the way you do today, report what your people decided, and each record's falsifier shows whether they agreed.
from abe.stores import SQLiteStore
abe = Abe("abe-policy.yaml", mode="shadow", store=SQLiteStore("abe.db")) # or: abe serve --shadow · ABE_MODE=shadow r = abe.check(action={"type": "purchase", "amount": 48000}, context={"agent_id": "ap-agent"})
abe.record_outcome(r.records[0], "approved") # people approved; if Abe said BLOCK, the falsifier triggers
When the agreement rate is where you want it, drop mode="shadow" and Abe enforces.
| Library | pip install abe-ai · npm install abe-ai |
| CLI | abe check · replay · validate-policy · validate-record · conformance · keygen |
| Local HTTP sidecar | abe serve --policy abe-policy.yaml → POST http://127.0.0.1:8787/v1/check (any language) |
| Docker sidecar | docker run -e ABE_TOKEN=… -v $PWD:/policy:ro -p 127.0.0.1:8787:8787 ghcr.io/flowinfosystems-index/abe |
| Claude Agent SDK hook | pip install "abe-ai[claude]" → ClaudeAgentOptions(hooks=abe_hooks(abe)) (example) |
| MCP server | pip install "abe-ai[mcp]" → abe mcp --policy /abs/abe-policy.yaml (tool: fjp_check_action) |
| + Flow on escalations | add --resolver flow (or ABE_RESOLVER=flow) with FLOW_API_KEY to check, serve, mcp or the Docker image |
Every call returns a record with the decision, every matched rule, the exact policy hash, the request hash, and a SHA-256 record_hash (optionally Ed25519-signed with abe keygen). Records never change: outcomes and resolutions are appended as linked records. Each one is a valid FJP-CONF v0.1 Judgment-Grounded Record.
abe check request.json --record-out jgr.json --sign-key abe-signing-key.pem
abe validate-record jgr.json --public-key abe-signing-key.pub.pem
Abe is deliberately useful without Flow. When it returns ESCALATE, you can hand that one action to Flow's judgment service and get a verb, a reason and a falsifiable record back:
from abe import Abe
from abe_flow import FlowResolver # pip install abe-flow
abe = Abe("abe-policy.yaml", resolver=FlowResolver(api_key=os.environ["FLOW_API_KEY"]))
No Python? The CLI, sidecar and MCP server take the same resolver (pip install "abe-ai[mcp,flow]"):
{"mcpServers": {"abe": {"command": "abe",
"args": ["mcp", "--policy", "/abs/abe-policy.yaml", "--resolver", "flow"], "env": {"FLOW_API_KEY": "fjp_live_..."}}}}
abe serve --resolver flow and docker run -e ABE_RESOLVER=flow -e FLOW_API_KEY=… … work the same way. If Flow is out of credits, the MCP result says so and links to the refill page; the action stays ESCALATE.
ACT and BLOCK never leave your machine. Only escalations are sent (redacted), and if Flow is unreachable the answer simply stays ESCALATE. Human-approval escalations are never auto-resolved.
abe conformance --bench # FJP-CONF v0.1 Gate profile, Level 3 — 160 checks, offline
SPEC.md the normative specification
schemas/ JSON Schemas (request, response, record, policy) python/ abe-ai (PyPI): core, CLI, HTTP, MCP, stores, signing, conformance typescript/ abe-ai (npm): same API, same records, same hashes flow-resolver/ abe-flow (PyPI): Gate → Flow for ESCALATE only conformance/fixtures/ golden decisions + canonical-JSON vectors shared by every SDK examples/ the $12,500 demo, purchasing, software agent, physical agent, travel (+ Judd), Flow
Apache-2.0. FJP™, Abe™ (Abe) and FJP-CONF™ are trademarks of Flow Information Systems — see TRADEMARKS.md.