# MCP Clients — directory and integration notes

> How dash-improve-my-llms 2.0 talks to MCP-aware clients (Claude Desktop,
> agentic IDEs, MCP-aware chatbots) on Dash 4.3+.

**Site index:** [https://llms.2plot.dev/llms.txt](https://llms.2plot.dev/llms.txt) — every page on this site, as Markdown.  
**Network index:** [https://2plot.dev/llms.txt](https://2plot.dev/llms.txt) — The 2plot network; start here to discover sibling sites.  
**Sibling sites:** 3 more in The 2plot network — listed in the site index above.  
**Sitemap:** https://llms.2plot.dev/sitemap.xml  


## What this audience needs

MCP clients speak JSON-RPC over Streamable HTTP. They don't browse
the rendered UI and they don't curl `/llms.txt`. They expect to call
`resources/list` to see what's available, then `resources/read` to
fetch the body of any resource by URI.

## What 2.0 registers

When `add_llms_routes(app)` runs, the MCP bridge walks
`dash.page_registry`, skips any page that has been `mark_hidden()`,
resolves each page's `LLMS_DOC` (either from a module-level attribute
or `register_page_metadata(llms_doc=...)`), and registers it as an
MCP resource with a URI of the form `llms:///<page-path>`.

Each resource carries:
- `uri` — `llms:///audiences/mcp-clients`, `llms:///analytics`, etc.
- `name` — e.g. `llms.txt for Analytics Dashboard`
- `description` — the same prose as the page's `<meta name="description">`
- `mimeType` — `text/markdown`

## What this audience does NOT get

Dash 4.3's MCP server itself exposes layouts and component metadata
live as MCP resources. This package does **not** duplicate that — it
only ships the hand-written prose. If an MCP client wants live
component data, it should use Dash's native MCP endpoints.

## Code sample — what a client sends

A minimal JSON-RPC `resources/list` looks like:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/list"
}
```

A `resources/read` for one URI:

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "resources/read",
  "params": { "uri": "llms:///audiences/mcp-clients" }
}
```

## Disabling the MCP bridge

If you want to register resources yourself or skip MCP entirely:

```python
from dash_improve_my_llms import LLMSConfig, add_llms_routes

add_llms_routes(app, LLMSConfig(register_mcp_resources=False))
```

The HTTP surfaces (`/llms.txt`, `/robots.txt`, `/sitemap.xml`) keep
working unchanged.
