Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Enterprise MCP guard: roles, allowlist policy, human confirmation, JSONL audit log, example tools.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
MCP_AGENT_TEMPLATE_ROLE, MCP_AGENT_TEMPLATE_CONFIRM, MCP_AGENT_TEMPLATE_AUDIT_DIR你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"agent-template": {
"command": "uvx",
"args": [
"mcp-agent-template",
"serve"
],
"env": {
"MCP_AGENT_TEMPLATE_ROLE": "your-value",
"MCP_AGENT_TEMPLATE_CONFIRM": "your-value",
"MCP_AGENT_TEMPLATE_AUDIT_DIR": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add agent-template --env MCP_AGENT_TEMPLATE_ROLE=your-value --env MCP_AGENT_TEMPLATE_CONFIRM=your-value --env MCP_AGENT_TEMPLATE_AUDIT_DIR=your-value -- uvx mcp-agent-template serve运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"agent-template": {
"command": "uvx",
"args": [
"mcp-agent-template",
"serve"
],
"env": {
"MCP_AGENT_TEMPLATE_ROLE": "your-value",
"MCP_AGENT_TEMPLATE_CONFIRM": "your-value",
"MCP_AGENT_TEMPLATE_AUDIT_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"agent-template": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-agent-template",
"serve"
],
"env": {
"MCP_AGENT_TEMPLATE_ROLE": "your-value",
"MCP_AGENT_TEMPLATE_CONFIRM": "your-value",
"MCP_AGENT_TEMPLATE_AUDIT_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
MCP_AGENT_TEMPLATE_ROLE envMCP_AGENT_TEMPLATE_CONFIRM envMCP_AGENT_TEMPLATE_AUDIT_DIR env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 amineutron 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.2.0)于前天进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Microsoft Exchange Online MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ 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.
Exchange Online admin for MSPs: forwarding audits, EWS posture and offboarding, no PowerShell
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
English summary. A template for MCP servers that an IT department can let an LLM agent use: every tool call goes through an allowlist policy (policy.yaml), a caller role (lecteur / operateur / admin, derived from the MCP tool annotations), per-parameter allowed values, a human confirmation for destructive actions (MCP elicitation, both the 2025-11-25 and 2026-07-28 protocols), and a JSONL audit log (mode 0600, one correlation id per call). The mcp-agent-template package ships two runnable examples: an enterprise one (tickets, a read-only LDAP-like directory, a read-only SQL inventory, all on fictitious local data) and a generic ops one (systemd and docker status, restart with confirmation). Local-first, self-hosted, on-prem; no cloud, no telemetry. Dual licensed: AGPL-3.0, or a commercial licence for companies of any size.
Donner des outils a un agent IA dans une entreprise pose toujours les memes questions : qui a le droit de faire quoi, qui a valide une action dangereuse, et ou est la trace. Ce depot est un modele (bouton « Use this template ») qui y repond une fois pour toutes, autour du SDK MCP officiel.
Chaque appel d'outil passe, dans l'ordre :
policy.yaml) : un outil absent est refuse.| Type d'outil | Annotation MCP publiee | Role minimal |
|---|---|---|
| lecture | readOnlyHint | lecteur |
| ecriture non destructrice | — | operateur |
| destructif | destructiveHint | admin + confirmation humaine |
password, token, api_key...) sont masques.Un refus renvoie une erreur lisible a l'agent, jamais un faux succes.
uvx mcp-agent-template --help
uvx mcp-agent-template serve --example enterprise # tickets, annuaire, inventaire (donnees fictives) uvx mcp-agent-template serve --example ops # systemd et docker uvx mcp-agent-template check-policy policy.yaml # valide une politique et resume ses regles
Dans un client MCP (Claude Code, Claude Desktop...) :
{
"mcpServers": { "entreprise": { "command": "uvx", "args": ["mcp-agent-template", "serve", "--example", "enterprise"], "env": { "MCP_AGENT_TEMPLATE_ROLE": "operateur" } } } }
| Variable | Role | Defaut |
|---|---|---|
MCP_AGENT_TEMPLATE_ROLE | role de l'appelant : lecteur, operateur, admin | lecteur |
MCP_AGENT_TEMPLATE_CONFIRM | elicit : l'humain confirme via le client ; client : le client confirme deja lui-meme (il lit destructiveHint) | elicit |
MCP_AGENT_TEMPLATE_AUDIT_DIR | dossier du journal d'audit | ~/.local/state/mcp-agent-template |
MCP_AGENT_TEMPLATE_DATA_DIR | bases SQLite des exemples | ~/.local/state/mcp-agent-template-demo |
Le role vient pour l'instant de la configuration du client : chaque poste ou chaque profil recoit le sien. La source du role est une petite interface (RoleSource) : une authentification par jeton pourra s'y brancher sans toucher aux outils.
Entreprise (--example enterprise), sur des donnees FICTIVES d'une societe « Exemple SA » creees en local, sans aucun service externe :
list_tickets, get_ticket, create_ticket (la priorite « critique » est reservee aux humains par la politique), close_ticket, delete_ticket (admin + confirmation) ;search_directory, get_user, group_members ;list_tables, query_inventory. Deux verrous : la base est ouverte en mode=ro, et un autorisateur SQLite refuse toute ecriture, PRAGMA ou ATTACH, meme cachee dans un WITH.Ops (--example ops) : service_status et list_containers en lecture, restart_service limite aux unites listees par la politique, apres confirmation.
from mcp.server.mcpserver import MCPServer
from mcp_agent_template import Guard, Policy, ToolKind
server = MCPServer("mon-agent") guard = Guard(server, Policy.load("policy.yaml"))
@guard.tool(ToolKind.READ, title="Lister les commandes") def list_orders(status: str = "ouverte") -> list[dict]: """Commandes du jour.""" ...
@guard.tool(ToolKind.DESTRUCTIVE, title="Annuler une commande") def cancel_order(order_id: int) -> dict: """Annule une commande (admin + confirmation humaine).""" ...
server.run()
# policy.yaml
version: 1 default: deny tools: list_orders: {} cancel_order: allowed_values: order_id: ["1042", "1043"]
Pour brancher un vrai outil de tickets, un vrai annuaire LDAP ou une vraie base, remplacer les classes de src/mcp_agent_template/examples/stores.py : les outils MCP et la garde ne changent pas.
uv sync
uv run pytest # garde, politique, audit, exemples, protocoles 2025-11-25 et 2026-07-28, stdio uv run ruff check src tests
Un devcontainer est fourni (.devcontainer/).
Double licence :
Les contributions sont acceptees sous l'accord CLA.md.
Meme approche que fedora-agents (journal d'audit avec identifiant de correlation, annotations MCP) et Lyra, l'assistant vocal French-first qui fait confirmer l'humain avant chaque action sensible.