datuma_k

io.github.marthvonPublished by GitHub account marthvonv1.0.0Updated Oct 24, 2026

Query, validate, preview, and generate source from *.dtct data contracts and *.ngin templates.

VerifiedSTDIODesktop onlyFiles & StorageDeveloper Tools

Overview

AI-generated overview

A local MCP server that lets an assistant query, validate, preview and generate source from datuma_k data contracts and templates in a project.

What you can do
List project directories and contract/template paths, optionally rooted at a given directory. Query the contract catalog by trait, model, field, attribute or type. Validate contracts and templates, requiring the project's keyword file. Preview a generation plan without writing anything. Generate source from templates, writing generated spans. Get advice on when to use ngin templates versus handwritten code, and infer patterns such as traits, widgets, association notes and aliases. Read bundled language and practice resources for dtct, ngin and standards.
When to use it
Use it when working in a repository that uses datuma_k data contracts and ngin templates and you want an assistant to inspect the catalog, check contracts, dry-run generation, or scaffold new models and fields.
Requirements
Runs locally over stdio via npx from the npm package, so Node.js is needed. The datuma_k binary must be installed and on PATH, or its absolute path supplied in the DATUMA_K environment variable. The process working directory should be the datuma_k project directory containing the .env file, or a root must be passed on each tool call.
Before you install
The generate tool writes generated source into the project, so review previews before running it. The server reads the project's .env and keyword files, so point it only at repositories you are willing to expose to the assistant. It relies on a separately installed binary whose behavior it does not control.

Installation

In SourceWeft

  1. Open datuma_k in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

datuma_k MCP

stdio MCP server for agents using the installed datuma_k binary in an app repo. It does not link the compiler crate. Set DATUMA_K to the binary if it is not on PATH.

Install

Published to npm as @marthvon/datuma-k-mcp and to the MCP Registry as io.github.marthvon/datuma-k.

Cursor / Claude example (mcp.json):

json
{  "mcpServers": {    "datuma_k": {      "command": "npx",      "args": ["-y", "@marthvon/datuma-k-mcp"]    }  }}

datuma_k must be on PATH. If it is not, point DATUMA_K at the binary:

json
{  "mcpServers": {    "datuma_k": {      "command": "npx",      "args": ["-y", "@marthvon/datuma-k-mcp"],      "env": {        "DATUMA_K": "/ABS/PATH/TO/datuma_k/target/release/datuma_k"      }    }  }}

From source

bash
cd mcpnpm installnpm run build

Then use "command": "node" with "args": ["/ABS/PATH/TO/datuma_k/mcp/dist/index.js"].

The process cwd should be the datuma_k project (the directory with .env), or pass root on each tool call.

Tools

ToolBinaryNotes
list_project(files + .env)Directories and contract/template paths
query_contractsdatuma_k catalogOptional trait / model / field / attribute / type
validatedatuma_k checkParse + data/keywords.md required
previewdatuma_k previewPlan without writing
generatedatuma_k runWrites generated spans
advise_ngin(local rules)When to use ngin vs handwritten code
infer_patternscatalog + keywords.mdTraits, widgets, association review notes, sync risks, aliases

Resources

  • datuma://language/dtct
  • datuma://language/ngin
  • datuma://language/standards
  • datuma://docs/keywords
  • datuma://docs/practices
  • datuma://docs/when-ngin

Prompts

add-model, add-field, scaffold-ngin, should-use-ngin, infer-contract-patterns

Tests

bash
npm test

Publishing

Two registries, in this order. npm hosts the tarball; the MCP Registry hosts only metadata and verifies it against the published npm package, so npm must go first or the second publish fails with Registry validation failed for package.

NameWhereSet in
@marthvon/datuma-k-mcpnpm packagepackage.json name
io.github.marthvon/datuma-kMCP Registry serverpackage.json mcpName and server.json name — these two must match, or the registry rejects the publish

The io.github.marthvon/ prefix is not cosmetic: GitHub device-flow auth only grants that namespace. A different prefix needs DNS or HTTP auth.

One-time setup

bash
brew install mcp-publisher            # or a binary from the registry releases pagenpm login                             # npm account, scope @marthvon

npm requires 2FA to publish. If the account does not have it, npm publish fails with 403 ... Two-factor authentication or granular access token with bypass 2fa enabled is required, before it ever looks at the tarball. Check with npm profile get; enable with npm profile enable-2fa auth-and-writes or on npmjs.com, and keep the recovery codes.

Release

Bump the version in three places — the registry rejects a version it has already seen, and a mismatch between the npm package version and server.json packages[0].version fails verification:

  • package.json → version
  • server.json → version
  • server.json → packages[0].version

Then:

bash
npm test                              # tsc + node --testmcp-publisher validate                # checks server.json against the live registry, publishes nothingnpm publish --otp=123456              # prepublishOnly runs the build; drop --otp to be promptedmcp-publisher login github            # device code → github.com/login/devicemcp-publisher publish

mcp-publisher login persists a token, so day-to-day releases are npm publish then mcp-publisher publish.

Verify:

bash
npm view @marthvon/datuma-k-mcp versioncurl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.marthvon/datuma-k"

What ships

files in package.json limits the tarball to dist, resources, and README.md. resources/ is required at runtime — server.ts resolves it as dist/../resources — so dropping it from files produces a package that installs cleanly and fails on every resource read. Confirm with npm pack --dry-run before publishing.

Troubleshooting

ErrorCause
403 ... Two-factor authentication ... is required2FA disabled on the npm account. See above.
403 ... you do not have accessThe @marthvon scope belongs to an org; confirm membership with npm org ls marthvon.
Registry validation failed for packagenpm publish did not happen yet, or mcpName in package.json does not match name in server.json.
Invalid or expired Registry JWT tokenRe-run mcp-publisher login github.
You do not have permission to publish this serverServer name does not start with io.github.<your-github-username>/.
expected length <= 100 on body.descriptionserver.json description is capped at 100 characters. The npm description is not.

Source: mcp/README.md at commit 1e55220

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts