Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
AtlaSent for AI agents: with an API key, actions wait for approval with signed proof. No key: demo.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ATLASENT_API_KEY, ATLASENT_BASE_URL, ATLASENT_MODEค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"atlasent": {
"command": "npx",
"args": [
"-y",
"@atlasent/mcp-server"
],
"env": {
"ATLASENT_API_KEY": "ใส่ค่าของคุณ",
"ATLASENT_BASE_URL": "ใส่ค่าของคุณ",
"ATLASENT_MODE": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add atlasent --env ATLASENT_API_KEY='ใส่ค่าของคุณ' --env ATLASENT_BASE_URL='ใส่ค่าของคุณ' --env ATLASENT_MODE='ใส่ค่าของคุณ' -- npx -y @atlasent/mcp-serverเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"atlasent": {
"command": "npx",
"args": [
"-y",
"@atlasent/mcp-server"
],
"env": {
"ATLASENT_API_KEY": "ใส่ค่าของคุณ",
"ATLASENT_BASE_URL": "ใส่ค่าของคุณ",
"ATLASENT_MODE": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"atlasent": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@atlasent/mcp-server"
],
"env": {
"ATLASENT_API_KEY": "ใส่ค่าของคุณ",
"ATLASENT_BASE_URL": "ใส่ค่าของคุณ",
"ATLASENT_MODE": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ATLASENT_BASE_URL envATLASENT_MODE envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub AtlaSent ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: ATLASENT_API_KEY
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2.21.0) เข้า registry 11 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Detailing Manager
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.
Connect your auto detailing studio's tasks, cars, clients and revenue to Claude or ChatGPT.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
MCP server that enforces authorize-before-execute for any MCP-compatible AI agent.
It is the developer entry point to AtlaSent AI Action Protection, which Enterprise teams adopt through a design partner program.
AtlaSent is security and organizational authority infrastructure for consequential actions by people, software, and AI.
This MCP server brings it to AI agents (Claude, Cursor, Windsurf, any MCP host). Before an agent's tool call changes a real system (a production deploy, a data export, an access grant), the agent asks AtlaSent first. With an API key (remote mode):
Try it in 60 seconds with no account: npx -y @atlasent/mcp-server (local mode, a demo that protects nothing).
Free, no account: paste your MCP server's tool list into AI Permission Check to see which tools could change real systems and who should approve them. It runs in your browser.
Local blocking is free. To actually block on your own machine without an account, use MCP Gate or the Claude Code agent guard. Both are part of the free Community plan. Hosted decisions, shared policies and approvals for a team are on the AtlaSent plans.
AtlaSent performs execution-time authorization: determine whether a specific consequential Action is authorized now, issue a bounded Permit on allow, verify that Permit at the execution Gate, and only then allow the governed native effect.
A plausible request is not organizational authority.
This MCP server exposes AtlaSent authorization primitives to Model Context Protocol hosts and includes a protected deployment demo that proves the ordering end to end.
This repository ships two packages, and one of them has two modes. All three block tool calls. Only one of the three is evidence, and the difference is not a feature list — it is *who said yes*.
| Surface | Who decided | What it is |
|---|---|---|
@atlasent/mcp-server local mode | a built-in heuristic | nothing — a credential-free demo. Its terminal rule is allow, including for action types it does not recognise. Never rely on it as protection. |
@atlasent/mcp-gate + policy.json | you, in advance, in a file you can edit | operator configuration. Starts at {"default":"deny","rules":[]} and blocks everything until you write a rule. Runs with no account and no network. |
@atlasent/mcp-gate cloud mode | your organization, at execution time | an organizational permit — single-use, bound to that call, verifiable afterwards. |
A rule you can silently edit is configuration. A permit your organization issued, that was consumed once and can be produced later, is authority. Both stop the call; only the second answers *"who authorized this?"* — which is the question that arrives after an incident, not before one.
The gate says which one decided, on every decision: no_matching_rule is your local policy, cloud_permit_consumed is an organizational permit. These reason strings are deliberately not normalised into a generic "blocked." Do not collapse them.
The two packages point in opposite directions, which is why they are separate: mcp-server exposes AtlaSent *as* MCP tools an agent calls to ask for authorization; mcp-gate sits *in front of* someone else's MCP server and intercepts.
For an enforced protected path:
Action proposed
→ current organizational Authority + Policy + Context evaluated → Decision deny / hold / escalate → STOP allow → bounded Permit → Permit Verification at the execution Gate invalid / expired / replayed / mismatched / error → STOP verified → native effect may execute → execution/native-effect Evidence recorded where the integration supplies it
Evaluation is not execution. A positive Decision is not the Gate. Permit Verification happens before the protected side effect.
You don't need an AtlaSent account or API key to try this server. With no credentials set, it runs in local mode: an in-process rules engine that works offline.
One-click install (local mode, no account):
Add this to your MCP host config (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, and others; per-host file locations are below):
{
"mcpServers": { "atlasent": { "command": "npx", "args": ["-y", "@atlasent/mcp-server"], "env": { "ATLASENT_MODE": "local" } } } }
Then ask your agent to *"deploy billing-api to production"*. The built-in rules deny it because it has no approvals. Ask again with an approval and it's allowed, and the server verifies the permit before the simulated deploy runs.
Built-in local rules (src/localEngine.ts):
| Situation | Decision |
|---|---|
| Production action with no approvals | deny |
Destructive action (delete, drop, purge, ...) outside a change window | hold |
| Sign / certify / grant / revoke / suspend / resume actions | deny |
| Override / release / export / import / publish actions | hold |
| Anything that passes the rules | allow → single-use permit, 5-minute TTL |
Local permits are unsigned, so local mode is for development, CI, and trying things out. It's not a production enforcement boundary. The server refuses to fall back to local mode under NODE_ENV=production. When you're ready for signed permits, audit evidence, and your organization's own policies, switch to remote mode — get an API key.
git clone https://github.com/AtlaSent/atlasent-mcp-server.git
cd atlasent-mcp-server npm install npm run build npm run demo # blocked deploy → approved + verified deploy → replay refused, fully offline
docker build -t atlasent-mcp .
docker run -i --rm atlasent-mcp # local mode, stdio docker run -i --rm -e ATLASENT_API_KEY -e ATLASENT_BASE_URL atlasent-mcp # remote mode
packages/agent-hooks is a Claude Code plugin. Destructive and shipping commands wait for a person: DROP TABLE, terraform destroy, volume deletes, git push --force, production deploys. With nobody to ask, they are refused. Everything else runs as normal. Local, no account.
/plugin marketplace add AtlaSent/atlasent-mcp-server
/plugin install atlasent-guard@atlasent
"Someone at the keyboard said yes" is where it stops. The rest of this repository is the organizational version: an approver your organization named, and a permit you can prove afterwards.
AtlaSent does not treat every ad-hoc tool string as a new governed Action Type.
Use the Protected Action Canon for stable Action identity. Two important examples are:
production.deploy
agent.tool.invoke
For a generic AI tool invocation, use agent.tool.invoke as the public Canon-backed Action Type and carry tool-specific facts—tool name, target, environment, arguments/payload digest, resource state, and other required context—in the authorization context or binding fields supported by the selected integration path.
Use the read-only atlasent_lookup_action tool to discover Canon-backed Action Types instead of inventing a parallel taxonomy.
Keep the concepts separate:
allow | deny | hold | escalate at the platform boundary.A human Approval, favorable risk signal, policy match, deployment ticket, or workflow status does not by itself become organizational Authority.
deploy_service is intentionally small. It demonstrates a two-layer protected path:
agent requests deploy_service
→ authorize internal agent-tool compatibility gate → verify outer Permit → authorize production.deploy → verify production.deploy Permit → simulated deployment effect
The internal outer gate uses the Canon-backed agent.tool.invoke Action (CANON-000026 / ACT-0029) — the same public identifier documented throughout the AtlaSent ecosystem as the canonical generic AI-agent tool invocation. It previously used a legacy, uncatalogued identity, model.agent.execute_tool, which had no corresponding action_classes provisioning path in the runtime (no seed/migration anywhere creates a row with that slug) — so against a real, unmodified Atlasent org the outer gate could only ever return NO_ACTION_CLASS deny, regardless of the tool-specific inner gate's own decision. Migrating the outer gate onto agent.tool.invoke gives it the runtime's real "AI Agent Safeguard" provisioning path, which already exists for exactly this purpose. See AtlaSent/atlasent-mcp-server#121 for the full investigation and decision record.
If either Decision is non-allow or either Permit fails Verification, no deployment result is produced.
The protected-tool response includes the action-specific Verification result alongside the simulated native result:
{
"decision": "allow", "permit_token": "...", "verification": { "outcome": "verified", "valid": true }, "result": { "status": "deployed", "service": "billing-api" } }
The returned Permit has already been consumed by the execution-boundary Verification. Verifying it again should be treated as a replay, not as a step required after deployment.
`examples/hitl-demo.mjs
ตัดมาแค่ช่วงต้น อ่านต่อใน repo