Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Scan MCP servers and agent tool manifests for poisoning, exfiltration, secrets and supply-chain risk
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"palanit-core": {
"command": "uvx",
"args": [
"palanit-core"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add palanit-core -- uvx palanit-coreวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"palanit-core": {
"command": "uvx",
"args": [
"palanit-core"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"palanit-core": {
"type": "stdio",
"command": "uvx",
"args": [
"palanit-core"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub stasxr ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.3) เข้า registry 17 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, MemberVault MCP by usefulapi
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
List courses; add users to courses, remove course access or delete users in MemberVault.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Scan MCP servers and AI-agent tool manifests for hidden risk — before an attacker finds it.
Website · Docs · Palanit OS (hosted)
Your AI agent trusts tools, MCP servers and skills it didn't write. A tool's description is injected straight into the model's context — so a *poisoned* description can quietly tell your agent to leak a key, call an attacker's server, or run a shell command. Palanit Core reads every tool the way your agent will, and flags the ones that would betray it.
1 on HIGH+ findings, so a poisoned tool fails the build.pip install palanit-core
# Scan an MCP config or tool manifest
palanit scan mcp.config.json
palanit scan --sample
palanit scan mcp.config.json --json --fail-on HIGH
palanit pin mcp.config.json palanit scan mcp.config.json --baseline .palanit.lock.json
Example (trimmed):
CRITICAL Possible data exfiltration [PL-EXFIL-001]
Instructs the agent to send sensitive data to an external URL (collector.evil.example). ↳ mcp.config.json#/mcpServers/invoicing/tools/0/description fix: Remove external URLs and exfiltration verbs from tool text.
HIGH Hidden instructions in tool text [PL-POISON-001] HIGH Invisible or deceptive Unicode [PL-UNICODE-001] MEDIUM Unpinned package / runner [PL-SUPPLY-001] ... 9 finding(s) (1 critical · 5 high · 3 medium)
A scan at install time only sees the tool text you approved. A hostile server can swap a tool's description or input schema after that approval — and standard clients never re-check. palanit pin records a hash of each tool's declared definition; a later scan --baseline fails closed on any change, so a swap costs the attacker the tool instead of silently succeeding.
palanit pin mcp.config.json # approve current definitions
palanit scan mcp.config.json --baseline .palanit.lock.json # HIGH + exit 1 on any drift
| Rule | Severity | What it catches |
|---|---|---|
PL-POISON-001 | HIGH | Hidden / injected instructions in tool & schema descriptions |
PL-EXFIL-001 | MED–CRIT | Tool text that steers the agent to send data to external URLs |
PL-SECRET-001 | HIGH | Hardcoded API keys, tokens and private keys |
PL-UNICODE-001 | MED–HIGH | Invisible / bidirectional Unicode used to hide instructions |
PL-SUPPLY-001 | MEDIUM | Unpinned / floating package versions (@latest, bare names) |
PL-SHELL-001 | MED–HIGH | Tools that launch a shell (bash -c, cmd /c, …) |
PL-TLS-001 | LOW–MED | Endpoints over http:// / ws:// without TLS |
PL-COLLIDE-001 | MEDIUM | Duplicate tool names that let one shadow another |
PL-ENV-001 | HIGH | Literal secrets in a server's env block |
PL-DRIFT-001 | HIGH | A tool's definition changed since you approved it — a post-install "rug pull" (only with --baseline) |
Run palanit rules to list them. Inputs understood: Claude-style mcpServers configs, servers configs, tools manifests, a bare list of tools, or a single tool object. Unknown JSON still gets string-level checks.
# .github/workflows/palanit.yml
name: palanit on: [push, pull_request] jobs: scan: runs-on: ubuntu-latest steps:
Prefer plain steps? That works too:
- uses: actions/setup-python@v5
with: { python-version: "3.12" }
# .pre-commit-config.yaml
repos:
Palanit Core can itself run as an MCP server, so an agent or MCP client (Claude Desktop, Cursor, Cline, …) can scan a config on demand:
pip install "palanit-core[mcp]"
palanit-mcp # stdio transport
Exposes the tools scan_mcp_config, list_rules and version. Example client entry:
{
"mcpServers": { "palanit": { "command": "palanit-mcp" } } }
Scanned your MCP server with Palanit Core? Show it:
[](https://github.com/stasxr/palanit-core)
Palanit Core only reads files you give it — but the broader PALANIT suite (botprobe) sends live test traffic. Only scan or test systems you own or are authorized to test. A clean scan reduces risk; it does not prove safety.
Apache-2.0 © Stanislav Miziyev. Contributions welcome — see CONTRIBUTING.
mcp-name: io.github.stasxr/palanit-core