{
  "markdown": "# @ojodotso/mcp-server\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server that lets an\nAI agent turn HTML into images. Live previews are free and need no account; an\noJo API key adds hosted PNG URLs and reusable templates through the user's own\naccount. Transport is local **stdio**; the API boundary is HTTP to\n`https://api.ojo.so/v1` only.\n\n## Quick start — no account needed\n\nPoint your MCP client at the package. With no API key the server starts in\n**preview-only mode**: `create_preview_link` renders HTML into a live,\nfull-resolution image preview, free and unlimited, with no oJo account.\n\n```json\n{\n  \"mcpServers\": {\n    \"ojo\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ojodotso/mcp-server\"]\n    }\n  }\n}\n```\n\n```bash\nclaude mcp add ojo -- npx -y @ojodotso/mcp-server\n```\n\n### Adding a key\n\nA key unlocks the permanent PNG URL — the thing you can put in an email, a\nsocial card or an API response — plus reusable templates. Create one at\n<https://ojo.so/dashboard/api> and pass it as `OJO_API_KEY`:\n\n```json\n{\n  \"mcpServers\": {\n    \"ojo\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@ojodotso/mcp-server\"],\n      \"env\": { \"OJO_API_KEY\": \"sk_...\" }\n    }\n  }\n}\n```\n\n```bash\nclaude mcp add ojo -e OJO_API_KEY=sk_... -- npx -y @ojodotso/mcp-server\n```\n\nWorks the same for Claude Desktop, Cursor, and Claude Code.\n\n## Tools\n\nOnly `create_preview_link` is registered without an API key; the rest talk to\nthe oJo API, so advertising them keyless would offer tools that can only fail.\n\n| Tool | Purpose | Credit | Needs a key |\n|------|---------|--------|-------------|\n| `create_preview_link` | Build a free, full-resolution `/preview` link for an HTML/Handlebars draft. | — | no |\n| `generate_image_from_html` | Render plain HTML (with inline CSS) to a PNG; returns its public URL. | 1 | yes |\n| `generate_image_from_template` | Render an existing template, optionally overriding variables via `modify`. | 1 | yes |\n| `list_templates` | List the templates available to the account. | — | yes |\n| `get_template` | Fetch one template's decoded HTML and variable defaults. | — | yes |\n| `create_template` | Create a reusable template from plain HTML/Handlebars. | — | yes |\n\n### The design loop\n\nIterate with `create_preview_link`, then render. It returns an\n`https://ojo.so/preview#draft=…` URL that renders the draft live in the browser\nthrough the **same engine as the final PNG**, at full resolution. The draft is\ngzipped into the URL *hash*, so it never reaches a server and nothing is stored\n— the link is self-contained and shareable with a human reviewer.\n\nBoth generate tools also accept `inspect: true`, which returns a 512px-wide\ndownscaled thumbnail alongside the URL. That is a confirmation that the render\nsucceeded, not a design surface — it is too small to judge layout or typography.\n\n## Guiding prompt\n\n`author_ojo_template` — teaches the Handlebars helper catalog, the **Template\nVariables** (schema/defaults) vs **Modify Payload** (per-render data) model,\nviewport conventions, and the preview-first design loop.\n\n## Configuration\n\n- `OJO_API_KEY` (optional) — your oJo API key. Without it the server runs in\n  preview-only mode; with it the full tool surface is registered.\n- `OJO_API_BASE_URL` (optional) — defaults to `https://api.ojo.so/v1`.\n- `OJO_WEB_BASE_URL` (optional) — the web app that serves `/preview` for\n  `create_preview_link`. Defaults to `https://ojo.so`; point it at a local\n  `http://localhost:3000` when developing against a self-hosted web app.\n\n## Develop\n\n```bash\npnpm install\npnpm build\npnpm test\npnpm check\n```\n",
  "bytes": 3585,
  "sha": "e16e4a8ba5f15c8e559aa16d4a0ce547e22e405ef1ed9fe45103ffacb7b8ea24",
  "repo_slug": "ojodotso/mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_so_ojo_mcp_server_3b7cb6aa/readme"
}