nuzur

by Unknown

Recommended SSE
892 downloads
Not rated
Website

About

nuzur is a model-first database platform for MySQL and PostgreSQL. The MCP server lets any AI assistant or agent (Claude, Cursor, Gemini, or anything else that speaks MCP) design your schema, query your data, generate mi

Details

Author
Unknown
Downloads
892
Transport
SSE
Categories
Database, Infrastructure

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name nuzur
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

addCreateRecord

Append a CREATE-record data change to a DRAFT change request. Provide the entity identifier and values keyed by field IDENTIFIER (native values — the server resolves field UUIDs and stringifies). Include a generated uuid value for the primary key when the entity needs one; when a child references a parent created in the same CR, use that parent's generated uuid as the FK value and add the parent first. Pass an optional changeId (a UUID) to make retries idempotent — retrying with the same changeId after a timeout is a no-op instead of a double-add. To append several records at once prefer addCreateRecords. Returns { change_request_uuid, review_status, data_change_count, added } — 'added' echoes the resolved entity/field uuids, the data_change_uuid, and stringified values so you can verify resolution.

addCreateRecords

Append MANY CREATE-record data changes to a DRAFT change request in a SINGLE call (one change-request write instead of one round trip per record). Provide records: a list of { entityIdentifier, values (keyed by field identifier, native values), optional changeId }. Order parents before the children that reference them; a child can use a parent's generated uuid (set earlier in the list) as its FK value. Each record's changeId makes that record's append idempotent. Returns { change_request_uuid, review_status, data_change_count, added_count, deduped_count, added[] }.

addDeleteRecord

Append a DELETE-record data change to a DRAFT change request. Provide the entity identifier and keys (primary-key field values identifying the row), keyed by field IDENTIFIER. Returns the scoped append echo.

addEntity

Add a new entity (table) to a draft project version, optionally with initial fields and indexes. Reference it by identifier; the server mints all UUIDs. Returns { version, entity } — the created, server-normalized entity (diff it against your input to see what the server generated/coerced). type: 1=standalone (default), 2=dependent/embedded.

addEnum

Add a new enum to a draft project version. Provide the identifier and staticValues (convention: first value is 'invalid' with no numericValue, then real values 1,2,3...). The server mints the enum UUID. Returns { version, enum } — read the enum's uuid from the echo to reference it from an enum-typed field (type 22, typeConfig {"enum":{"enum_uuid":"..."}}).

addField

Add a field to an entity in a draft project version. Provide the entity identifier and a compact field spec (identifier, type code, optional required/key/unique/description/typeConfig); the server mints the field UUID. Returns { version, entity } — the affected, server-normalized entity. See nuzur://reference/schema-modeling for field type codes.

addIndex

Add an index to an entity. Provide the entity identifier and an index spec (identifier, type: 1=INDEX/2=PRIMARY/3=UNIQUE/4=FULLTEXT, and the fields by identifier). The server resolves field identifiers to UUIDs. Returns { version, entity } — the affected, server-normalized entity.

addRelationship

Add a foreign-key relationship. Provide the child (fromEntity/fromField holding the FK) and parent (toEntity/toField holding the PK) by identifier; the server resolves UUIDs and sets fields_generated on the from side. cardinality: 1=one-to-one (default), 2=one-to-many. Returns { version, relationship, affected } — the persisted relationship (with resolved from/to endpoint uuids) plus a note that the child entity may have a generated FK field (getEntity to inspect).

addUpdateRecord

Append an UPDATE-record data change to a DRAFT change request. Provide the entity identifier, keys (primary-key field values that identify the row), and set (new values); optionally current (existing values) for diffing. All keyed by field IDENTIFIER, native values. Returns the scoped append echo.

autoLayoutProjectVersion

Re-run the automatic board layout for a draft project version: related entities are grouped into left-to-right clusters with no overlaps, like the editor's auto-layout button. Use after bulk-adding entities and relationships so the diagram reads well. Repositions ALL entities — any manual placement is replaced. Returns { version, laidOutEntities }.

createAutomation

Create an automation: when an approved change request applies a matching data change (entity + operation, optionally field conditions), nuzur POSTs a signed JSON payload to the webhook URL. Conditions are a list of {fieldUuid, changedTo} combined with conditionOperator 'and' (all must hold, default) or 'or' (any one suffices); for enum fields changedTo is the enum's NUMERIC value as a string (e.g. '4'). Delivery is at-least-once with retries — receivers must verify the X-Nuzur-Signature header (hex HMAC-SHA256 of the raw body, 'sha256=' prefix) and dedupe on event_uuid. Returns the signing secret ONCE; it cannot be retrieved later. URLs must be https and public. Reference entities/fields by UUID from the published schema (getProjectVersionLean).

