MCP server
This site runs a public Model Context Protocol (MCP) server at https://oxphp.dev/mcp. Point a coding agent at it and it can read the same documentation you're reading now — page slugs, full page bodies, and the environment variable reference — instead of guessing at API names or working from stale training data.
Connect
The endpoint speaks Streamable HTTP: a single POST /mcp, no stdio transport. Most clients only need the URL.
claude mcp add --transport http oxphp-docs https://oxphp.dev/mcpAny client that reads an mcpServers block — Claude Desktop, Cursor, and others — accepts the same shape:
{
"mcpServers": {
"oxphp-docs": {
"type": "http",
"url": "https://oxphp.dev/mcp"
}
}
}Paste this into an agent that can edit its own MCP configuration, and it will add the server itself:
Add an MCP server named "oxphp-docs" to your configuration: transport HTTP
(Streamable HTTP), URL https://oxphp.dev/mcp, no authentication. It is a
public, read-only documentation server for OxPHP with three tools —
list_docs, read_doc and list_config. Use it whenever a question touches
OxPHP documentation or the name or default value of an environment
variable, instead of answering from memory.This does not work everywhere. Plenty of agents can use an MCP server but cannot add one to their own configuration from a chat message — some say so outright, and some answer that they did it while nothing appears in their tool list.
Tools
Three tools, all read-only:
| Tool | Parameters | Description |
|---|---|---|
list_docs |
locale (optional, default en) |
List every OxPHP documentation page: slug, title and description. Call this first to learn the slugs read_doc accepts. |
read_doc |
slug (required), locale (optional, default en) |
Return the full Markdown of an OxPHP documentation page by slug, with in-document links rewritten to absolute site URLs. |
list_config |
locale (optional, default en) |
List every OxPHP environment variable with its default value and description, grouped by category. Use this instead of guessing configuration keys. |
locale accepts en, ru, zh, fr, pl or ja; any other value falls back to en. slug is the exact string a list_docs entry reports, for example getting-started/quick-start.
read_doc skips the index footer that this page's own .md twin carries — call list_docs for the rest of the corpus instead.
Read-only and anonymous
The server never writes anything and never calls a model of its own — it only serves the Markdown and configuration data this site already publishes. It needs no API key and no login: every request is anonymous. A session holds nothing but the protocol handshake, is tied to no identity, and is dropped 15 minutes after its last call.
Limits
Requests are capped per IP address: 120 calls every 5 minutes, and 2,000 per day. A typical agent session — a list_docs followed by a handful of read_doc calls — uses a fraction of that. Past the limit, a call gets back an error instead of a result until the window resets.