内容
# ASO-MCP - 免费的 Agent Readiness 扫描器
**你的 ASO 分数是多少?**
SEO 使你对搜索引擎可见。**ASO(Agent Signal Optimization)** 使你能够被 AI 代理发现、信任和支付,这些代理正在成为网络的下一个访问者。
`aso-mcp` 是免费、开源的 **ASO 扫描器** - 一个 [MCP](https://modelcontextprotocol.io) 服务器,扫描任何网站并生成 **Agent Readiness Report**,该报告根据开放的 [ASO 框架](https://agentsignaloptimization.com)进行评分。测试版 npm 包为 `@forgemeshlabs/aso-audit-mcp`。
此版本跟踪谷歌当前的代理准备指南,而不夸大其词:谷歌搜索表示,传统的 SEO 基础仍然适用于生成式 AI 搜索,`llms.txt` 被谷歌搜索本身忽略,而浏览器代理受益于干净的 DOM、截图和可访问性树信号。扫描器保留 `llms.txt` 因为非谷歌代理使用它,并添加了浏览器代理 UX 检查,以检查语义控件、链接标签、ARIA/角色备用和隐藏叠加风险。
> **测试版.** 实验性 ASO 扫描器,用于评估代理是否可以发现、信任、理解和使用网站/API/工具。ASO 评分是实验性的,随着代理标准的成熟而不断演变。
```
=== 代理就绪报告:https://example.com ===
ASO 分数:70/100
代理就绪状态:就绪
级别:ASO-4 可信 - 代理可以验证信任、声誉和运营信号。
可发现性 20/20 身份 15/20 信任 11/15
商业 5/15 声誉 4/15 内存 15/15
```
## 检查内容 - 6 个支柱上的 34 个信号
查找 **发现、信任、互操作性和商业** 中的差距 - 每次扫描都包含所有新兴代理标准:
| 支柱/类别 | 检查 |
|---|---|
| **发现** | robots.txt, sitemap.xml, Link 头,DNS-AID (`_agent.<domain>`), `/.well-known/ai` |
| **内容** | Markdown 内容协商,llms.txt, LLM-readable 文档(`/index.md`, `llms-full.txt`) |
| **机器人访问** | 显式 AI 爬虫规则(GPTBot, ClaudeBot, Google-Extended, PerplexityBot…),内容信号,Web 机器人身份验证 |
| **互操作性** | API 目录(RFC 9727),OAuth 发现(RFC 8414),OAuth 受保护资源(RFC 9728),auth.md,**MCP 服务器卡** (`/.well-known/mcp/server-card.json`),**谷歌 A2A 代理卡** (`/.well-known/agent-card.json`,验证必填字段),代理技能,WebMCP |
| **商业** | x402, MPP, UCP, ACP, 机器可读定价 |
| **身份和信任** | HTTPS 强制执行,JSON-LD/schema.org, 代理友好浏览器 UX,OpenAPI,agent.json, security.txt, 状态端点,版本控制,跨文件身份和信号一致性 |
每个检查返回 **通过 / 部分通过 / 未通过**,并附有具体证据和修复建议。结果汇总到六个 ASO 支柱中(可发现性 20,身份 20,信任 15,商业 15,声誉 15,内存 15)→ 您的 **ASO 分数** 和成熟度级别。
## 安装
需要 Node.js ≥ 18。在 npm 上发布为 [`@forgemeshlabs/aso-audit-mcp`](https://www.npmjs.com/package/@forgemeshlabs/aso-audit-mcp) - 无需克隆或构建。
```bash
npm install -g @forgemeshlabs/aso-audit-mcp
```
或者直接跳过安装并使用 `npx` 运行(推荐给 MCP 客户端):
```bash
npx -y @forgemeshlabs/aso-audit-mcp
```
### Claude 代码
```bash
claude mcp add aso -- npx -y @forgemeshlabs/aso-audit-mcp
```
### Claude 桌面版 / Cursor / Windsurf(任意 MCP 客户端)
```json
{
"mcpServers": {
"aso": {
"command": "npx",
"args": ["-y", "@forgemeshlabs/aso-audit-mcp"]
}
}
}
```
### 从源码开发
仅当您正在开发扫描器本身时需要:
```bash
git clone https://github.com/forgemeshlabs/aso-audit-mcp
cd aso-audit-mcp
npm install && npm run build
claude mcp add aso -- node /path/to/aso-audit-mcp/dist/index.js
```
## 工具
| 工具 | 功能 |
|---|---|
| `scan_site` | 完整的 ASO 扫描 → 代理就绪报告:ASO 分数、级别、支柱分解、所有 34 项检查的证据和建议 |
| `get_fix_plan` | 优先级修复计划,附带可粘贴模板(robots.txt AI 规则、llms.txt、agent.json、A2A 代理卡、MCP 服务器卡、x402 清单、pricing.json、security.txt、状态端点) |
| `check_signal` | 运行特定检查(例如 `a2a-agent-card`、`llms-txt`、`x402`) |
| `list_checks` | 所有检查的目录,附带规格链接 |
| `get_aso_framework` | ASO 评分标准:支柱、权重、级别、认证阈值 |
试试吧: *"扫描 example.com 的代理就绪状态"* · *"我的 ASO 分数是多少?"* · *"给我一个修复计划,让我的网站具备代理就绪状态。"*
### CLI 烟雾测试(从源码克隆)
```bash
npm run smoke -- https://your-site.com
```
## Glama / 注册表元数据
此存储库包含用于 Glama MCP 注册表所有权和安装元数据的 `glama.json`。
- **包:** `@forgemeshlabs/aso-audit-mcp`
- **当前版本:** `v0.1.4`
- **传输:** 本地 `stdio`
- **身份验证:** 本地 `stdio` 使用不需要身份验证。扫描器不要求 API 密钥、令牌、cookie 或第三方凭证。
- **HTTP 部署:** 此 npm 包未启用。任何此扫描器的公共 HTTP 部署必须添加身份验证、每个客户端的速率限制、请求日志记录和出口策略,然后再公开。
推荐的 Glama/MCP 安装命令:
```bash
npx -y @forgemeshlabs/aso-audit-mcp
```
连接服务器到 MCP 客户端后使用示例:
```text
扫描 https://example.com 的代理就绪状态。
给我 example.com 的 ASO 修复计划。
仅检查 example.com 的 llms-txt 信号。
列出 ASO 扫描器检查。
```
版本验证:
- Git 标签:`v0.1.4`
- npm 包:`@forgemeshlabs/aso-audit-mcp`
- MCP 服务器版本:`0.1.4`
`v0.1.4` 是谷歌代理就绪对齐版本:它添加了代理友好 UX 检查,阐明了谷歌搜索的生成式 AI 指南,并保留了 Glama 元数据。
### Glama 版本构建
Glama 可安装性需要一个 **Glama 版本**,它是使用 Glama Dockerfile 管理页面从容器化构建创建的,而不是 GitHub 版本。此存储库包含一个生产 `Dockerfile` 和 [GLAMA.md](GLAMA.md),其中包含要在 Glama 中使用的构建规范值:
构建步骤:
```text
npm ci
npm run build
npm prune --omit=dev
```
运行时命令:
```bash
node dist/index.js
```
在 Glama 的 **CMD 参数** 字段中输入:
```json
["node", "dist/index.js"]
```
不要将 CMD 参数留为空;Glama 单独验证该字段,而不仅仅是 Dockerfile `CMD`。
## ASO 框架
> SEO 为人们排名。ASO 为代理选择、调用、支付和重复使用做好服务准备。
| 级别 | 名称 | 分数 |
|---|---|---|
| ASO-0 | 不可见 | 0–9 |
| ASO-1 | 可发现 | 10–29 |
| ASO-2 | 可理解 | 30–49 |
| ASO-3 | 可调用 | 50–69 |
| ASO-4 | 可信 | 70–89 |
| ASO-5 | 自主商务就绪 | 90–100 |
此扫描器的分数是方向性的自我评估。**ASO 认证**(ASO-3+)需要验证证据 - 请参阅 [评分标准](https://agentsignaloptimization.com/docs/ASO-SCORE.md) 和 [agentsignaloptimization.com](https://agentsignaloptimization.com),了解审计、认证和完整框架。
## 安全
此扫描器会对您提供的 URL 进行外部请求,因此它被设计为能够抵御 SSRF 滥用:
- **方案允许列表** - 仅 `http`/`https`;拒绝 `file:`、`ftp:`、`gopher:`、`data:` 等。
- **私有目标阻止** - DNS 解析后,请求回环、私有(RFC 1918)、链路本地、CGNAT、保留、多播和云元数据地址 (`169.254.169.254`) 都会被拒绝。IPv6 回环/ULA/链路本地和 IPv4 映射形式也涵盖在内。如果主机名解析为 *任何* 私有地址,扫描都会被拒绝。
- **固定 IP 传输** - 每个请求都拨打经过验证的公共 IP,而 TLS 仍然验证原始主机名。这关闭了验证-连接的 DNS 重绑定窗口。
- **手动重定向验证** - 自动重定向跟踪被禁用;每个跳转都会针对相同的规则重新验证,限制在 5 个重定向内。公共 URL 重定向到内部地址无法通过。
- **未受信任的远程内容** - 解析的清单默认不包含在工具输出中(`include_artifacts: true` 可选择加入,并且它们会明确标记为不受信任);嵌入的文本摘录会被控制字符清理和长度限制。请将返回的远程内容视为数据,而不是指令。
- **有界限** - 仅 `GET`、`ASO-Scanner/1.0` UA、最大 6 并发、10 秒超时、512KB 正文限制。永不认证,永不 POST,永不爬取超出已知路径的范围。
- **测试强化** - `npm test` 涵盖不安全的 URL 拒绝、私有 IP 范围、工件清理、重定向阻止、重定向跳转上限和测试循环回路逃脱口。
**部署:** 默认情况下为 `stdio`(本地,每用户)。公共 **HTTP** 部署是一种网络出口工具,**必须** 在公开之前添加身份验证、每个客户端的速率限制、请求日志记录和出口策略。
- 声誉信号(引用、评论、成功率)无法通过爬虫自动验证;它们被报告为 `手动`,并在审计前获得 0 分 - 因此自动可验证的最大分数为 89/100。这是故意设计的诚实,而不是漏洞。
- 新兴规范(MCP 服务器卡 SEP-1649/SEP-2127、DNS-AID、Web Bot Auth、UCP/ACP/MPP)发展迅速。欢迎提交更新路径的 PR。
## 源代码对齐
此包故意将谷歌搜索指南与更广泛的 ASO 指南分开:
- 谷歌搜索生成式 AI 功能仍然依赖于核心搜索排名和质量系统;基础 SEO、可爬取性、有帮助的内容和技术清晰度仍然是首要的。
- 谷歌搜索不使用 `llms.txt` 或特殊的 AI Markdown 文件进行排名或 AI 概览/AI 模式可见性。ASO 仍然检查它们,因为其他代理和 MCP 客户端可以使用它们。
- 谷歌/web.dev 的代理友好站点指南侧重于浏览器代理可用性:稳定的布局、语义化 HTML、与输入关联的标签、有意义的角色/名称/状态和避免隐藏叠加层。
- UCP、AP2、A2A、MCP、x402、DNS-AID、内容信号和 Web Bot Auth 是新兴的非 SEO 协议。扫描器将它们视为代理就绪信号,而不是谷歌搜索排名因素。
主要参考资料:
- https://developers.google.com/search/docs/fundamentals/ai-optimization-guide
- https://web.dev/articles/ai-agent-site-ux
- https://ucp.dev
## 许可证
MIT - 免费供所有人使用。如果扫描器发现了漏洞,[ASO 框架](https://agentsignaloptimization.com) 会向您展示如何修复它们。