createChangeRequest

Create a new change request for a project version. Use top-level changeType 1 for project DATA changes (2 is for schema/version). Target the PUBLISHED version (review_status 5), never a draft. You can pass an initial dataChanges list here, but for building up records prefer creating the CR with an empty dataChanges list and then using the granular tools addCreateRecord / addCreateRecords (batch) / addUpdateRecord / addDeleteRecord — they reference the entity and fields by IDENTIFIER, resolve UUIDs and stringify values server-side, and append records without re-sending the whole list (addCreateRecords appends many in one call). If you do pass dataChanges here: per-item changeType is 1=update / 2=create / 3=delete, all field values are strings (enums as integer-strings, JSON fields as JSON strings), and parents go before children. See nuzur://reference/data-change-requests.

createProject

Create a new project within a team (the authenticated user must be an admin or developer of that team). Provide teamUuid and name (optional description). The server sets the caller as owner, defaults access to inherit from the team, and creates an initial empty DRAFT project version. Returns the created project including its UUID. Note: Starter plans are limited to 3 active projects.

createProjectVersionDraft

Create a new project version draft based on an existing version or starting empty. Drafts allow project_version (schema) changes to be made and set created_by_uuid to you. Passing basedOnProjectVersionUuid copies the entire schema from that version — this is also the recovery trick for a draft that became invisible. Returns a compact ack { uuid, project_uuid, identifier, version, review_status, status, counts } — call getProjectVersionLean when you need the schema.

createTeam

Create a new team owned by the authenticated user, who is added as its admin. Provide a name; the server provisions default dev/prod environments. Returns the created team including its UUID (use it with createProject).

deleteAutomation

Delete an automation by UUID (also removes its signing secret). Past delivery events are kept for audit until retention purges them. Irreversible — prefer updateAutomation with enabled=false to pause.

deleteEntity

Delete an entity from a draft project version by identifier. Irreversible within the draft. Returns { version, deleted, affected } — affected lists any relationships left orphaned (still referencing the deleted entity) so you can clean them up.

deleteEnum

Delete an enum from a draft project version by identifier. Returns { version, deleted, affected } — affected lists enum-typed fields that still reference the deleted enum so you can update or remove them.

deleteField

Delete a field from an entity by identifier. Returns { version, entity } — the affected entity with the field removed.

deleteIndex

Delete an index from an entity by identifier. Returns { version, entity } — the affected entity with the index removed.

deleteRelationship

Delete a relationship from a draft project version by identifier. Returns { version, deleted }.

describeExtensionConfig

