Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
MCP server for NomaCMS. Manage collections, fields, content, assets, and webhooks via AI agents.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
NOMA_API_KEY, NOMA_PROJECT_IDValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"nomacms": {
"command": "npx",
"args": [
"-y",
"@nomacms/mcp-server"
],
"env": {
"NOMA_API_KEY": "your-value",
"NOMA_PROJECT_ID": "your-value"
}
}
}
}Run this in your terminal
claude mcp add nomacms --env NOMA_API_KEY=your-value --env NOMA_PROJECT_ID=your-value -- npx -y @nomacms/mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"nomacms": {
"command": "npx",
"args": [
"-y",
"@nomacms/mcp-server"
],
"env": {
"NOMA_API_KEY": "your-value",
"NOMA_PROJECT_ID": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"nomacms": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@nomacms/mcp-server"
],
"env": {
"NOMA_API_KEY": "your-value",
"NOMA_PROJECT_ID": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account NomaCMS, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: NOMA_API_KEY, NOMA_PROJECT_ID
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.2.2) reached the registry 4 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, yontu
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Türkçe yazı denetimi: TDK kuralları, yapay zekâ izleri, metin türüne göre üslup.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
An MCP (Model Context Protocol) server that connects AI agents like Cursor and Claude Code to your NomaCMS project. Manage collections, fields, content entries, assets, and webhooks programmatically through natural language.
NOMA_API_KEY: API key from User settings → API keys — see API key abilities.NOMA_PROJECT_ID: Your project's UUID — you can find it on the project home page or under Project settings → API AccessAdd this to your Cursor MCP settings (~/.cursor/mcp.json):
{
"mcpServers": { "nomacms": { "command": "npx", "args": ["-y", "@nomacms/mcp-server"], "env": { "NOMA_API_KEY": "your-api-key", "NOMA_PROJECT_ID": "your-project-uuid" } } } }
Add the MCP server using the Claude Code CLI:
claude mcp add nomacms \
-e NOMA_API_KEY=your-api-key \ -e NOMA_PROJECT_ID=your-project-uuid \ -- npx -y @nomacms/mcp-server
get_project — Get project information (default_locale, locales, etc.)add_project_locale — Add a locale code to the project (requires admin)set_default_project_locale — Set the default locale (requires admin)Removing locales is intentionally not exposed here (use Project settings → Localization in the NomaCMS dashboard if you must remove a locale).
list_collections — List all collectionsget_collection — Get a collection with its full field schemacreate_collection — Create a collection (with optional batch field creation)update_collection — Update a collection's name and slugreorder_collections — Reorder collectionscreate_field — Add a field to a collectionupdate_field — Update a fieldreorder_fields — Reorder fields within a collectionlist_entries — List entries with advanced filtering (where with 13 operators, OR groups, relation filtering), sorting, pagination, count, and firstget_entry — Get a single content entrycreate_entry — Create a content entryupdate_entry — Update a content entrypatch_entry — Partially update an entry (HTTP PATCH; merge only the fields you send)publish_entry — Publish the draft as a new immutable version (update)unpublish_entry — Clear the live published pointer; versions retained (update)delete_entry — Soft-delete a content entry (moves to trash)bulk_create_entries — Create multiple entries atomicallybulk_update_entries — Update multiple entries atomically by UUIDbulk_delete_entries — Delete multiple entries atomically by UUIDlink_entry_translation — Link two entries (different locales) into the same translation group (POST …/link-translation; requires update ability)list_entry_versions — List version history for an entryget_entry_version — Fetch one version by number (includes snapshot payload)revert_entry_version — Restore draft from a prior snapshot and publish (update)update_entry_version_label — Edit label/description on a version; snapshot unchanged (update)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.
Asset URLs: The API returns url, thumbnail_url, and original_url as stable links (optional ?variant=thumbnail or ?variant=original).
list_assets — List assets with paginationget_asset — Get an asset by UUID or filenameupload_asset — Upload a file as an assetbulk_upload_assets — Upload multiple files atomicallybulk_update_asset_metadata — Update metadata for multiple assets atomicallydelete_asset — Delete an assetlist_webhooks — List all webhooks for the projectget_webhook — Get a webhook by UUIDcreate_webhook — Create a webhook for content and auth events (name, url, events, sources; optional description, secret, payload, status, collection_ids)update_webhook — Update a webhook by UUID (same fields as create)delete_webhook — Delete a webhook by UUIDlist_webhook_logs — List delivery logs for a webhook (uuid; optional paginate, page)The server exposes three reference resources that AI agents can read for context:
nomacms://field-types) — Complete reference of all 16 field types, their options, validations, and common patterns.nomacms://collections-guide) — Guide for working with collections, singletons, reserved slugs, and best practices.nomacms://query-reference) — Full documentation for content queries: where filters with 13 operators, OR groups, relation filtering, sorting, pagination, and examples.Your API key needs the appropriate abilities for the tools you want to use:
| Ability | Tools |
|---|---|
read | list/get collections, entries, assets, webhooks; webhook logs |
create | create entries, upload assets, create webhooks |
update | update entries, `link_entry_translation`, update asset metadata, update webhooks |
delete | delete entries, delete assets, delete webhooks |
admin | create/update/reorder collections and fields; add/set default project locales (MCP does not expose locale removal) |
Create 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.
Each MCP entry connects to a single NomaCMS project. To work with multiple projects, add separate entries in your MCP config:
{
"mcpServers": { "nomacms-blog": { "command": "npx", "args": ["-y", "@nomacms/mcp-server"], "env": { "NOMA_API_KEY": "blog-project-api-key", "NOMA_PROJECT_ID": "blog-project-uuid" } }, "nomacms-store": { "command": "npx", "args": ["-y", "@nomacms/mcp-server"], "env": { "NOMA_API_KEY": "store-project-api-key", "NOMA_PROJECT_ID": "store-project-uuid" } } } }
MIT