Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
AtlaSent for AI agents: with an API key, actions wait for approval with signed proof. No key: demo.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
ATLASENT_API_KEY, ATLASENT_BASE_URL, ATLASENT_MODEValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"atlasent": {
"command": "npx",
"args": [
"-y",
"@atlasent/mcp-server"
],
"env": {
"ATLASENT_API_KEY": "your-value",
"ATLASENT_BASE_URL": "your-value",
"ATLASENT_MODE": "your-value"
}
}
}
}Run this in your terminal
claude mcp add atlasent --env ATLASENT_API_KEY=your-value --env ATLASENT_BASE_URL=your-value --env ATLASENT_MODE=your-value -- npx -y @atlasent/mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"atlasent": {
"command": "npx",
"args": [
"-y",
"@atlasent/mcp-server"
],
"env": {
"ATLASENT_API_KEY": "your-value",
"ATLASENT_BASE_URL": "your-value",
"ATLASENT_MODE": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"atlasent": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@atlasent/mcp-server"
],
"env": {
"ATLASENT_API_KEY": "your-value",
"ATLASENT_BASE_URL": "your-value",
"ATLASENT_MODE": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
ATLASENT_BASE_URL envATLASENT_MODE envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account AtlaSent, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: ATLASENT_API_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (2.21.0) reached the registry 11 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Kanal Varna — drains, leaks & plumbing (Varna, BG)
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the 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.
Drain unblocking, leak detection & plumbing in Varna, Bulgaria: services, prices, areas, contact
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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
Only the beginning is shown; read the rest in the repo