{
  "markdown": "# NomaCMS MCP Server\n\nAn MCP (Model Context Protocol) server that connects AI agents like [Cursor](https://cursor.com) and [Claude Code](https://claude.com/product/claude-code) to your NomaCMS project. Manage collections, fields, content entries, assets, and webhooks programmatically through natural language.\n\n## Configuration\n\n- `NOMA_API_KEY`: API key from **User settings → API keys** — see [API key abilities](#api-key-abilities).\n- `NOMA_PROJECT_ID`: Your project's UUID — you can find it on the project home page or under **Project settings → API Access**\n\n## Usage with Cursor\n\nAdd this to your Cursor MCP settings (`~/.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"nomacms\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@nomacms/mcp-server\"],\n      \"env\": {\n        \"NOMA_API_KEY\": \"your-api-key\",\n        \"NOMA_PROJECT_ID\": \"your-project-uuid\"\n      }\n    }\n  }\n}\n```\n\n## Usage with Claude Code\n\nAdd the MCP server using the Claude Code CLI:\n\n```bash\nclaude mcp add nomacms \\\n  -e NOMA_API_KEY=your-api-key \\\n  -e NOMA_PROJECT_ID=your-project-uuid \\\n  -- npx -y @nomacms/mcp-server\n```\n\n## Available Tools (39)\n\n### Project\n- `get_project` — Get project information (`default_locale`, `locales`, etc.)\n- `add_project_locale` — Add a locale code to the project (requires **admin**)\n- `set_default_project_locale` — Set the default locale (requires **admin**)\n\nRemoving locales is intentionally **not** exposed here (use **Project settings** → **Localization** in the NomaCMS dashboard if you must remove a locale).\n\n### Collections\n- `list_collections` — List all collections\n- `get_collection` — Get a collection with its full field schema\n- `create_collection` — Create a collection (with optional batch field creation)\n- `update_collection` — Update a collection's name and slug\n- `reorder_collections` — Reorder collections\n\n### Fields\n- `create_field` — Add a field to a collection\n- `update_field` — Update a field\n- `reorder_fields` — Reorder fields within a collection\n\n### Content Entries\n- `list_entries` — List entries with advanced filtering (`where` with 13 operators, OR groups, relation filtering), sorting, pagination, count, and first\n- `get_entry` — Get a single content entry\n- `create_entry` — Create a content entry\n- `update_entry` — Update a content entry\n- `patch_entry` — Partially update an entry (HTTP PATCH; merge only the fields you send)\n- `publish_entry` — Publish the draft as a new immutable version (**update**)\n- `unpublish_entry` — Clear the live published pointer; versions retained (**update**)\n- `delete_entry` — Soft-delete a content entry (moves to trash)\n- `bulk_create_entries` — Create multiple entries atomically\n- `bulk_update_entries` — Update multiple entries atomically by UUID\n- `bulk_delete_entries` — Delete multiple entries atomically by UUID\n- `link_entry_translation` — Link two entries (different locales) into the same translation group (`POST …/link-translation`; requires **update** ability)\n- `list_entry_versions` — List version history for an entry\n- `get_entry_version` — Fetch one version by number (includes snapshot payload)\n- `revert_entry_version` — Restore draft from a prior snapshot and publish (**update**)\n- `update_entry_version_label` — Edit label/description on a version; snapshot unchanged (**update**)\n\n**Content API shape:** Each entry has `uuid`, `locale`, `published_at`, and **`fields`** (custom field values). Richtext values are **markdown strings** on write; on read they are either raw markdown or rendered HTML depending on the field’s `editor.outputFormat` (`markdown` vs `html`). **Relation fields** return nested entry objects (or arrays for one-to-many) on read; on write send only the related entry’s **UUID** or **numeric id** (never the full nested object from a previous `get_entry`). `get_entry` supports `translation_locale`, `exclude`, `timestamps`, and `state` query parameters.\n\n**Asset URLs:** The API returns `url`, `thumbnail_url`, and `original_url` as stable links (optional `?variant=thumbnail` or `?variant=original`).\n\n### Assets\n- `list_assets` — List assets with pagination\n- `get_asset` — Get an asset by UUID or filename\n- `upload_asset` — Upload a file as an asset\n- `bulk_upload_assets` — Upload multiple files atomically\n- `bulk_update_asset_metadata` — Update metadata for multiple assets atomically\n- `delete_asset` — Delete an asset\n\n### Webhooks\n- `list_webhooks` — List all webhooks for the project\n- `get_webhook` — Get a webhook by UUID\n- `create_webhook` — Create a webhook for content and auth events (`name`, `url`, `events`, `sources`; optional `description`, `secret`, `payload`, `status`, `collection_ids`)\n- `update_webhook` — Update a webhook by UUID (same fields as create)\n- `delete_webhook` — Delete a webhook by UUID\n- `list_webhook_logs` — List delivery logs for a webhook (`uuid`; optional `paginate`, `page`)\n\n## Resources\n\nThe server exposes three reference resources that AI agents can read for context:\n\n- **Field Types Reference** (`nomacms://field-types`) — Complete reference of all 16 field types, their options, validations, and common patterns.\n- **Collections Guide** (`nomacms://collections-guide`) — Guide for working with collections, singletons, reserved slugs, and best practices.\n- **Query Reference** (`nomacms://query-reference`) — Full documentation for content queries: `where` filters with 13 operators, OR groups, relation filtering, sorting, pagination, and examples.\n\n## API key abilities\n\nYour API key needs the appropriate abilities for the tools you want to use:\n\n| Ability  | Tools                                                       |\n|----------|-------------------------------------------------------------|\n| `read`   | list/get collections, entries, assets, webhooks; webhook logs |\n| `create` | create entries, upload assets, create webhooks               |\n| `update` | update entries, **`link_entry_translation`**, update asset metadata, update webhooks |\n| `delete` | delete entries, delete assets, delete webhooks               |\n| `admin`  | create/update/reorder collections and fields; add/set default **project locales** (MCP does not expose locale removal) |\n\nCreate the key in the NomaCMS dashboard under **User settings → API keys**. Copy the **Project ID** from the project home page or **Project settings → API Access** when you configure this server.\n\n## Using Multiple Projects\n\nEach MCP entry connects to a single NomaCMS project. To work with multiple projects, add separate entries in your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"nomacms-blog\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@nomacms/mcp-server\"],\n      \"env\": {\n        \"NOMA_API_KEY\": \"blog-project-api-key\",\n        \"NOMA_PROJECT_ID\": \"blog-project-uuid\"\n      }\n    },\n    \"nomacms-store\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@nomacms/mcp-server\"],\n      \"env\": {\n        \"NOMA_API_KEY\": \"store-project-api-key\",\n        \"NOMA_PROJECT_ID\": \"store-project-uuid\"\n      }\n    }\n  }\n}\n```\n\n## License\n\nMIT\n",
  "bytes": 7004,
  "sha": "a53587f6f1da9d8e60c9571b0fa0a130707a47f8aaa9bfc1e3d38488d1e52887",
  "repo_slug": "nomacms/nomacms-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_nomacms_nomacms_mcp_server_14d891a8/readme"
}