NomaCMS MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NOMA_API_KEY | Yes | API key from User settings → API keys | |
| NOMA_PROJECT_ID | Yes | Your project's UUID |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_projectA | Get information about the current Noma project (name, uuid, default_locale, locales, etc.) |
| add_project_localeA | Add a locale code (e.g. tr, es) to the project. Requires admin API ability. Codes are lowercased. Call when setting up a multilingual site before creating translated content. |
| set_default_project_localeA | Set the project's default locale. Adds the locale to the list if it was missing. Requires admin API ability. |
| list_collectionsA | List all collections in the project |
| get_collectionA | Get a single collection with its full field schema by slug |
| create_collectionA | Create a new collection. Optionally include field definitions to create the collection with its full schema in a single request. |
| update_collectionC | Update the name and slug of an existing collection |
| reorder_collectionsB | Update the display order of collections |
| create_fieldB | Add a new field to a collection |
| update_fieldB | Update an existing field on a collection |
| reorder_fieldsB | Update the display order of fields within a collection |
| list_entriesB | List content entries for a collection with advanced filtering, sorting, and pagination. Use the 'where' parameter for powerful queries. Read the 'query-reference' resource for full documentation on operators and examples. |
| get_entryA | Get a single content entry by UUID. Response includes uuid, locale, published_at, and a |
| create_entryB | Create a new content entry in a collection |
| update_entryA | Replace an existing content entry (HTTP PUT). Sends the full |
| patch_entryA | Partially update a content entry (HTTP PATCH). Only include fields you want to change (e.g. relations, one field). Saves NEVER change the publish state — call |
| publish_entryA | Mint a new immutable version from the entry's current draft and make it the live published version. After this call, state=published reads from the public API will return the new snapshot and |
| unpublish_entryA | Clear the live published pointer for an entry. The entry becomes invisible under state=published in the public API, but all historical versions are retained and still accessible via |
| delete_entryA | Soft-delete a content entry (moves to trash). Can be restored from the admin panel. |
| link_entry_translationA | Merge two entries in the same collection into one translation group (same as dashboard “link translation”). Both entries must exist, belong to this collection, and have different locales. There is no unlink via API — use the dashboard if you need to split a group. Requires an API key with update ability. |
| bulk_create_entriesA | Create multiple content entries atomically. If one item fails, the whole request is rolled back. |
| bulk_update_entriesA | Update multiple content entries atomically by UUID. If one item fails, all updates are rolled back. Saves never change publish state — call |
| bulk_delete_entriesA | Delete multiple content entries atomically by UUID. If one delete fails, no entries are deleted. |
| list_entry_versionsA | List all published versions for a content entry (newest first). Each version is an immutable snapshot taken at publish time. Response includes version_number, label, description, published_at, created_by, and is_current_published for each version. |
| get_entry_versionA | Fetch a single version's metadata and raw snapshot payload. The snapshot contains the saved field values in restoration format; for API-rendered content use |
| revert_entry_versionA | Restore the draft to a previous version's snapshot and publish it as a new version. The current unpublished draft is replaced. Returns the new version number. |
| update_entry_version_labelA | Update a version's editable label and/or description. The snapshot payload itself is immutable. |
| list_assetsC | List assets in the project with optional pagination. |
| get_assetA | Get an asset by its UUID or by filename. |
| upload_assetB | Upload a local file as an asset. Provide the absolute file path. |
| bulk_upload_assetsA | Upload multiple local files as assets atomically. If one upload fails, all uploads are rolled back. |
| bulk_update_asset_metadataA | Update metadata for multiple assets atomically by UUID. If one item fails, all updates are rolled back. |
| delete_assetB | Delete an asset by UUID |
| list_webhooksA | List all webhooks configured for the current project |
| get_webhookB | Get a webhook by UUID |
| create_webhookC | Create a webhook for content and auth events |
| update_webhookC | Update a webhook by UUID |
| delete_webhookB | Delete a webhook by UUID |
| list_webhook_logsB | List delivery logs for a webhook |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| field-types | Complete reference of all 16 Noma field types, their options, validations, and common patterns. Read this before creating fields. |
| collections-guide | Guide for working with Noma collections — properties, singletons, reserved slugs, and best practices. |
| query-reference | Complete reference for querying content entries — where filters, operators, OR groups, relation filtering, sorting, pagination, and examples. Read this before building complex queries. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NomaCMS/nomacms-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server