Verified AgentReady.md certificate
Issued sig: 5e245ab15881e258 Verify →

Analyzed URL

Https://mcpdir.net

Analyze another URL

AI-Ready Score

76 / B

Good

out of 100

Token Savings

HTML tokens 17.924
Markdown tokens 85
Savings 100%

Score Breakdown

Semantic HTML 85/100
Content Efficiency 70/100
AI Discoverability 45/100
Structured Data 100/100
Accessibility 100/100

Emerging protocols

0 of 3 detected

Well-known endpoints AI agents look for. Detected here means an agent can discover and connect to your service automatically.

  • OAuth Discovery RFC 8414
    /.well-known/oauth-authorization-server
  • MCP Server Card Anthropic
    /.well-known/mcp.json
  • A2A Agent Card Google
    /.well-known/agent.json

Your page has a low ratio of actual content to total HTML. Much of the page weight is markup, scripts, or styles rather than content.

How to implement

Move CSS to external stylesheets, remove inline styles, minimize JavaScript, and ensure the HTML focuses on content structure.

Your site doesn't support Markdown for Agents. This Cloudflare standard lets AI agents request content in markdown format, reducing token usage by ~80%.

How to implement

Implement one or more: (1) Respond to Accept: text/markdown with markdown content. (2) Serve .md URLs (e.g., /page.md). (3) Add <link rel="alternate" type="text/markdown"> tags. (4) Add Link HTTP headers for markdown discovery.

{\n res.setHeader('Vary', 'Accept');\n res.setHeader('Link', '; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n res.type('text/markdown; charset=utf-8');\n return res.send(renderMarkdown('page'));\n }\n res.render('page');\n});"},{"id":"fastify","label":"Fastify","language":"javascript","filename":"server.js","code":"// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n reply.header('Vary', 'Accept');\n reply.header('Link', '; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n }\n return reply.view('/page.ejs');\n});"},{"id":"nextjs","label":"Next.js","language":"typescript","filename":"app/page/route.ts","code":"// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n const accept = req.headers.get('accept') || '';\n if (accept.includes('text/markdown')) {\n return new Response(await renderMarkdown('page'), {\n headers: {\n 'Content-Type': 'text/markdown; charset=utf-8',\n 'Vary': 'Accept',\n },\n });\n }\n // Fall through to the page component\n return new Response(null, { status: 404 });\n}"},{"id":"wordpress","label":"WordPress","language":"php","filename":"functions.php","code":"post_content));\n exit;\n});"},{"id":"static","label":"Hugo / Jekyll / Astro","language":"txt","filename":"static/page.md","code":"# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in :\n# "}] }'>

No sitemap found. A sitemap helps AI agents discover all pages on your site.

How to implement

Create a /sitemap.xml listing all your public pages. Most CMS platforms can generate this automatically.

No Content-Signal directives found. These tell AI agents how they may use your content (search indexing, AI input, training data). The recommended location is robots.txt.

How to implement

Add Content-Signal to your robots.txt: User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no. You can also add it as an HTTP header on markdown responses.

{\n res.setHeader('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n next();\n});\n\n// Fastify\nfastify.addHook('onSend', (request, reply, payload, done) => {\n reply.header('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n done();\n});"}] }'>

Your page relies heavily on <div> elements. Semantic elements like <section>, <nav>, <header>, <footer>, and <aside> provide meaningful structure for AI agents.

How to implement

Replace generic <div> containers with appropriate semantic elements. Use <section> for thematic groups, <nav> for navigation, <header>/<footer> for page/section headers and footers.

Markdown tokens: 85
© 2026 MCPdir.net. Built for discovering and comparing MCP servers.

Data sourced from MCP Registry, PulseMCP, Docker MCP Catalog & community

