Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Order limits, phone approvals and a kill switch in front of any broker or exchange MCP server.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"tas-guard": {
"command": "npx",
"args": [
"-y",
"tas-guard",
"run",
"--config",
"your-value"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add tas-guard -- npx -y tas-guard run --config your-valueEste necesita valores en su línea de comandos, así que copia la configuración y complétalos.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"tas-guard": {
"command": "npx",
"args": [
"-y",
"tas-guard",
"run",
"--config",
"your-value"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este necesita valores en su línea de comandos, así que copia la configuración y complétalos.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"tas-guard": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"tas-guard",
"run",
"--config",
"your-value"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub intoApex, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.5.1) llegó al registro hace 8 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, MemberVault MCP by usefulapi
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
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.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Limits for bots and AI that trade your money. Put it between the software that trades for you (Claude, ChatGPT, Cursor, your own agent or bot) and your broker, exchange or wallet. It enforces per-order and daily limits, allow lists, human approvals, a kill switch and a tamper-evident audit log, before an order or transaction ever goes through. It runs on your own machine.
What it can't protect: custodial bots and apps that keep your keys on their own servers (most Telegram trading bots), and bots that call an exchange's API directly instead of going through the guard.
AI client ──► TAS Guard ──► Alpaca / CCXT / any trading MCP server ──► your account
│ ├─ blocks: over-limit orders, off-list symbols, withdrawals, leverage changes ├─ asks you: large orders, live money, "close everything" └─ logs: every decision, hash-chained
Zero dependencies. About 4,600 lines of plain JavaScript you can read in a few sittings.
New in 0.5.1: on Base, onchain mode tags eth_sendTransaction calls with TradingAgentStack's Builder Code: attribution only, no fee, off with TAS_GUARD_BASE_BUILDER_CODE=0.
New in 0.5: [Hyperliquid mode](#hyperliquid-mode). tas-guard hl trades Hyperliquid directly, with no other MCP server: your agent gets hl_ tools, and every order goes through the same caps, allow list, approvals, kill switch and audit log. It signs with a Hyperliquid API wallet, which can trade but can't withdraw. It adds a 0.02% builder fee that funds TradingAgentStack (details and opt-out).
Also new in 0.4: [Solana mode](#solana-mode). tas-guard sol-rpc simulates every transaction your Solana agent sends and blocks drainer patterns (hidden delegations, account takeovers), runaway priority fees and anything over your caps, including per-program caps such as "pump.fun: $20 per trade, $100 a day". Try it: npx tas-guard sol-demo.
Also: [onchain (EVM) mode](#onchain-evm-mode) for agents that hold their own EVM wallet: tas-guard rpc is a local JSON-RPC endpoint your agent uses as its RPC URL.
tas-guard demo runs the guard in front of a built-in paper broker with simulated prices. Add it to your AI app as an MCP server:
{ "mcpServers": { "tas-guard-demo": { "command": "npx", "args": ["-y", "tas-guard", "demo"] } } }
(On Windows use "command": "cmd", "args": ["/c", "npx", "-y", "tas-guard", "demo"].) Then ask your agent to buy 1 SPY at $580 (allowed), 2 SPY at $580 (held for your approval), 10 SPY (blocked: over the $2,000 per-order limit) or 1 TSLA (blocked: not on the allow list). Approve held orders with npx tas-guard approve .
Generic gateways decide per *tool*: "createOrder is critical, require approval." They can't tell a $50 order from a $50,000 one, so you end up approving everything or nothing.
TAS Guard reads the order itself. It knows that Alpaca's place_option_order has a 100x contract multiplier, that ccxt's cost is a quote-currency value while amount is base units, and that ccxt answers the first live order with a preview. That's what makes "allow small orders, ask for big ones, never exceed $2,000 a day" possible.
| Broker connector | What it does on its own | With TAS Guard |
|---|---|---|
| Alpaca MCP (TAS safety score 68) | AI can place orders directly; toolsets can limit it | Per-order and daily caps, symbol allowlist, approval above a threshold |
| CCXT MCP | Has its own caps and confirm step | One policy and one audit log across every exchange you use |
| Any other trading MCP | Varies | Heuristic profile; anything unrecognized is blocked |
Safety scores and order-gating facts: tradingagentstack.com.
~/tas-guard/alpaca.json (or run npx tas-guard init alpaca-mcp-server):{
"name": "alpaca", "profile": "alpaca-mcp-server", "upstream": { "command": "uvx", "args": ["alpaca-mcp-server"], "env": { "ALPACA_API_KEY": "${ALPACA_API_KEY}", "ALPACA_SECRET_KEY": "${ALPACA_SECRET_KEY}", "ALPACA_PAPER_TRADE": "true" } }, "policy": { "max_order_value": 500, "max_daily_value": 2000, "approve_over": 250, "symbols_allow": ["SPY", "QQQ", "AAPL", "MSFT"] } }
${VAR} is read from the environment, so keys don't have to live in the file.
claude_desktop_config.json):{
"mcpServers": { "alpaca": { "command": "npx", "args": ["-y", "tas-guard", "run", "--config", "/Users/you/tas-guard/alpaca.json"], "env": { "ALPACA_API_KEY": "...", "ALPACA_SECRET_KEY": "..." } } } }
For Claude Code: claude mcp add alpaca -- npx -y tas-guard run --config ~/tas-guard/alpaca.json
tas_guard_status to see the limits it's working under.No config file? npx tas-guard run --profile alpaca-mcp-server -- uvx alpaca-mcp-server uses the default policy.
Every tool is put in a class, from a verified connector profile or, for servers without one, from name heuristics and MCP annotations.
| Class | Examples | Default |
|---|---|---|
read | quotes, positions, balances | allow |
benign_write | watchlists | allow |
cancel, close | cancel one order, close one position | allow (also during kill switch) |
order | place an order | check limits |
modify, cancel_all, close_all, other_write | replace order, cancel everything (stop-losses too), exercise options | ask a human |
leverage, funds_out, account, raw_write, unknown | set leverage, withdraw, transfer, account settings, "call any endpoint", anything unrecognized | block (and hide from the agent) |
For order calls, in this order:
symbols_block, or not on symbols_allow (if set) → block. Globs work: "BTC/*".sides_allow (if set) → block.max_orders_per_minute or max_orders_per_day → block.max_order_value, or today's total would pass max_daily_value → block. These are hard limits; approval can't override them.approve_over, value unknown (market order by quantity, multi-leg), or live money with live_requires_approval → ask a human.Only orders the broker actually accepted count toward daily totals. Rejected orders and ccxt previews don't. Orders execute one at a time and limits are re-checked just before sending, so parallel calls can't slip past the daily cap.
{
"max_order_value": 500, // hard, per order, in the profile's quote currency "max_daily_value": 2000, // hard, sum of executed orders today (local time) "max_orders_per_day": 20, "max_orders_per_minute": 3, "approve_over": 250, // soft: above this, a human approves "symbols_allow": [], // empty = any symbol "symbols_block": [], "sides_allow": [], // e.g. ["buy"] for no selling "unknown_value": "approve", // allow | approve | block when the value can't be computed "live_requires_approval": true, // every live-money order needs a human "classes": { "close_all": "allow", "unknown": "approve" }, // override any class "hide_blocked_tools": true, "approval_ttl_minutes": 15 }
When an action needs approval, the guard asks you, never the agent.
npx tas-guard approve (or deny ), and the agent repeats the call. Each approval works once, for that exact call, within 15 minutes.Tested with Claude Desktop (Windows, October 2026) against an Alpaca paper account: Claude Desktop doesn't show the in-app prompt, so approvals there go through npx tas-guard approve . Claude relays the request id and waits for you.
npx tas-guard pending
npx tas-guard approve 3f9a1c
Get held actions on your phone with Approve and Deny buttons, alerts when an order is blocked, and a kill switch you can hit from anywhere. It uses your own Telegram bot, so nothing goes through our servers.
npx tas-guard telegram-setup --config ~/tas-guard/alpaca.json
It walks you through creating a bot with @BotFather, waits for you to press Start in your bot, then saves the bot token and your chat id into the guard config. Restart your AI app afterwards.
What you get:
wait_seconds) for your tap and then goes through in the same call. If you're slower, the agent is told to retry after you approve.notify_blocked, on by default) and, optionally, when an order is sent to the broker (notify_executed)./status (limits and today's usage), /pending (re-sends anything waiting), /kill, /resume."cli": false so tas-guard approve refuses requests from this guard. That closes the gap where an agent with shell access could run the approve command itself."approvals": {
"cli": false, "telegram": { "bot_token": "${TAS_TELEGRAM_BOT_TOKEN}", "chat_id": "123456789", "wait_seconds": 45, "notify_blocked": true, "notify_executed": false } }
Several guards can share one bot. Whichever one is listening handles the tap, and the others pick up the decision from the shared state.
npx tas-guard kill "market looks wrong" # every guard blocks new orders immediately
npx tas-guard resume
Reads, cancels and closing positions keep working while it's on, so you (or the agent) can still flatten.
Every decision is appended to ~/.tas-guard/audit.jsonl: tool, class, arguments (secrets redacted), decision, reason, order value, and whether it executed. Each line includes the hash of the previous line.
npx tas-guard log --tail 20
npx tas-guard verify-log # detects edited or deleted lines
A profile says what each tool of a server can do with money and where its order fields live. The schema is schema/connector-profile.v1.json. Built-in profiles are verified against each server's source code or official docs, with the commit or page recorded:
alpaca-mcp-server: alpacahq/alpaca-mcp-server @ 2a973a0ccxt-mcp-server: ccxt/ccxt mcp/ @ 310bf4brobinhood-trading-mcp: Robinhood's hosted Trading MCP, from the 94-tool table in Robinhood's "Trading with your agent" article (2026-10-21). The server is closed source and Robinhood publishes no argument names, so order values can't be read: every order needs approval, and a symbols_allow list blocks orders.Using a server without a profile? "profile": "auto" classifies tools by name and MCP annotations, and blocks anything it doesn't recognize. Profiles for more brokers are welcome as PRs.
For agents that sign and send their own transactions (AgentKit, viem, ethers, web3.py, your own bot), tas-guard rpc runs a local JSON-RPC endpoint. Point the agent's RPC URL at it instead of at your provider:
AI agent ──► http://1Solo se muestra el principio; lee el resto en el repo