# MCP Server

A free public Model Context Protocol server that runs the AI Readiness Check on any URL you give it. Add it to your AI client and you can say things like "run the AI readiness check on [YOUR_URL]" and get back a graded report with one-line fixes for each failing signal.

## Endpoint

Streamable HTTP transport at https://www.tristandenyer.com/api/mcp/v1. Stateless (no session continuity needed).

## Install

### Claude Desktop (recommended: Connectors UI)

On recent Claude Desktop versions, this is a GUI flow with no file editing:

1. Open Settings → Connectors.
2. Click Add custom connector (you may need to scroll to the bottom of the list).
3. Name: any label you want, e.g. AI Readiness Check.
4. URL: https://www.tristandenyer.com/api/mcp/v1 — this is the server endpoint, not the page you're reading.
5. Click Add. There's no authentication step; the server is unauthenticated public.

Open a new conversation and try: "Run the AI readiness check on [YOUR_URL]".

### Claude Desktop (fallback: edit the config file)

If your Claude Desktop version doesn't have the Connectors UI, edit the config file directly. Open Settings → Developer → Edit Config to open claude_desktop_config.json. If the file is empty, paste the block below as-is. If it already has an mcpServers section, merge in just the tristandenyer-ai-readiness entry alongside any existing entries (don't add a second mcpServers key — that's invalid JSON).

```json
{
  "mcpServers": {
    "tristandenyer-ai-readiness": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://www.tristandenyer.com/api/mcp/v1"]
    }
  }
}
```

Save and restart Claude Desktop. The wrapper (mcp-remote) bridges this remote HTTP server to Claude Desktop's stdio transport on older versions. It's fetched on first launch via npx, so you need Node.js installed (`node --version` in your terminal).

### Claude Code

```bash
claude mcp add --transport http \
  tristandenyer-ai-readiness \
  https://www.tristandenyer.com/api/mcp/v1
```

### Cursor

Cursor speaks remote HTTP MCP natively. Edit ~/.cursor/mcp.json:

```json
{
  "mcpServers": {
    "tristandenyer-ai-readiness": {
      "url": "https://www.tristandenyer.com/api/mcp/v1"
    }
  }
}
```

### ChatGPT

OpenAI's MCP support is still rolling out. As of writing, ChatGPT can call MCP servers in some configurations via the OpenAI Platform docs (https://platform.openai.com/docs/mcp). Point it at https://www.tristandenyer.com/api/mcp/v1 with HTTP transport.

## The tool

The server exposes one tool: `run_ai_readiness_check(url)`.

Input:

```json
{ "url": "https://example.com" }
```

Example response (slim shape designed to fit an LLM context window):

```json
{
  "tool_version": "1.0.0",
  "url": "https://www.example.com",
  "reachable": true,
  "grade": "F",
  "score": 6,
  "summary": { "passing": 0, "warnings": 1, "failing": 3, "info": 12 },
  "failing": [
    {
      "id": "robots-txt",
      "name": "robots.txt",
      "message": "No robots.txt found.",
      "fix_url": "https://github.com/tristandenyer/awesome-ai-website-files/blob/main/prompts/robots-txt.md",
      "fix_summary": "Add a robots.txt at the site root that explicitly allows the AI crawlers you want."
    }
  ],
  "warnings": [],
  "full_report_url": "https://www.tristandenyer.com/ai-readiness-check?url=https%3A%2F%2Fwww.example.com"
}
```

Passing checks are intentionally omitted from the response — they're not actionable for an agent and they cost tokens. Click full_report_url for the complete UI, including everything that passed.

## Rate limits

The server uses an in-memory limiter.

Per session:

- 5 requests per 10 seconds (burst absorber)
- 20 requests per hour

Per IP:

- 40 requests per hour

Across all callers:

- 200 requests per minute

Repeated rate-limit hits trigger a 4-second tar-pit. Sustained abuse (20+ rejections in 10 minutes) auto-blocks the IP for an hour.

## Privacy and safety

The scanner only fetches public URLs. Private IPs, loopback, link-local, and dangerous ports are rejected at the input boundary. URLs with embedded credentials are rejected. Only http:// and https:// schemes are accepted.

Free-form text from the scanned site (page titles, header values, schema.org @type strings) is scrubbed before being returned, to limit prompt-injection risk in your agent's context window.

## Source

The fix-prompt copy referenced by every fix_url lives at https://github.com/tristandenyer/awesome-ai-website-files (awesome-ai-website-files).

## Reporting issues

Report bugs, abuse, or unexpected behavior by opening an issue at https://github.com/tristandenyer/awesome-ai-website-files/issues.

---

[Back to AI Readiness Check](https://www.tristandenyer.com/ai-readiness-check)
