# allcams.fm MCP server

> Live webcam rooms from six platforms as tools for an AI agent: who is online now, what a category or a model page says, in 41 languages. One URL, no key.

## Facts

- **Endpoint:** https://allcams.fm/api/mcp
- **Transport:** MCP Streamable HTTP, stateless, JSON responses (no SSE stream to keep open)
- **Authentication:** none — public read-only data
- **Data:** six platforms (Stripchat, Chaturbate, Cam4, LiveJasmin, BongaCams, CamSoda), one vocabulary of categories, 41 languages
- **Freshness:** who is online refreshes every 10 minutes; category and model text is the same the HTML pages show
- **Links:** every URL a tool returns is a page on this site: page_url opens the model page, watch_url opens her live room; give them to users exactly as returned
- **Registry:** fm.allcams/cams — https://registry.modelcontextprotocol.io/v0.1/servers/fm.allcams%2Fcams/versions/1.0.0
- **Audience:** adult content (18+); the site and every link it returns are for adults only

## Connect a client

### Claude Code

```bash
claude mcp add --transport http allcams https://allcams.fm/api/mcp
```

### Claude.ai / Claude Desktop

```
Settings → Connectors → Add custom connector → URL: https://allcams.fm/api/mcp (no authentication)
```

### Cursor

```json
{
  "mcpServers": {
    "allcams": { "url": "https://allcams.fm/api/mcp" }
  }
}
```

### Any JSON-RPC client

```bash
curl -s https://allcams.fm/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

## Tools (5)

### `site_overview` — Site overview

What the site is, key facts, menu sections and languages — the llms.txt as text.

No parameters.

Returns: markdown text.

### `list_categories` — List categories

Every category page of one language with its slug and one-line description.

| parameter | type | meaning |
|---|---|---|
| `language` | string, default "en" | two-letter language code, e.g. en, de, ja |

Returns: markdown text; use the slugs in get_category and list_online.

### `get_category` — Get category

One category page: text, which platforms run it, how many models are online, related categories.

| parameter | type | meaning |
|---|---|---|
| `category` | string | category slug from list_categories, e.g. asian |
| `language` | string, default "en" | language code |

Returns: markdown text — the same the site serves at /<lang>/<slug>.md.

### `get_model` — Get model

One model page: status (online/offline, viewers), platform, languages, statistics, tags, the sign-up link.

| parameter | type | meaning |
|---|---|---|
| `nickname` | string | exact nickname, case-sensitive |
| `language` | string, default "en" | language code |

Returns: markdown text — the same the site serves at /<lang>/model/<nick>.md.

### `list_online` — Who is online

Models live right now, most viewers first; refreshed every 10 minutes.

| parameter | type | meaning |
|---|---|---|
| `language` | string, default "en" | language code |
| `category` | string, optional | category slug to narrow the list |
| `nickname` | string, optional | find one model by nickname |
| `limit` | integer 1–100, default 20 | rows per page |
| `page` | integer, default 1 | page number |

Returns: JSON: models[] with nikname, sex, viewers, is_online, avatar, page_url, watch_url.

## Resources

- `site://llms.txt` — Site index for LLMs (text/plain)

## A typical session

1. `site_overview` — what the site is and which languages exist.
2. `list_categories("de")` — the exact slugs of that language.
3. `list_online(language="de", category="asian", limit=5)` — who is live now, most viewers first.
4. `get_model("<nickname>", "de")` — her page; hand the user `page_url` or `watch_url` as returned.

## Errors and limits

- A wrong language, slug or nickname returns a text hint naming the tool that lists the valid values; nothing raises.
- `limit` is capped at 100 and `page` at 50.
- Opening the endpoint in a browser redirects here; the endpoint itself speaks JSON-RPC over POST.

## Other machine-readable surfaces

- `/llms.txt` — curated overview for LLMs: what the site is, key facts, menu sections
- `/<lang>/llms.txt` — every category page of one language, e.g. /en/llms.txt
- `/<lang>/llms-full.txt` — the full text of one language in one file
- `/*.md` — markdown twin of any page: append .md to its URL (/en/asian.md, /en/model/<nick>.md)
- `robots.txt` — Content-Signal: ai-train=yes, search=yes, ai-input=yes

## Contact

Questions and integrations: the contact page in the site footer. Server: https://allcams.fm/api/mcp.