Describe the configuration a generator extension (e.g. go-code-gen) needs to run against a project version. Returns a JSON schema: each config field's identifier, type, whether it's required/multiple, and — for uuid/enum fields — the concrete allowed values (entity/connection/store UUIDs and enum options) so you never guess a UUID. Also returns the last-used config and an `execution` block. NOTE: this server cannot RUN the extension (code generation writes files to the user's local machine); use the returned config with the local nuzur CLI (`nuzur-cli run-extension --config …`). Pass projectUuid, projectVersionUuid, and extensionIdentifier.

discardProjectVersionDraft

Discard/delete a draft project version that has not been approved or published. This is irreversible. Returns a compact ack (uuid, identifier, version, review_status, counts).

getAutomation

Fetch one automation by UUID, including its condition and action config (the signing secret is never returned — it is shown once at creation only).

getAutomationEvent

Fetch one automation delivery event by UUID including its frozen payload — the exact JSON that is POSTed to the receiver (plus event_uuid/sent_at added at delivery time).

getChangeRequest

Fetch the full details of a change request by UUID, including its status, data changes, and review status.

getEntity

Fetch a single entity (its fields, type_config/indexes) from a project version by identifier, in lean form. Lets you inspect one table without pulling the whole model.

getEnum

Fetch a single enum (its static values) from a project version by identifier. Returns { version, enum }.

getProjectVersion

Fetch the full project version (schema, entities, fields, enums) for a given project version UUID. Prefer getProjectVersionLean — the full form emits every type_config variant on every field and is much larger.

getProjectVersionLean

Fetch a project version (schema, entities, fields, enums, relationships) in a compact form: each field's type_config is collapsed to the single sub-key matching its type, and audit/empty noise is stripped. Much smaller than getProjectVersion (which emits every type_config variant on every field) and fits inline. Prefer this for reading or verifying a schema. For decoding field type integer codes, read the nuzur://reference/schema-modeling resource.

getTeam

Fetch full details for a specific team, including its connections. Use this after listTeamsForUser to get connection UUIDs needed for queryProjectData.

issueProvisioningToken

Mint a short-lived (~15 min), single-use provisioning token so a freshly provisioned server can pair its nuzur local agent headlessly (no interactive login) via `nuzur-cli agent pair --provisioning-token <t>`. The returned token is SECRET material that grants one-time agent pairing to the account — ALWAYS confirm with the user before calling this tool. Optionally pass projectUuid to scope the token to a project. Returns { provisioning_token, expires_at }.

listAutomationEvents

List an automation's delivery log (lean — frozen payloads excluded; use getAutomationEvent for one payload). Each event shows status (pending / delivering / delivered / failed / dead), attempts, next_attempt_at, and last_error. Optional status filter and pagination.

listAutomations

List the automations of a project (lean: no payloads). An automation fires a signed webhook when an approved change request touching its watched entity is applied — never on raw agent writes. Returns uuid, name, entity_uuid, operation, condition, action_config, enabled, and status (active / needs_attention / disabled).

listDeploymentRevisions

List one deployment's production history (newest first) — one revision per (re)deploy, so you can see what changed over time and diff a broken deploy against the last working one. Each revision carries the project version, cli version, image tag, deploy time, the provider/server/database/codegen config that shipped, and `status` (in_progress | active | superseded | failed) with a `status_message` — which for an in-flight deploy names the phase underway ("bootstrapping the server", "waiting for the agent to connect", "applying the schema to the database") and for a failed one carries the error. Pass deploymentUuid from listDeployments.

listDeployments

List the authenticated user's deployments (apps + databases launched with `nuzur-cli deploy` on their servers), newest first. Each entry pairs the deployment (identity: host, identifier, project, status) with the revision describing its CURRENT state — provider/region, server ports + URLs, database engine/location, the go-code-gen config (api/auth/custom), the deployed project version, cli version and image tag. Use it to answer "is it up, what's running, and where". Note: `active_revision` is the ACTIVE revision, but for a deployment that never completed one (a first deploy still running, or one that failed) it falls back to the latest attempt — check its `status` (in_progress | active | superseded | failed) and `status_message`. Includes destroyed deployments (kept as history).

listLocalAgents

List all local agents registered under the authenticated user's account. Returns agent metadata (UUID, status, machine name, OS, CLI version) and configured connections.

listProjectVersions

List all versions of a given project. Returns version metadata (UUID, identifier, review status, created_by_uuid, version) without the full schema payload. Use it to pick a version, to read the current `version` immediately before calling updateProjectVersion (optimistic concurrency), and to confirm a draft is still visible to you.

listProjectsForUser

List all Nuzur projects accessible to the authenticated user, optionally filtered by team.

listTeamsForUser

List all teams the authenticated user belongs to. Returns team UUID, name, and status. Use the team UUID when calling queryProjectData or other tools that require a team context.

queryProjectData

Execute a raw SQL SELECT query against a project's database via the Nuzur connection manager (SELECT only — mutating statements are rejected). Returns results as JSON. In the common case pass only projectUuid and query: the connection (team/connection/store or local-agent) and schema default from the project's configured connection. Pass the connection parameters explicitly only to override or when the project has no single configured connection. Target the published version; use this to resolve foreign keys and de-duplicate before building a change request. Columns marked as PII come back masked (e.g. `j***@example.com`) unless you have been granted raw access, and are listed in the response's `masked_columns`; entities restricted by visibility are not readable at all and the query is rejected.

removeDataChange

Remove a pending data change from a DRAFT change request by its zero-based index (to fix a mistake without re-sending the whole list). Returns { change_request_uuid, review_status, data_change_count, removed_index }.

retryAutomationEvent

Requeue a failed or dead automation event for a fresh delivery cycle (attempts reset, picked up by the dispatcher within seconds). The frozen payload is unchanged; only sent_at will differ.

rotateAutomationSecret

Generate a fresh HMAC signing secret for an automation and return it ONCE. The old secret stops signing new deliveries within about a minute (no dual-secret overlap in v1) — update the receiver's configuration immediately after rotating. Use when a secret was lost or may have leaked; the automation, its config, and its delivery history are untouched.

searchProjectsByName

Search for Nuzur projects by name (case-insensitive substring match). Returns matching projects for the authenticated user.

sendProjectVersionForReview

Submit a draft project version for review by a reviewer, creating a review-ready project version change request. Do this only once the schema is complete and verified. Returns a compact ack { uuid, project_uuid, identifier, version, review_status, status, counts } — not the whole schema — so it never overflows on large models.

submitChangeRequestForReview

Submit a draft change request for review by setting its status to IN_REVIEW. Call this once the user is satisfied with the data changes and wants a Nuzur reviewer to approve them. Once submitted the CR is immutable — a mistake found after submission requires a brand-new CR. Returns a lean confirmation { change_request_uuid, review_status, data_change_count, submitted }.

testAutomation

Send a synthetic, signed test delivery to the automation's webhook right now (payload shaped exactly like a real event, with "test": true and sample field values). No outbox row is written. Use it to build and verify a receiver before any real change request exists. Returns success, HTTP status code, and a response snippet.

updateAutomation

Update an automation by UUID. Only the provided attributes change (name, operation, entityUuid, conditions [replaces the whole list, with conditionOperator 'and'/'or'], clearCondition, url, headers, enabled, reactivate). Use enabled=false to pause without deleting; reactivate=true to clear a needs_attention status after fixing the cause. The signing secret is never rotated by this tool — use rotateAutomationSecret.

updateChangeRequest

Update the title, description, or data changes of a DRAFT change request (only DRAFT CRs are editable). Only the fields you provide are updated; omitted fields are left unchanged. Providing dataChanges REPLACES the entire existing list, not a partial merge.

updateEntity

Update attributes of an existing entity: description and/or canvas position (renderX/renderY). Only the attributes you supply change; fields, indexes, and relationships are preserved. Repositioning keeps the card's width/height/collapsed and is overlap-validated — a render:overlap warning is echoed in affected if the moved card collides (the write still succeeds). Returns { version, entity }.

updateEnum

Update an enum: rename it and/or replace its staticValues (providing staticValues REPLACES the whole list — include the values you want to keep). Returns { version, enum } — the server-normalized enum.

updateField

Update attributes of an existing field (description, required, key, unique, deprecated, type/typeConfig, or rename). Only the attributes you supply change; everything else is preserved. Returns { version, entity } — the affected, server-normalized entity.

updateProjectVersion

Replace an entire draft project version. Prefer the granular tools (addEntity, addField, updateField, deleteField, addIndex, deleteIndex, addRelationship, deleteEntity/deleteRelationship) for ordinary edits — they change one piece server-side without you re-sending (or re-transcribing) the whole ~30KB payload. Use this only for a wholesale replace. It is a FULL REPLACE, not a merge — send every entity, enum, and relationship or you drop what you omit. Include the version-level created_by_uuid (= your user uuid) and the current `version` value (read it via listProjectVersions immediately before calling, since it auto-advances). A getProjectVersionLean result round-trips directly (scalar type_configs come back as "", the shape this tool expects). Returns a compact ack { uuid, project_uuid, identifier, version, review_status, status, counts } after the write — call getProjectVersionLean if you need to inspect the persisted schema. See nuzur://reference/schema-modeling for object shapes.

updateRelationship

Update an existing relationship in a draft project version by identifier. Only the attributes you supply change: newIdentifier (rename), cardinality (1=one-to-one, 2=one-to-many), description, useForeignKey. To re-point an endpoint, supply fromEntity+fromField and/or toEntity+toField (by identifier); the server rebuilds that endpoint's resolved uuids. Safe to call concurrently. Returns { version, relationship, affected }.

uploadFieldFile

Upload a file (image, video, audio, or generic file) to an entity field whose type is file/image/video/audio and whose storage type is OBJECT_STORE. The product service uses the field configuration to determine the object store credentials and path. Provide the file content encoded as base64. Returns a signed URL for the uploaded object.

withdrawProjectVersionFromReview

Withdraw a project version from active review, putting it back into draft status. Returns a compact ack (uuid, identifier, version, review_status, counts).

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "nuzur": {
            "nuzur": {
                "command": "npx",
                "args": [
                    "-y",
                    "mcp-remote",
                    "https://ccmcp.nuzur.com"
                ],
                "url": "https://ccmcp.nuzur.com"
            }
        }
    }
}

McpServers

{
    "nuzur": {
        "command": "npx",
        "args": [
            "-y",
            "mcp-remote",
            "https://ccmcp.nuzur.com"
        ],
        "url": "https://ccmcp.nuzur.com"
    }
}

nuzur is a model-first database platform for MySQL and PostgreSQL. The MCP server lets any AI assistant or agent (Claude, Cursor, Gemini, or anything else that speaks MCP) design your schema, query your data, generate migrations and a full gRPC/rest API, and deploy it, without ever touching production directly.

Reads are direct and read-only. Every write (schema changes, data changes) becomes a change request you review and approve in nuzur before anything is applied. The agent never holds the pen.

Tools include addEntity, addField, addRelationship, addIndex, queryProjectData, createChangeRequest, submitChangeRequestForReview, and more.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.