{
  "markdown": "# aeo-mcp\n\nAn MCP server that gives AI agents — Claude, Claude Code, Cursor, anything speaking the Model Context Protocol — tools to inspect a website's visibility to AI answer engines. Crawler permissions, llms.txt, structured data, on-page signals, and a full 29-check AI-readiness audit (powered by [answer-audit](https://github.com/arthurcarlsonn/answer-audit)), each one tool call away. Read-only, no API keys, no telemetry.\n\n![Claude Desktop using aeo-mcp to inspect The Verge's AI crawler policy](docs/claude-desktop.png)\n\n*Real session: Claude Desktop discovers The Verge allows GPTBot (OpenAI licensing deal) while blocking ClaudeBot, PerplexityBot, Google-Extended, and CCBot — one tool call.*\n\n## Install\n\n**Claude Code**\n\n```bash\nclaude mcp add aeo -- npx -y aeo-mcp\n```\n\n**Claude Desktop** (`claude_desktop_config.json`)\n\n```json\n{ \"mcpServers\": { \"aeo\": { \"command\": \"npx\", \"args\": [\"-y\", \"aeo-mcp\"] } } }\n```\n\n**Cursor** (`.cursor/mcp.json`)\n\n```json\n{ \"mcpServers\": { \"aeo\": { \"command\": \"npx\", \"args\": [\"-y\", \"aeo-mcp\"] } } }\n```\n\n## Tools\n\n| Tool | When the agent uses it | Input | Returns |\n|---|---|---|---|\n| `audit_url` | \"How visible is this site to ChatGPT/Perplexity?\" — full AEO health check | `{ url }` | 0-100 score, grade, category breakdown, failed/warned checks with fixes |\n| `check_ai_crawlers` | \"Is GPTBot blocked?\" — robots.txt policy per AI bot | `{ url }` | Per-bot allow/block verdicts with the matching rule, plus sitemaps |\n| `inspect_llms_txt` | \"Does this site have llms.txt? Is it valid?\" | `{ url }` | Title, summary, sections with links, structural issues, raw excerpt |\n| `extract_structured_data` | \"What schema markup does this page have?\" | `{ url }` | JSON-LD types, key fields per node, parse errors |\n| `extract_page_signals` | \"Why do engines misread this page?\" | `{ url }` | Title, meta description, h1, canonical, lang, text ratio, heading outline, client-side-rendering flag |\n\nBots checked by `check_ai_crawlers`: GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, Bingbot.\n\n## Try these prompts\n\n- \"Audit glowlab.com and summarize the top 3 AEO fixes.\"\n- \"Compare the AI crawler policies of nike.com and adidas.com — who is more open to being cited?\"\n- \"Check if my site has a valid llms.txt, and if not, draft one from my page signals.\"\n\n## Security\n\nThe server fetches model-supplied URLs, so it ships with an SSRF guard: http/https only, DNS resolution checked against private and special ranges (loopback, RFC1918, link-local, unique-local, IPv4-mapped forms), re-validation on every redirect hop, 10 s timeout, 2 MB body cap, max 5 redirects. Violations return a clean tool error, never an exception. All tools are read-only and no LLM calls happen inside the server.\n\n## Development\n\n```bash\nnpm install\nnpm run build   # required before npm test (the protocol test runs dist/)\nnpm test\n```\n\nTests include a scripted stdio round-trip (initialize → tools/list → tools/call) against the built server. To inspect interactively:\n\n```bash\nnpx @modelcontextprotocol/inspector node dist/index.js\n```\n\n## License\n\nMIT © Arthur Carlson\n",
  "bytes": 3100,
  "sha": "113d2dcfe6a2dd3bdb33b1567b474917ad266acd4c8c4017e76e2d4a906cc426",
  "repo_slug": "arthurcarlsonn/aeo-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_arthurcarlsonn_aeo_mcp_068c4d23/readme"
}