---
title: "How to add a WebMCP manifest to WordPress"
url: https://hostmy.blog/docs/rankready/how-to-add-webmcp-wordpress/
date: 2026-08-24
modified: 2026-08-25
lang: en
author: "Aditya Sharma"
description: "Serve a WebMCP manifest at /.well-known/mcp.json from WordPress, verify it, and fix the nginx 403 that blocks it by default."
word_count: 839
---

# How to add a WebMCP manifest to WordPress

By the end of this page your site will serve a WebMCP manifest at `/.well-known/mcp.json`, you will have verified it returns real JSON, and you will know how to fix the server configuration that blocks it on many hosts.

## What the manifest is for

A `.well-known` path is a fixed, agreed location for machine readable metadata about a site. Anything looking for it knows where to check without crawling or guessing. WebMCP uses that convention: a manifest at a known address that describes what the site makes available to a client, rather than making the client work it out from HTML.

The value is discovery. A client that supports this fetches one predictable URL and learns something about the site immediately. If it does not support it, nothing changes and nothing breaks.

## Turn it on in RankReady

- In wp-admin, open **RankReady**.
- Go to the **AI Visibility** tab. The address ends in `tab=crawlers`.
- Open the **WebMCP** subtab, `sub=webmcp`.
- Switch the feature on and save.

No [AI provider](https://hostmy.blog/docs/rankready/choose-ai-provider-cost/) key is required. The manifest is generated from your own site, so there is no external service and no per request cost. Fill in [Brand Identity](https://hostmy.blog/docs/rankready/brand-terms-setup/) under `sub=brand` first if you have not, since your site name and description are used across RankReady's machine readable output.

![The WebMCP settings screen in the RankReady AI Visibility tab](https://hostmy.blog/wp-content/uploads/2026/08/rr-webmcp-v2-scaled.png)The WebMCP subtab controls the manifest at /.well-known/mcp.json.

## Verify it worked

Start with the status code:

`curl -sI https://your-site.com/.well-known/mcp.json`
A correct response is `HTTP/2 200` with a JSON content type. Then read the body and confirm it parses:

`curl -s https://your-site.com/.well-known/mcp.json | python3 -m json.tool | head -30`
If `json.tool` prints the document back to you, the JSON is valid. If it raises an error, you are almost certainly looking at an HTML error page rather than the manifest, so check the status code again.

Loading the URL in a browser is a reasonable quick check too, but curl is better here because the status code is the thing you actually need to see.

## The 403 you will probably hit on nginx

This is the single most common problem with this feature, and it is not something the plugin can solve.

By default, nginx blocks paths beginning with a dot. That rule exists to stop `.git`, `.env` and similar from being served, which is sensible. But `/.well-known/` starts with a dot too, so it gets caught by the same rule and returns `403`.

No WordPress plugin can override this. The request is refused by the web server before PHP ever runs, so there is nothing for RankReady to respond to.

### How to confirm that is what is happening

`curl -s -o /dev/null -w '%{http_code}n' https://your-site.com/.well-known/mcp.json`
A `403` means the server is refusing the path. A `404` means the request reached WordPress and the route was not found, which is a different problem, covered further down.

### The server fix

Add this to your nginx configuration for the site, then reload nginx:

`location ^~ /.well-known/ {
allow all;
default_type text/plain;
try_files $uri $uri/ /index.php?$args;
}`
The `^~` prefix matters. It gives this block priority over the regular expression rule that blocks dot paths, which is the whole reason the fix works. Without it, the block is added but never wins.

If you use a control panel, this goes in the custom nginx configuration section for the site rather than in a file you edit directly, since panel generated configuration is usually overwritten. If your host manages nginx for you and gives you no way in, this is a support ticket. Send them the block above and ask for `/.well-known/` to be allowed. It is a standard request, since certificate issuance uses the same directory.

On Apache with the usual WordPress configuration, this problem generally does not arise.

## If you get a 404 instead

A 404 means the request reached WordPress but no route answered it:

- Confirm the WebMCP feature is switched on and saved.
- Go to **Settings, Permalinks** and click Save Changes. Nothing needs to be changed. Saving rebuilds the rewrite rules.
- Clear any page cache or CDN in front of the site, since a cached 404 survives the fix.
- Retry the curl command.

Endpoints can also 404 on some stacks, LiteSpeed with [Rank Math](https://hostmy.blog/docs/rankready/rankready-with-yoast-rankmath-aioseo/) being the reported case, when rewrite rules are intercepted before RankReady sees them. Version 1.3.0 added a raw request path fallback for that, so confirm you are on 1.3.0 or later before digging further.

## What to expect afterwards

Publishing a manifest makes your site discoverable to clients that look for one. It does not oblige anything to fetch it, and a request in your logs proves the file was fetched, not that anything was done with it. This is a low cost, correct thing to serve. Treat it as plumbing rather than as a result.

## Related settings

WebMCP pairs naturally with the other machine readable endpoints in the same tab: `/llms.txt` for an index of the site, `.md` URLs for individual posts as clean Markdown, and the [Open Knowledge Format](https://hostmy.blog/docs/rankready/what-is-open-knowledge-format/) bundle at `/okf/`. Each is independent, so you can enable whichever suits your site.