Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Audit AI skill safety before you ship. Static, semantic, adversarial, supply chain scans.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
TAR_ENGINE_URL, TAR_ENGINE_BYOK_OPENAI_KEY, TAR_ENGINE_BYOK_ANTHROPIC_KEY비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"tar-engine": {
"command": "uvx",
"args": [
"tar-engine",
"tar-engine",
"tar-engine-mcp"
],
"env": {
"TAR_ENGINE_URL": "your-value",
"TAR_ENGINE_BYOK_OPENAI_KEY": "your-value",
"TAR_ENGINE_BYOK_ANTHROPIC_KEY": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add tar-engine --env TAR_ENGINE_URL=your-value --env TAR_ENGINE_BYOK_OPENAI_KEY=your-value --env TAR_ENGINE_BYOK_ANTHROPIC_KEY=your-value -- uvx tar-engine tar-engine tar-engine-mcp실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"tar-engine": {
"command": "uvx",
"args": [
"tar-engine",
"tar-engine",
"tar-engine-mcp"
],
"env": {
"TAR_ENGINE_URL": "your-value",
"TAR_ENGINE_BYOK_OPENAI_KEY": "your-value",
"TAR_ENGINE_BYOK_ANTHROPIC_KEY": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"tar-engine": {
"type": "stdio",
"command": "uvx",
"args": [
"tar-engine",
"tar-engine",
"tar-engine-mcp"
],
"env": {
"TAR_ENGINE_URL": "your-value",
"TAR_ENGINE_BYOK_OPENAI_KEY": "your-value",
"TAR_ENGINE_BYOK_ANTHROPIC_KEY": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
TAR_ENGINE_URL env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 qingxuantang 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: TAR_ENGINE_BYOK_OPENAI_KEY, TAR_ENGINE_BYOK_ANTHROPIC_KEY
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.3.3)은 4개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Excaliself
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ 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.
Find, read, create, edit, and organize Excalidraw drawings in your self-hosted Excaliself instance.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Static + semantic + adversarial + supply-chain audit for AI agent skills. Run it in CI, or call it as an MCP tool from Claude Code / Cursor / Codex. BYOK for the LLM layers; free hosted tier + live Playground on tarai.dev.
Listed on the official Model Context Protocol Registry and published to PyPI — one-click install into any MCP-compatible agent.
tar-engine audits SKILL.md (OpenClaw, Claude Code), Codex `skill.yaml`, Claude Code custom commands (.claude/commands/*.md), and OpenCode configs — with no change to how you author skills. The core idea: a skill can pass every static red-flag check and still behave maliciously at runtime. TAR Engine catches that.
Three ways to run it — two of them install nothing on your machine:
tar-engine scan ./skills --min-score 70 exits 1 if any skill scores below the bar. A pre-publish gate, not a nicer directory card.SKILL.md while you write. It's a pinned, hash-verifiable PyPI release — no arbitrary git+https install. Details below.Point it at a skill that *looks* fine. A "weekly note formatter" whose SKILL.md reads clean — but buried in it is a curl … | bash step, a "cloud sync" that tars up ~/.aws and ~/.ssh, and an instruction telling the agent to hide those network calls from you:
weekly-note-formatter 0 / 100 grade F risk CRITICAL
L01 static SS-003 critical remote script piped to shell (curl … | bash) L01 static PI-002 critical hidden instruction — "don't tell the user" L02 semantic SEM-003 critical only formats docs, yet packages up AWS creds + SSH keys L02 semantic SEM-004 high instructs the model to lie about its network calls L03 adversarial AR-002 high 3/3 role-jailbreak probes changed the skill's behavior
→ below --min-score 70, exit 1
Regex catches the curl | bash. The semantic and adversarial layers catch the parts regex can't: intent that exceeds the skill's stated purpose, and instructions that turn the agent against its user. Every finding cites the exact source line with a fix.
| Layer | What it looks for | LLM? | |
|---|---|---|---|
| L01 Static | Regex red flags: `curl\ | bash` installs, credential/SSH exfil, obfuscated or base64 strings, hidden "ignore previous" style instructions, out-of-scope file writes | No |
| L02 Semantic | Reads what the skill *actually* asks the agent to do and flags intent beyond its stated purpose | Yes (BYOK) | |
| L03 Adversarial | Treats the SKILL.md as a system prompt and runs 15 probes across 5 attack classes to see if it can be coerced into unsafe behavior | Yes (BYOK) | |
| L06 Supply chain | Parses declared dependencies and checks them against OSV.dev advisories + a typosquat reference list | No |
The 5 adversarial classes (L03):
| Class | ID | Probes for |
|---|---|---|
| Instruction override | AR-001 | ignore previous, new system prompt hijacks |
| Role jailbreak | AR-002 | DAN / hypothetical / fictional-roleplay bypasses |
| Hidden payload | AR-003 | base64 / leetspeak / unicode-lookalike smuggling |
| Authority spoof | AR-004 | I'm the developer / admin / platform staff |
| Reflective injection | AR-005 | output-as-instruction loops |
Every skill gets a 0–100 score, an A–F grade, and a risk class. L01 and L06 are deterministic and free; L02 and L03 require your own LLM key (BYOK).
These four layers implement a vendor-neutral standard — the Skill Audit Dimensions checklist (static, semantic, adversarial/behavioral, supply-chain). The dimensions are the standard; TAR Engine is one open-source reference implementation. That checklist also says the audit *tooling* must meet its own supply-chain bar — which is why TAR Engine ships as a pinned, hash-verifiable PyPI release with a zero-install hosted and CI path, not a git+https install.
The tar-engine CLI walks a directory, audits every skill it finds, and exits with a CI-friendly status code.
# audit every skill under ./skills, fail the build if any scores below 70
tar-engine scan ./skills --min-score 70
tar-engine list ./skills
tar-engine scan ./skills --json
Discovery covers five formats out of the box:
| File pattern | Format |
|---|---|
**/SKILL.md | OpenClaw, Claude Code, generic md |
**/.claude/commands/*.md | Claude Code custom commands |
**/skill.yaml / .yml | Codex |
**/manifest.json | Codex / Claude Code (key-detected) |
**/opencode.json | OpenCode |
Each audit payload bundles the primary skill file plus sibling .sh / .py / .js / .ts / .yaml / .json helper files in the same directory (200 KB cap). Catches the "SKILL.md clean but install.sh malicious" pattern.
Run it in CI — zero install. The audit runs inside *your own* CI sandbox on a pinned release; nothing is installed into your agent, and there is no arbitrary git fetch to trust:
- name: Audit AI skills
uses: qingxuantang/tar-engine@v0.3.3 # pinned release with: path: ./skills min-score: 70
Prefer a plain step? Run the pinned PyPI release directly — still no git+https:
- run: uvx --from tar-engine==0.3.3 tar-engine scan ./skills --min-score 70
Pre-commit hook:
#!/usr/bin/env bash
tar-engine scan ./skills --min-score 80 || exit 1
Exit codes: 0 clean, 1 below threshold, 2 usage/missing path.
TAR Engine ships an MCP server as a Python package, runnable with uvx — no Docker. By default it talks to the hosted backend at [tarai.dev](https://tarai.dev/) (free, rate-limited).
https://tarai.dev. We don't write skill text to disk or log it, but it does leave your machine. If you're auditing proprietary or sensitive skills, self-host and set TAR_ENGINE_URL=http://localhost:8765.OPENAI_API_KEY. Semantic + adversarial audit layers require an explicit opt-in via TAR_ENGINE_BYOK_OPENAI_KEY in the MCP server config — see BYOK below.uv (one-time, ~5 seconds)The package is run via uvx, which comes with uv. Install once:
# macOS / Linux
curl -fsSL https://astral.sh/uv/install.sh | sh
irm https://astral.sh/uv/install.ps1 | iex
pipx install uv
pip install --user uv
Verify with uvx --version.
One-click: grab setup-mcp.sh and run it — it checks for uv, prompts for an optional BYOK key (hidden input, never written to disk by the script), and registers the server with your agent:
curl -fsSL https://raw.githubusercontent.com/qingxuantang/tar-engine/master/setup-mcp.sh -o setup-mcp.sh
chmod +x setup-mcp.sh ./setup-mcp.sh # Claude Code (default); add --client cursor|codex
Or configure it manually. Two install forms are supported:
uvx --from tar-engine==0.3.3 tar-engine-mcp. Every release ships to PyPI with a published hash you can lock in your lockfile — this is the canonical, reproducible install and the form the MCP registry / Anthropic MCPB clients use. No arbitrary `git+https`; pin the version so you always know exactly what you're running.Claude Code
claude mcp add tar-engine -- uvx --from tar-engine==0.3.3 tar-engine-mcp
Verify: /mcp list should show tar-engine Connected. Restart Claude Code so this session picks up the new tool surface, then ask:
Audit this SKILL.md: [paste a skill]
Cursor
Edit ~/.cursor/mcp.json (or project-level .cursor/mcp.json):
{
"mcpServers": { "tar-engine": { "command": "uvx", "args": ["--from", "tar-engine==0.3.3", "tar-engine-mcp"] } } }
Reload MCP servers in Cursor (or restart the app), then call audit_skill_text from inside Cursor.
Codex CLI
Add to ~/.codex/config.toml:
[mcp_servers.tar-engine]
command = "uvx" args = ["--from", "tar-engine==0.3.3", "tar-engine-mcp"]
Restart the Codex CLI, then call audit_skill_text.
Any other MCP-compatible agent
Most agents accept an MCP server spec with command + args (JSON or TOML):
uvx["--from", "tar-engine==0.3.3", "tar-engine-mcp"] — pinned to a published PyPI release for a reproducible, hash-verifiable installenv (optional):
TAR_ENGINE_URL=http://localhost:8765 to self-hostTAR_ENGINE_BYOK_OPENAI_KEY=sk-... to enable semantic + adversarial layersReload the agent and call audit_skill_text to verify.
By default only the static rule layer runs against your skill — free, deterministic, no LLM cost. To enable the semantic LLM review and the adversarial prompt-fuzz pass, supply your own LLM key explicitly:
"tar-engine": {
"command": "uvx", "args": ["--from", "tar-engine==0.3.3", "tar-engine-mcp"], "env": { "TAR_ENGINE_BYOK_OPENAI_KEY": "sk-..." } }
The key layer is OpenAI-compatible, so you can point it at any compatible endpoint (TAR_ENGINE_BYOK_OPENAI_BASE_URL / TAR_ENGINE_BYOK_OPENAI_MODEL). We deliberate
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요