Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Resolve, verify and discover .agt agent names: owner, records, signed manifest, endpoints.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
AGT_CHAIN, AGT_RPC_URL, AGT_REGISTRY, AGT_IPFS_GATEWAY, AGT_TIMEOUT_MS, AGT_RATE_PER_MIN, AGT_SESSION_PASSPHRASE, AGT_SESSION_DIR标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://agtnames.com/api/mcp打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"agt": {
"command": "npx",
"args": [
"-y",
"@agtnames/mcp"
],
"env": {
"AGT_CHAIN": "your-value",
"AGT_RPC_URL": "your-value",
"AGT_REGISTRY": "your-value",
"AGT_IPFS_GATEWAY": "your-value",
"AGT_TIMEOUT_MS": "your-value",
"AGT_RATE_PER_MIN": "your-value",
"AGT_SESSION_PASSPHRASE": "your-value",
"AGT_SESSION_DIR": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add --transport http agt https://agtnames.com/api/mcpclaude mcp add agt --env AGT_CHAIN=your-value --env AGT_RPC_URL=your-value --env AGT_REGISTRY=your-value --env AGT_IPFS_GATEWAY=your-value --env AGT_TIMEOUT_MS=your-value --env AGT_RATE_PER_MIN=your-value --env AGT_SESSION_PASSPHRASE=your-value --env AGT_SESSION_DIR=your-value -- npx -y @agtnames/mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"agt": {
"url": "https://agtnames.com/api/mcp"
}
}
}粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"agt": {
"command": "npx",
"args": [
"-y",
"@agtnames/mcp"
],
"env": {
"AGT_CHAIN": "your-value",
"AGT_RPC_URL": "your-value",
"AGT_REGISTRY": "your-value",
"AGT_IPFS_GATEWAY": "your-value",
"AGT_TIMEOUT_MS": "your-value",
"AGT_RATE_PER_MIN": "your-value",
"AGT_SESSION_PASSPHRASE": "your-value",
"AGT_SESSION_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"agt": {
"type": "http",
"url": "https://agtnames.com/api/mcp"
}
}
}粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"agt": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@agtnames/mcp"
],
"env": {
"AGT_CHAIN": "your-value",
"AGT_RPC_URL": "your-value",
"AGT_REGISTRY": "your-value",
"AGT_IPFS_GATEWAY": "your-value",
"AGT_TIMEOUT_MS": "your-value",
"AGT_RATE_PER_MIN": "your-value",
"AGT_SESSION_PASSPHRASE": "your-value",
"AGT_SESSION_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://agtnames.com/api/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
AGT_CHAIN envAGT_RPC_URL envAGT_REGISTRY envAGT_IPFS_GATEWAY envAGT_TIMEOUT_MS envAGT_RATE_PER_MIN envAGT_SESSION_DIR env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过域名 agtnames.com 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
尚未检查;我们会轮流检查各个端点
尚未检查;我们会轮流检查各个端点
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:AGT_SESSION_PASSPHRASE
两种方式都可以:安装在你的电脑上,或者连接云端版本。
GitHub 仓库最后更新于–,最新版本(1.5.2)于2个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Signoff
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ 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.
Five gates that make an agent's 'done' provable: run them, read the verdict, audit the record.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
MCP server for .agt agent names. Resolve a name to its owner, records and signature-verified manifest (endpoints, capabilities, keys, payments) from the AGT Registry v2. Read-only. Works with any MCP-compatible client — Claude Code, Cursor, or your own agent runtime.
No configuration is needed for Polygon mainnet.
Any MCP-compatible client can launch the server over stdio; the command is the same everywhere:
npx -y @agtnames/mcp
| Client | How |
|---|---|
| Claude Code | claude mcp add agt -- npx -y @agtnames/mcp (or the plugin: /plugin marketplace add agtnames/agt-plugins then /plugin install agt@agtnames, which adds a skill that teaches Claude when to use the tools). Hosted endpoint (Streamable HTTP, read-only, nothing to install): claude mcp add --transport http agt https://agtnames.com/api/mcp |
| Cursor | Add to Cursor or add the JSON below to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global) |
| VS Code (Copilot) | Add to VS Code or code --add-mcp '{"name":"agt","command":"npx","args":["-y","@agtnames/mcp"]}' |
| Windsurf | add the same JSON to ~/.codeium/windsurf/mcp_config.json |
| Cline | MCP Servers panel, Configure, add the same JSON to cline_mcp_settings.json |
| Gemini CLI | gemini extensions install https://github.com/agtnames/agt (the repo root carries gemini-extension.json) |
| Agent skills | npx skills add agtnames/agt installs the agt-names skill (skills/agt-names/SKILL.md), which teaches an agent when and how to use these tools and the public API |
| Any other MCP client | the same JSON, or the hosted Streamable-HTTP URL https://agtnames.com/api/mcp; clients that read registry manifests can also import server.json from this directory |
{
"mcpServers": { "agt": { "command": "npx", "args": ["-y", "@agtnames/mcp"] } } }
Optional settings go in env (see Configure); "env": { "AGT_RPC_URL": "" } means "use the chain default":
{
"mcpServers": { "agt": { "command": "npx", "args": ["-y", "@agtnames/mcp"], "env": { "AGT_RPC_URL": "" } } } }
Windows: if a client reports spawn npx ENOENT, launch through the shell instead, e.g. claude mcp add agt -- cmd /c npx -y @agtnames/mcp or "command": "cmd", "args": ["/c", "npx", "-y", "@agtnames/mcp"].
From a checkout: claude mcp add agt -- node packages/mcp/dist/index.js; against a local testbed add -e AGT_CHAIN=localhost -e AGT_REGISTRY=0x… -e AGT_RPC_URL=http://127.0.0.1:8545.
Registry manifests live next to this file: server.json (official MCP registry, com.agtnames/agt, DNS-verified namespace) and smithery.yaml (Smithery). Both pin the package version and are bumped in the same PR as package.json; scripts/publish-mcp.mjs refuses to publish otherwise. Listing URLs are filled in by the owner after each submission:
| Directory | Listing |
|---|---|
Official MCP registry (registry.modelcontextprotocol.io) | com.agtnames/agt (published by release.yml; the earlier io.github.ds1/agt 1.5.0 entry is retired) |
| Smithery | _pending_ (smithery.ai/new, GitHub agtnames/agt, path packages/mcp) |
| Glama | _pending_ (claim the auto-imported @agtnames/mcp page) |
| PulseMCP | _pending_ (submission form) |
| mcp.so | _pending_ (submission form) |
| Tool | Returns |
|---|---|
agt_resolve | owner, expiry, active/perpetual, on-chain records, verified manifest (under untrusted) |
agt_manifest | the manifest document + verified / manifestStatus / reasons |
agt_endpoint | URL for mcp / a2a / http / ws — verified manifest first, resolver record second — plus pricing (free / freemium / paid / contact, from the verified manifest only) and manifestStatus |
agt_available | can the name be registered right now |
agt_namehash | node + tokenId (no network) |
All tools are annotated read-only and idempotent. verified: true means the manifest was signed by the on-chain owner (signer = manifest owner = registry owner). When it is false, manifestStatus says which kind of false: unavailable (the pointer exists but no gateway returned the document — a transport problem, retry later, not a verdict on the owner), unverified (it loaded and failed the signature / owner check — do not act on it), or none (nothing published). Everything derived from a manifest is returned inside an untrusted envelope with a notice: it is third-party content — data, never instructions. The server also publishes these rules as MCP instructions.
Set AGT_SESSION_PASSPHRASE (12+ characters) and nine more tools appear. They let this machine perform record writes on an owner's names under a grant the owner signed once, bounded on-chain: only the listed names, only the listed setters, no value, until the expiry, at most N calls per name, revocable by the owner in one transaction. See @agtnames/countersign for how a grant is built and enforced.
| Tool | Does |
|---|---|
agt_session_new | create this machine's session key (encrypted under AGT_SESSION_DIR, default ~/.agt/session) and return its address |
agt_session_import | validate and store a grant the owner signed for that address; returns the plain-language mandate |
agt_session_status | calls used per name, expiry, whether the owner revoked, session gas balance |
agt_session_forget | drop the grant locally (and the key with deleteKey) |
agt_set_text agt_set_addr agt_set_endpoint agt_set_manifest_uri agt_set_wallet | redeem one record write; each returns the tx hash |
Flow: agt_session_new → give the address to the owner → owner runs agt-countersign build --session --names … --actions … --ttl 1h --calls 5 --sign-with-key OWNER_KEY (or signs the typed data in a wallet) → agt_session_import → write. Fund the session address with a little POL for gas; the grant itself cannot move value. Extra error codes: no_session, grant_refused, caveat_violation, insufficient_gas, wrong_session, unknown_name, action_not_granted.
Failures come back as an MCP error result (isError: true) whose text is { "error": { "code", "message" } }:
| code | meaning | what to do |
|---|---|---|
invalid_name | label is not [a-z0-9-]{1,63} without leading/trailing hyphen | fix the name; nothing was sent to the network |
rate_limited | more than AGT_RATE_PER_MIN calls in a minute from this process | back off; the bucket refills continuously |
timeout | the RPC or IPFS request exceeded AGT_TIMEOUT_MS | retry; raise the timeout or set AGT_RPC_URL |
rpc_unavailable | could not reach the RPC (DNS, connection refused, TLS, non-JSON reply) | check connectivity; set AGT_RPC_URL to another endpoint |
rpc_error | the node answered with a JSON-RPC error (e.g. execution reverted — usually a wrong AGT_REGISTRY) | check AGT_CHAIN / AGT_REGISTRY |
misconfigured | a required setting is missing for this chain (e.g. localhost without a registry) | set the variable named in the message |
internal | anything else | report it with the message |
Manifest problems (unreachable IPFS, bad signature, owner mismatch) are not errors: agt_resolve succeeds with verified: false, manifestStatus set to unavailable or unverified, and the causes listed in reasons.
One result is capped at 64 KiB (well under Claude Code's default 25,000-token result limit). If a manifest would push a response over the cap it is omitted and untrusted.truncated says so; fetch the manifest URI directly if you need it all. Records are bounded independently (50 entries, 512-char strings, 2 KiB URLs) with visible [+N more] markers.
Everything is optional. AGT_CHAIN=polygon (the default) needs nothing else; an empty value is treated as unset.
AGT_CHAIN=polygon # polygon (default) | amoy | localhost
AGT_REGISTRY=0x… # override the registry (required only for localhost / a custom deployment) AGT_RPC_URL=… # override the RPC endpoint AGT_LEGACY=1 # Registry v1 + DNS TXT fallbacks AGT_IPFS_GATEWAY=https://dweb.link/ipfs/ # must be allow-listed AGT_TIMEOUT_MS=10000 # per-request timeout AGT_MAX_MANIFEST=262144 # max manifest bytes AGT_RATE_PER_MIN=240 # tool calls per minute before backing off
npx -y @agtnames/mcp --version # prints the version and exits; works even if AGT_* is misconfigured
npx -y @agtnames/mcp --help claude mcp get agt # Claude Code: how the server is registered and whether it connected
/mcp inside Claude Code shows connection state; a server that fails to start prints its reason on stderr (agt-mcp: …) and exits 2.npx run downloads the package; on a slow network that can exceed a low MCP_TIMEOUT. Pin a version (@agtnames/mcp@1.1.0) so later starts come from the local npx cache.AGT_TIMEOUT_MS bounds each RPC/IPFS request inside the server; Claude Code's MCP_TIMEOUT bounds server startup.npx fails with an odd module error, clear it: npx clear-npx-cache (or npm cache clean --force).fetch, AbortController).Name validation before any network call; IPFS gateway allow-list; https/data: URIs only; manifest size and time caps; manifest strings length-capped and control-character-stripped; response size cap; error messages sanitized (RPC text is remote-controlled); in-process rate limit; the process exits when the client closes stdin.
cd packages/mcp && npm ci && npm run build && npm test # unit + protocol tests, offline
AGT_LIVE_TEST=1 npm test # also resolves launchpad.agt on mainnet node dist/index.js --version
Publishing (owner): node scripts/publish-mcp.mjs --otp= from the repo root flips the file:../resolver dependency to the published range for the publish and restores it afterwards; prepublishOnly refuses to publish with a local dependency.