Project in development by [Color Vivo](https://colorvivo.com/) & [David Carrero](https://carrero.es/). Hosted on Cloudflare Pages.

Made with ❤️ from Madrid and Herencia (Ciudad Real) — Spain.
The multilingual MCP server directory | MCPdir

[![MCPdir — MCP Server Directory](https://mcpdir.net/logo.png)](https://mcpdir.net/)

🇬🇧 [🇪🇸](https://mcpdir.net/es/ "Español")

# Find the right MCP server for your AI tools

Discover, compare and install MCP servers. The open directory with original editorial content in English and Spanish.

3147 servers · 17 categories · 2 languages

## Featured

[

### AWS MCP Servers

by AWS Labs

Official AWS MCP servers for documentation, infrastructure, containers, and serverless

⭐ 8.3k 📅 1mo ago 📦 Python

Python Intermediate Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/aws-mcp/)[

### Blender MCP

by ahujasid

Prompt-assisted 3D modeling — connect Blender to AI through MCP for scene creation and manipulation

⭐ 17.4k 📅 1mo ago 📦 Python

Python Intermediate Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/blender-mcp/)[

### Chrome DevTools MCP

by dinesh-nalla-se

Give your AI agent full access to Chrome DevTools

📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/chrome-devtools-mcp/)[

### Context7 MCP

by Upstash

Up-to-date, version-specific code documentation for any library — right in your AI assistant

⭐ 47.2k 📅 1mo ago 📦 Node.js

Node.js Beginner

🍎🐧🪟

](https://mcpdir.net/s/context7-mcp/)[

### Firecrawl

by Mendable

The Web Data API for AI — turn entire websites into LLM-ready markdown or structured data

⭐ 86.7k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/firecrawl/)[

### GitHub MCP Server

by GitHub

GitHub's official MCP server — manage repos, issues, PRs, Actions, and security from any AI tool

⭐ 27.3k 📅 1mo ago 📦 Docker

Docker Beginner Self-hostable Docker

🍎🐧🪟

](https://mcpdir.net/s/github-mcp-server/)[

### GitHub MCP

by anthropics

Turn your AI coding agent into a full-powered GitHub collaborator

⭐ 5.2k 👁 320k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/github-mcp/)[

### MCP Reference Servers

by Anthropic

Official MCP reference implementations from Anthropic — the most starred MCP project

⭐ 79.7k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/mcp-reference-servers/)[

### Notion MCP Server

by Notion

Official Notion MCP server for AI-powered workspace management

⭐ 4k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable Docker

🍎🐧🪟

](https://mcpdir.net/s/notion-mcp-server/)[

### Playwright MCP

by Microsoft

Browser automation for LLMs via accessibility snapshots, no vision models needed

⭐ 27.9k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/playwright-mcp/)

## Popular servers[See all →](https://mcpdir.net/servers/)

[

### Firecrawl

by Mendable

The Web Data API for AI — turn entire websites into LLM-ready markdown or structured data

⭐ 86.7k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/firecrawl/)[

### MCP Reference Servers

by Anthropic

Official MCP reference implementations from Anthropic — the most starred MCP project

⭐ 79.7k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/mcp-reference-servers/)[

### Slack MCP

by Anthropic

Official MCP reference server for Slack — send messages, read channels, and search conversations

⭐ 79.7k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/slack-mcp/)[

### Context7 MCP

by Upstash

Up-to-date, version-specific code documentation for any library — right in your AI assistant

⭐ 47.2k 📅 1mo ago 📦 Node.js

Node.js Beginner

🍎🐧🪟

](https://mcpdir.net/s/context7-mcp/)[

### Playwright MCP

by Microsoft

Browser automation for LLMs via accessibility snapshots, no vision models needed

⭐ 27.9k 📅 1mo ago 📦 Node.js

Node.js Beginner Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/playwright-mcp/)[

### GitHub MCP Server

by GitHub

GitHub's official MCP server — manage repos, issues, PRs, Actions, and security from any AI tool

⭐ 27.3k 📅 1mo ago 📦 Docker

Docker Beginner Self-hostable Docker

🍎🐧🪟

](https://mcpdir.net/s/github-mcp-server/)

## Recently added

[

### Memory Graph MCP

by FlarelyLegal

Persistent shared memory for LLMs with knowledge graphs and semantic search

⭐ 2 📅 1mo ago 📦 Node.js

Node.js Advanced Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/memory-graph-mcp/)[

### 1mcpserver

by particlefuture

MCP server — editorial content pending

⭐ 40 📅 3mo ago 📦 Python

Python Intermediate Self-hostable

🍎

](https://mcpdir.net/s/1mcpserver/)[

### 4everland-hosting-mcp

by 4everland

MCP server — editorial content pending

⭐ 2 📅 9mo ago 📦 Node.js

Node.js Intermediate Self-hostable

🍎🐧

](https://mcpdir.net/s/4everland-hosting-mcp/)[

### aaa-mcp

by ariffazil

MCP server — editorial content pending

⭐ 29 📅 1mo ago 📦 Python

Python Intermediate Self-hostable

🍎🐧🪟

](https://mcpdir.net/s/aaa-mcp/)

## Browse by category[See all →](https://mcpdir.net/categories/)

[🌐

Browser & Web

35 servers

](https://mcpdir.net/categories/browser/)[🗄️

Database

99 servers

](https://mcpdir.net/categories/database/)[📁

Filesystem

36 servers

](https://mcpdir.net/categories/filesystem/)[🔧

DevOps & CI/CD

142 servers

](https://mcpdir.net/categories/devops/)[🤖

AI & ML

623 servers

](https://mcpdir.net/categories/ai-ml/)[📊

Data & Analytics

27 servers

](https://mcpdir.net/categories/data/)[💬

Communication

19 servers

](https://mcpdir.net/categories/communication/)[📝

Productivity

34 servers

](https://mcpdir.net/categories/productivity/)[🔒

Security

25 servers

](https://mcpdir.net/categories/security/)[☁️

Cloud Providers

16 servers

](https://mcpdir.net/categories/cloud/)[🎨

Design & Media

33 servers

](https://mcpdir.net/categories/design/)[💰

Finance

41 servers

](https://mcpdir.net/categories/finance/)[🔍

Search & Discovery

60 servers

](https://mcpdir.net/categories/search/)[🏗️

Code & Development

1536 servers

](https://mcpdir.net/categories/code/)[🧪

Testing

18 servers

](https://mcpdir.net/categories/testing/)[📡

API & Integration

390 servers

](https://mcpdir.net/categories/api/)[🗺️

Maps & Location

13 servers

](https://mcpdir.net/categories/maps/)

## Recommended Services

Other tools from our team

[### SpyOnWeb

Find hidden connections between websites by correlating domains, Analytics, AdSense, nameservers and IPs.

spyonweb.net →](https://spyonweb.net/)[### AgentReady

Evaluate and improve your website compatibility with AI agents through scoring and analysis.

agentready.md →](https://agentready.md/)[### NSlookup

Minimal DNS and IP diagnostics suite with fast lookups over HTTPS, history and caching.

nslookup.network →](https://nslookup.network/)[### Spider

Check if search engines, AI crawlers and bots can access your site by analyzing robots.txt and headers.

spider.es →](https://spider.es/)[### Password.es

Generate secure, customizable passwords online with a built-in strength checker.

password.es/en/ →](https://password.es/en/)[### Time Tracking

Free online Pomodoro timer for deep focus sessions with a distraction-free interface.

timetracking.uk/ →](https://timetracking.uk/)

Upload this file as /index.md on your server so AI agents can access a clean version of your page. You can also configure Accept: text/markdown content negotiation to serve it automatically.

Our recommendation

Download llms.txt
# MCPdir

> Discover, compare and install MCP servers for your AI tools

## Main
- [The multilingual MCP server directory](Https://mcpdir.net): Discover, compare and install MCP servers for your AI tools
- [About](https://mcpdir.net/about/)
- [Servers](https://mcpdir.net/servers/)
- [Categories](https://mcpdir.net/categories/)
- [🔥 Trending](https://mcpdir.net/trending/)
- [🇪🇸](https://mcpdir.net/es/)
- [RSS Feed](https://mcpdir.net/feed.xml)

Full llms.txt requires domain-wide analysis (coming soon)

Upload this file to https://mcpdir.net/llms.txt at the root of your domain. AI agents like ChatGPT, Claude, and Perplexity check this file to understand your site structure.

This site already has a llms.txt file.

Valid format
# MCPdir — The multilingual MCP server directory

> MCPdir is an open directory of MCP (Model Context Protocol) servers. It helps developers discover, compare and install MCP servers for AI coding tools like Claude Code, Cursor, VS Code Copilot, Gemini CLI, and more.

## What is MCP?

MCP (Model Context Protocol) is an open standard that lets AI assistants connect to external tools and data sources. MCP servers expose capabilities (tools, resources, prompts) that AI clients can use.

## Site structure

- `/` — Homepage with featured and popular MCP servers
- `/servers/` — Full directory with search and filters
- `/s/{slug}/` — Individual MCP server detail page
- `/categories/` — Browse by category (browser, database, devops, etc.)
- `/categories/{slug}/` — Servers in a specific category
- `/es/` — Spanish version of all pages

## Data

Each MCP server entry includes:
- Canonical registry data (name, version, author, license)
- GitHub metrics (stars, downloads, last commit)
- Original editorial content (description, pros/cons, use cases, tips)
- Installation instructions for 8+ AI clients
- Client compatibility matrix
- Category, tags, difficulty level

## API

- `/feed.xml` — RSS feed with latest MCP servers
- `/sitemap-index.xml` — XML sitemap with hreflang

## Contact

Website: https://mcpdir.net

Semantic HTML

Uses article or main element (100/100)

Has <main>

Proper heading hierarchy (100/100)

Clean heading hierarchy

Uses semantic HTML elements (24/100)

11 semantic elements, 141 divs (ratio: 7%)

Meaningful image alt texts (100/100)

2/2 images with meaningful alt text

Low div nesting depth (100/100)

Avg div depth: 1.2, max: 3

Content Efficiency

Good token reduction ratio (100/100)

100% token reduction (HTML→Markdown)

Good content-to-noise ratio (0/100)

Content ratio: 0.5% (290 content chars / 60888 HTML bytes)

Minimal inline styles (100/100)

0/656 elements with inline styles (0.0%)

Reasonable page weight (100/100)

HTML size: 59KB

AI Discoverability

Has llms.txt file (100/100)

llms.txt exists and is valid

Has robots.txt file (100/100)

robots.txt exists

Robots.txt allows AI bots (100/100)

All major AI bots allowed

Has sitemap.xml (0/100)

No sitemap found

Markdown for Agents support (0/100)
&#10007; Accept: text/markdown &#10007; .md URL &#10007; <link> tag &#10007; Link header
Has Content-Signal (robots.txt or HTTP headers) (0/100)
&#10003; robots.txt &#10003; HTTP header &#10007; Policy

Structured Data

Has Schema.org / JSON-LD (100/100)

JSON-LD found: WebSite, Organization

Has Open Graph tags (100/100)

All OG tags present

Has meta description (100/100)

Meta description: 59 chars

Has canonical URL (100/100)

Canonical URL present

Has lang attribute (100/100)

lang="en"

Accessibility

Content available without JavaScript (100/100)

Content available without JavaScript

Reasonable page size (100/100)

Page size: 59KB

Content appears early in HTML (100/100)

Main content starts at 11% of HTML

{
  "url": "Https://mcpdir.net",
  "timestamp": 1776589460527,
  "fetch": {
    "mode": "simple",
    "timeMs": 63,
    "htmlSizeBytes": 60888,
    "supportsMarkdown": false,
    "markdownAgents": {
      "contentNegotiation": false,
      "mdUrl": {
        "found": false,
        "url": null
      },
      "linkTag": {
        "found": false,
        "url": null
      },
      "linkHeader": {
        "found": false,
        "url": null
      },
      "responseHeaders": {
        "contentSignal": null,
        "xMarkdownTokens": null,
        "vary": null
      },
      "frontmatter": {
        "present": false,
        "fields": [],
        "level": "none"
      },
      "level": "none"
    },
    "statusCode": 200
  },
  "extraction": {
    "title": "The multilingual MCP server directory",
    "excerpt": "Discover, compare and install MCP servers for your AI tools",
    "byline": null,
    "siteName": "MCPdir",
    "lang": "en",
    "contentLength": 290,
    "metadata": {
      "description": "Discover, compare and install MCP servers for your AI tools",
      "ogTitle": "The multilingual MCP server directory",
      "ogDescription": "Discover, compare and install MCP servers for your AI tools",
      "ogImage": "https://mcpdir.net/og-cover.png",
      "ogType": "website",
      "canonical": "https://mcpdir.net/",
      "lang": "en",
      "schemas": [
        {
          "@context": "https://schema.org",
          "@type": "WebSite",
          "name": "MCPdir",
          "url": "https://mcpdir.net",
          "potentialAction": {
            "@type": "SearchAction",
            "target": {
              "@type": "EntryPoint",
              "urlTemplate": "https://mcpdir.net/servers/?q={search_term_string}"
            },
            "query-input": "required name=search_term_string"
          }
        },
        {
          "@context": "https://schema.org",
          "@type": "Organization",
          "name": "MCPdir",
          "url": "https://mcpdir.net",
          "logo": "https://mcpdir.net/og-cover.png",
          "sameAs": [
            "https://github.com/dcarrero/MCPdir"
          ]
        }
      ],
      "robotsMeta": null,
      "author": null,
      "generator": "Astro v5.17.3",
      "markdownAlternateHref": null
    }
  },
  "markdown": "© 2026 MCPdir.net. Built for discovering and comparing MCP servers.\n\nData sourced from MCP Registry, PulseMCP, Docker MCP Catalog & community\n\nProject in development by [Color Vivo](https://colorvivo.com/) & [David Carrero](https://carrero.es/). Hosted on Cloudflare Pages.\n\nMade with ❤️ from Madrid and Herencia (Ciudad Real) — Spain.\n",
  "fullPageMarkdown": "The multilingual MCP server directory | MCPdir\n\n[![MCPdir — MCP Server Directory](https://mcpdir.net/logo.png)](https://mcpdir.net/)\n\n🇬🇧 [🇪🇸](https://mcpdir.net/es/ \"Español\")\n\n# Find the right MCP server for your AI tools\n\nDiscover, compare and install MCP servers. The open directory with original editorial content in English and Spanish.\n\n3147 servers · 17 categories · 2 languages\n\n## Featured\n\n[\n\n### AWS MCP Servers\n\nby AWS Labs\n\nOfficial AWS MCP servers for documentation, infrastructure, containers, and serverless\n\n⭐ 8.3k 📅 1mo ago 📦 Python\n\nPython Intermediate Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/aws-mcp/)[\n\n### Blender MCP\n\nby ahujasid\n\nPrompt-assisted 3D modeling — connect Blender to AI through MCP for scene creation and manipulation\n\n⭐ 17.4k 📅 1mo ago 📦 Python\n\nPython Intermediate Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/blender-mcp/)[\n\n### Chrome DevTools MCP\n\nby dinesh-nalla-se\n\nGive your AI agent full access to Chrome DevTools\n\n📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/chrome-devtools-mcp/)[\n\n### Context7 MCP\n\nby Upstash\n\nUp-to-date, version-specific code documentation for any library — right in your AI assistant\n\n⭐ 47.2k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/context7-mcp/)[\n\n### Firecrawl\n\nby Mendable\n\nThe Web Data API for AI — turn entire websites into LLM-ready markdown or structured data\n\n⭐ 86.7k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/firecrawl/)[\n\n### GitHub MCP Server\n\nby GitHub\n\nGitHub's official MCP server — manage repos, issues, PRs, Actions, and security from any AI tool\n\n⭐ 27.3k 📅 1mo ago 📦 Docker\n\nDocker Beginner Self-hostable Docker\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/github-mcp-server/)[\n\n### GitHub MCP\n\nby anthropics\n\nTurn your AI coding agent into a full-powered GitHub collaborator\n\n⭐ 5.2k 👁 320k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/github-mcp/)[\n\n### MCP Reference Servers\n\nby Anthropic\n\nOfficial MCP reference implementations from Anthropic — the most starred MCP project\n\n⭐ 79.7k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/mcp-reference-servers/)[\n\n### Notion MCP Server\n\nby Notion\n\nOfficial Notion MCP server for AI-powered workspace management\n\n⭐ 4k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable Docker\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/notion-mcp-server/)[\n\n### Playwright MCP\n\nby Microsoft\n\nBrowser automation for LLMs via accessibility snapshots, no vision models needed\n\n⭐ 27.9k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/playwright-mcp/)\n\n## Popular servers[See all →](https://mcpdir.net/servers/)\n\n[\n\n### Firecrawl\n\nby Mendable\n\nThe Web Data API for AI — turn entire websites into LLM-ready markdown or structured data\n\n⭐ 86.7k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/firecrawl/)[\n\n### MCP Reference Servers\n\nby Anthropic\n\nOfficial MCP reference implementations from Anthropic — the most starred MCP project\n\n⭐ 79.7k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/mcp-reference-servers/)[\n\n### Slack MCP\n\nby Anthropic\n\nOfficial MCP reference server for Slack — send messages, read channels, and search conversations\n\n⭐ 79.7k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/slack-mcp/)[\n\n### Context7 MCP\n\nby Upstash\n\nUp-to-date, version-specific code documentation for any library — right in your AI assistant\n\n⭐ 47.2k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/context7-mcp/)[\n\n### Playwright MCP\n\nby Microsoft\n\nBrowser automation for LLMs via accessibility snapshots, no vision models needed\n\n⭐ 27.9k 📅 1mo ago 📦 Node.js\n\nNode.js Beginner Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/playwright-mcp/)[\n\n### GitHub MCP Server\n\nby GitHub\n\nGitHub's official MCP server — manage repos, issues, PRs, Actions, and security from any AI tool\n\n⭐ 27.3k 📅 1mo ago 📦 Docker\n\nDocker Beginner Self-hostable Docker\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/github-mcp-server/)\n\n## Recently added\n\n[\n\n### Memory Graph MCP\n\nby FlarelyLegal\n\nPersistent shared memory for LLMs with knowledge graphs and semantic search\n\n⭐ 2 📅 1mo ago 📦 Node.js\n\nNode.js Advanced Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/memory-graph-mcp/)[\n\n### 1mcpserver\n\nby particlefuture\n\nMCP server — editorial content pending\n\n⭐ 40 📅 3mo ago 📦 Python\n\nPython Intermediate Self-hostable\n\n🍎\n\n](https://mcpdir.net/s/1mcpserver/)[\n\n### 4everland-hosting-mcp\n\nby 4everland\n\nMCP server — editorial content pending\n\n⭐ 2 📅 9mo ago 📦 Node.js\n\nNode.js Intermediate Self-hostable\n\n🍎🐧\n\n](https://mcpdir.net/s/4everland-hosting-mcp/)[\n\n### aaa-mcp\n\nby ariffazil\n\nMCP server — editorial content pending\n\n⭐ 29 📅 1mo ago 📦 Python\n\nPython Intermediate Self-hostable\n\n🍎🐧🪟\n\n](https://mcpdir.net/s/aaa-mcp/)\n\n## Browse by category[See all →](https://mcpdir.net/categories/)\n\n[🌐\n\nBrowser & Web\n\n35 servers\n\n](https://mcpdir.net/categories/browser/)[🗄️\n\nDatabase\n\n99 servers\n\n](https://mcpdir.net/categories/database/)[📁\n\nFilesystem\n\n36 servers\n\n](https://mcpdir.net/categories/filesystem/)[🔧\n\nDevOps & CI/CD\n\n142 servers\n\n](https://mcpdir.net/categories/devops/)[🤖\n\nAI & ML\n\n623 servers\n\n](https://mcpdir.net/categories/ai-ml/)[📊\n\nData & Analytics\n\n27 servers\n\n](https://mcpdir.net/categories/data/)[💬\n\nCommunication\n\n19 servers\n\n](https://mcpdir.net/categories/communication/)[📝\n\nProductivity\n\n34 servers\n\n](https://mcpdir.net/categories/productivity/)[🔒\n\nSecurity\n\n25 servers\n\n](https://mcpdir.net/categories/security/)[☁️\n\nCloud Providers\n\n16 servers\n\n](https://mcpdir.net/categories/cloud/)[🎨\n\nDesign & Media\n\n33 servers\n\n](https://mcpdir.net/categories/design/)[💰\n\nFinance\n\n41 servers\n\n](https://mcpdir.net/categories/finance/)[🔍\n\nSearch & Discovery\n\n60 servers\n\n](https://mcpdir.net/categories/search/)[🏗️\n\nCode & Development\n\n1536 servers\n\n](https://mcpdir.net/categories/code/)[🧪\n\nTesting\n\n18 servers\n\n](https://mcpdir.net/categories/testing/)[📡\n\nAPI & Integration\n\n390 servers\n\n](https://mcpdir.net/categories/api/)[🗺️\n\nMaps & Location\n\n13 servers\n\n](https://mcpdir.net/categories/maps/)\n\n## Recommended Services\n\nOther tools from our team\n\n[### SpyOnWeb\n\nFind hidden connections between websites by correlating domains, Analytics, AdSense, nameservers and IPs.\n\nspyonweb.net →](https://spyonweb.net/)[### AgentReady\n\nEvaluate and improve your website compatibility with AI agents through scoring and analysis.\n\nagentready.md →](https://agentready.md/)[### NSlookup\n\nMinimal DNS and IP diagnostics suite with fast lookups over HTTPS, history and caching.\n\nnslookup.network →](https://nslookup.network/)[### Spider\n\nCheck if search engines, AI crawlers and bots can access your site by analyzing robots.txt and headers.\n\nspider.es →](https://spider.es/)[### Password.es\n\nGenerate secure, customizable passwords online with a built-in strength checker.\n\npassword.es/en/ →](https://password.es/en/)[### Time Tracking\n\nFree online Pomodoro timer for deep focus sessions with a distraction-free interface.\n\ntimetracking.uk/ →](https://timetracking.uk/)\n",
  "markdownStats": {
    "images": 0,
    "links": 2,
    "tables": 0,
    "codeBlocks": 0,
    "headings": 0
  },
  "tokens": {
    "htmlTokens": 17924,
    "markdownTokens": 85,
    "reduction": 17839,
    "reductionPercent": 100
  },
  "score": {
    "score": 76,
    "grade": "B",
    "dimensions": {
      "semanticHtml": {
        "score": 85,
        "weight": 20,
        "grade": "B",
        "checks": {
          "uses_article_or_main": {
            "score": 100,
            "weight": 20,
            "details": "Has <main>"
          },
          "proper_heading_hierarchy": {
            "score": 100,
            "weight": 25,
            "details": "Clean heading hierarchy"
          },
          "semantic_elements": {
            "score": 24,
            "weight": 20,
            "details": "11 semantic elements, 141 divs (ratio: 7%)"
          },
          "meaningful_alt_texts": {
            "score": 100,
            "weight": 15,
            "details": "2/2 images with meaningful alt text"
          },
          "low_div_nesting": {
            "score": 100,
            "weight": 20,
            "details": "Avg div depth: 1.2, max: 3"
          }
        }
      },
      "contentEfficiency": {
        "score": 70,
        "weight": 25,
        "grade": "C",
        "checks": {
          "token_reduction_ratio": {
            "score": 100,
            "weight": 40,
            "details": "100% token reduction (HTML→Markdown)"
          },
          "content_to_noise_ratio": {
            "score": 0,
            "weight": 30,
            "details": "Content ratio: 0.5% (290 content chars / 60888 HTML bytes)"
          },
          "minimal_inline_styles": {
            "score": 100,
            "weight": 15,
            "details": "0/656 elements with inline styles (0.0%)"
          },
          "reasonable_page_weight": {
            "score": 100,
            "weight": 15,
            "details": "HTML size: 59KB"
          }
        }
      },
      "aiDiscoverability": {
        "score": 45,
        "weight": 25,
        "grade": "D",
        "checks": {
          "has_llms_txt": {
            "score": 100,
            "weight": 20,
            "details": "llms.txt exists and is valid"
          },
          "has_robots_txt": {
            "score": 100,
            "weight": 10,
            "details": "robots.txt exists"
          },
          "robots_allows_ai_bots": {
            "score": 100,
            "weight": 15,
            "details": "All major AI bots allowed"
          },
          "has_sitemap": {
            "score": 0,
            "weight": 10,
            "details": "No sitemap found"
          },
          "supports_markdown_negotiation": {
            "score": 0,
            "weight": 25,
            "details": "No Markdown for Agents support detected"
          },
          "has_content_signals": {
            "score": 0,
            "weight": 20,
            "details": "No Content-Signal found (robots.txt or HTTP headers)"
          }
        }
      },
      "structuredData": {
        "score": 100,
        "weight": 15,
        "grade": "A",
        "checks": {
          "has_schema_org": {
            "score": 100,
            "weight": 30,
            "details": "JSON-LD found: WebSite, Organization"
          },
          "has_open_graph": {
            "score": 100,
            "weight": 25,
            "details": "All OG tags present"
          },
          "has_meta_description": {
            "score": 100,
            "weight": 20,
            "details": "Meta description: 59 chars"
          },
          "has_canonical_url": {
            "score": 100,
            "weight": 15,
            "details": "Canonical URL present"
          },
          "has_lang_attribute": {
            "score": 100,
            "weight": 10,
            "details": "lang=\"en\""
          }
        }
      },
      "accessibility": {
        "score": 100,
        "weight": 15,
        "grade": "A",
        "checks": {
          "content_without_js": {
            "score": 100,
            "weight": 40,
            "details": "Content available without JavaScript"
          },
          "reasonable_page_size": {
            "score": 100,
            "weight": 30,
            "details": "Page size: 59KB"
          },
          "fast_content_position": {
            "score": 100,
            "weight": 30,
            "details": "Main content starts at 11% of HTML"
          }
        }
      }
    }
  },
  "recommendations": [
    {
      "id": "improve_content_ratio",
      "priority": "critical",
      "category": "contentEfficiency",
      "titleKey": "rec.improve_content_ratio.title",
      "descriptionKey": "rec.improve_content_ratio.description",
      "howToKey": "rec.improve_content_ratio.howto",
      "effort": "moderate",
      "estimatedImpact": 6,
      "checkScore": 0,
      "checkDetails": "Content ratio: 0.5% (290 content chars / 60888 HTML bytes)"
    },
    {
      "id": "add_markdown_negotiation",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_markdown_negotiation.title",
      "descriptionKey": "rec.add_markdown_negotiation.description",
      "howToKey": "rec.add_markdown_negotiation.howto",
      "effort": "significant",
      "estimatedImpact": 6,
      "checkScore": 0,
      "checkDetails": "No Markdown for Agents support detected"
    },
    {
      "id": "add_sitemap",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_sitemap.title",
      "descriptionKey": "rec.add_sitemap.description",
      "howToKey": "rec.add_sitemap.howto",
      "effort": "quick-win",
      "estimatedImpact": 5,
      "checkScore": 0,
      "checkDetails": "No sitemap found"
    },
    {
      "id": "add_content_signals",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_content_signals.title",
      "descriptionKey": "rec.add_content_signals.description",
      "howToKey": "rec.add_content_signals.howto",
      "effort": "quick-win",
      "estimatedImpact": 5,
      "checkScore": 0,
      "checkDetails": "No Content-Signal found (robots.txt or HTTP headers)"
    },
    {
      "id": "add_semantic_elements",
      "priority": "high",
      "category": "semanticHtml",
      "titleKey": "rec.add_semantic_elements.title",
      "descriptionKey": "rec.add_semantic_elements.description",
      "howToKey": "rec.add_semantic_elements.howto",
      "effort": "moderate",
      "estimatedImpact": 5,
      "checkScore": 24,
      "checkDetails": "11 semantic elements, 141 divs (ratio: 7%)"
    }
  ],
  "llmsTxtPreview": "# MCPdir\n\n> Discover, compare and install MCP servers for your AI tools\n\n## Main\n- [The multilingual MCP server directory](Https://mcpdir.net): Discover, compare and install MCP servers for your AI tools\n- [About](https://mcpdir.net/about/)\n- [Servers](https://mcpdir.net/servers/)\n- [Categories](https://mcpdir.net/categories/)\n- [🔥 Trending](https://mcpdir.net/trending/)\n- [🇪🇸](https://mcpdir.net/es/)\n- [RSS Feed](https://mcpdir.net/feed.xml)\n\n",
  "llmsTxtExisting": "# MCPdir — The multilingual MCP server directory\n\n> MCPdir is an open directory of MCP (Model Context Protocol) servers. It helps developers discover, compare and install MCP servers for AI coding tools like Claude Code, Cursor, VS Code Copilot, Gemini CLI, and more.\n\n## What is MCP?\n\nMCP (Model Context Protocol) is an open standard that lets AI assistants connect to external tools and data sources. MCP servers expose capabilities (tools, resources, prompts) that AI clients can use.\n\n## Site structure\n\n- `/` — Homepage with featured and popular MCP servers\n- `/servers/` — Full directory with search and filters\n- `/s/{slug}/` — Individual MCP server detail page\n- `/categories/` — Browse by category (browser, database, devops, etc.)\n- `/categories/{slug}/` — Servers in a specific category\n- `/es/` — Spanish version of all pages\n\n## Data\n\nEach MCP server entry includes:\n- Canonical registry data (name, version, author, license)\n- GitHub metrics (stars, downloads, last commit)\n- Original editorial content (description, pros/cons, use cases, tips)\n- Installation instructions for 8+ AI clients\n- Client compatibility matrix\n- Category, tags, difficulty level\n\n## API\n\n- `/feed.xml` — RSS feed with latest MCP servers\n- `/sitemap-index.xml` — XML sitemap with hreflang\n\n## Contact\n\nWebsite: https://mcpdir.net",
  "emergingProtocols": {
    "oauthDiscovery": {
      "exists": false,
      "url": "https://mcpdir.net/.well-known/oauth-authorization-server"
    },
    "mcpServerCard": {
      "exists": false,
      "url": "https://mcpdir.net/.well-known/mcp.json"
    },
    "a2aAgentCard": {
      "exists": false,
      "url": "https://mcpdir.net/.well-known/agent.json"
    },
    "count": 0
  },
  "snippets": [
    {
      "id": "add_sitemap",
      "title": "Create /sitemap.xml",
      "description": "A sitemap helps AI agents discover all your pages. Most CMS platforms generate one automatically.",
      "language": "xml",
      "code": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>Https://mcpdir.net</loc>\n    <lastmod>2026-04-19</lastmod>\n  </url>\n</urlset>",
      "filename": "/sitemap.xml"
    },
    {
      "id": "add_content_signals",
      "title": "Add Content-Signal directives",
      "description": "Content-Signal tells AI agents how they may use your content. The canonical location is robots.txt, but you can also expose it as an HTTP header from any stack.",
      "language": "txt",
      "code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no",
      "filename": "/robots.txt",
      "stacks": [
        {
          "id": "robots",
          "label": "robots.txt",
          "language": "txt",
          "filename": "/robots.txt",
          "code": "User-agent: *\nContent-Signal: search=yes, ai-input=yes, ai-train=no"
        },
        {
          "id": "nginx",
          "label": "Nginx",
          "language": "nginx",
          "filename": "server block",
          "code": "# Inside your server { } block:\nadd_header Content-Signal \"search=yes, ai-input=yes, ai-train=no\" always;"
        },
        {
          "id": "apache",
          "label": "Apache",
          "language": "apache",
          "filename": ".htaccess",
          "code": "# In .htaccess (or VirtualHost):\nHeader set Content-Signal \"search=yes, ai-input=yes, ai-train=no\""
        },
        {
          "id": "wordpress",
          "label": "WordPress",
          "language": "php",
          "filename": "functions.php",
          "code": "<?php\n// In your theme's functions.php or a small mu-plugin\nadd_action('send_headers', function () {\n    header('Content-Signal: search=yes, ai-input=yes, ai-train=no');\n});\n\n// Optional: also append the directive to the dynamic robots.txt\nadd_filter('robots_txt', function ($output) {\n    return $output . \"\\nContent-Signal: search=yes, ai-input=yes, ai-train=no\\n\";\n}, 10, 1);"
        },
        {
          "id": "nextjs",
          "label": "Next.js",
          "language": "typescript",
          "filename": "middleware.ts",
          "code": "// middleware.ts (Next.js 13+ App Router or Pages Router)\nimport { NextResponse } from 'next/server';\nexport function middleware() {\n  const res = NextResponse.next();\n  res.headers.set(\n    'Content-Signal',\n    'search=yes, ai-input=yes, ai-train=no'\n  );\n  return res;\n}\nexport const config = { matcher: '/:path*' };"
        },
        {
          "id": "cloudflare",
          "label": "Cloudflare Workers",
          "language": "javascript",
          "filename": "worker.js",
          "code": "// Cloudflare Worker that proxies your origin and adds the header\nexport default {\n  async fetch(request, env, ctx) {\n    const res = await fetch(request);\n    const newRes = new Response(res.body, res);\n    newRes.headers.set(\n      'Content-Signal',\n      'search=yes, ai-input=yes, ai-train=no'\n    );\n    return newRes;\n  },\n};"
        },
        {
          "id": "express",
          "label": "Express / Fastify",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Express\napp.use((req, res, next) => {\n  res.setHeader('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n  next();\n});\n\n// Fastify\nfastify.addHook('onSend', (request, reply, payload, done) => {\n  reply.header('Content-Signal', 'search=yes, ai-input=yes, ai-train=no');\n  done();\n});"
        }
      ]
    },
    {
      "id": "add_markdown_negotiation",
      "title": "Support Markdown for Agents",
      "description": "Let AI agents request a clean Markdown version of any page via content negotiation, .md alternate URLs, link tags or Link headers.",
      "language": "html",
      "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">",
      "filename": "<head>",
      "stacks": [
        {
          "id": "html",
          "label": "HTML <head>",
          "language": "html",
          "filename": "<head>",
          "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        },
        {
          "id": "express",
          "label": "Express",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\napp.get('/page', (req, res) => {\n  res.setHeader('Vary', 'Accept');\n  res.setHeader('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    res.type('text/markdown; charset=utf-8');\n    return res.send(renderMarkdown('page'));\n  }\n  res.render('page');\n});"
        },
        {
          "id": "fastify",
          "label": "Fastify",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n  reply.header('Vary', 'Accept');\n  reply.header('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n  }\n  return reply.view('/page.ejs');\n});"
        },
        {
          "id": "nextjs",
          "label": "Next.js",
          "language": "typescript",
          "filename": "app/page/route.ts",
          "code": "// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n  const accept = req.headers.get('accept') || '';\n  if (accept.includes('text/markdown')) {\n    return new Response(await renderMarkdown('page'), {\n      headers: {\n        'Content-Type': 'text/markdown; charset=utf-8',\n        'Vary': 'Accept',\n      },\n    });\n  }\n  // Fall through to the page component\n  return new Response(null, { status: 404 });\n}"
        },
        {
          "id": "wordpress",
          "label": "WordPress",
          "language": "php",
          "filename": "functions.php",
          "code": "<?php\n// Mechanism 1: respond to Accept: text/markdown on the same URL\nadd_action('template_redirect', function () {\n    if (!is_singular()) return;\n    $accept = $_SERVER['HTTP_ACCEPT'] ?? '';\n    if (strpos($accept, 'text/markdown') === false) return;\n    header('Content-Type: text/markdown; charset=utf-8');\n    header('Vary: Accept');\n    $post = get_queried_object();\n    echo \"# \" . get_the_title($post) . \"\\n\\n\";\n    echo wp_strip_all_tags(apply_filters('the_content', $post->post_content));\n    exit;\n});"
        },
        {
          "id": "static",
          "label": "Hugo / Jekyll / Astro",
          "language": "txt",
          "filename": "static/page.md",
          "code": "# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in <head>:\n#   <link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        }
      ]
    }
  ]
}

Use our API to get this programmatically (coming soon)

This JSON is for internal use — unlike the Markdown and llms.txt files, it's not meant to be uploaded to your site. Save it as a baseline to track your score over time, share it with your dev team, or integrate it into your CI/CD pipeline.

Share your results

Twitter LinkedIn

Embed your badge

Add this badge to your site. It updates automatically as your AI-readiness score changes.

AgentReady.md score for mcpdir.net
Script Recommended
<script src="https://agentready.md/badge.js" data-id="5c2f89b5-8355-4fcc-b327-fdb901fc1cc8" data-domain="mcpdir.net"></script>
Markdown
[![AgentReady.md score for mcpdir.net](https://agentready.md/badge/mcpdir.net.svg)](https://agentready.md/r/5c2f89b5-8355-4fcc-b327-fdb901fc1cc8)

Coming soon: Full Domain Analysis

Crawl your entire domain, generate llms.txt, and monitor your AI-readiness score over time. Join the waitlist to be notified.

You're on the list! We'll notify you when it launches.