Columna MCP server — a library of Manifolds exposed to AI agents over MCP, one contract (the four moods as data).
Project description
columna-server
The Columna MCP server (ADR-032 D8): a library of Manifolds exposed to AI agents over MCP, with one contract — every tool returns the same outcome/disclosure structure the Python API returns. This is the wedge product: the first metrics MCP server that can say "it depends."
Run
pip install columna-core columna-server
columna-server demo --play # the packaged demo: clarify -> refuse -> disclose -> serve
columna-server demo # serve the packaged demo over MCP stdio (no path args)
columna-server mcp --manifolds <dir> # serve your own manifolds dir over stdio
columna-server mcp --manifolds <dir> --http :8000 # streamable-http, gated by COLUMNA_MCP_TOKEN
# Natural-language agent (a true MCP client over the server); needs the [agent] extra + a key:
pip install "columna-server[agent]"
ANTHROPIC_API_KEY=... columna-server agent # chat REPL over the packaged demo
The agent turns natural language into a proposed Frame-QL query, spawns the server over stdio,
and lets the four moods drive the conversation — it never touches the engine in-process. The model
proposes, the planner disposes, the human decides (clarifies are relayed, never auto-picked; every
number comes verbatim from the wire). See demos/agent_transcript.md.
Model via COLUMNA_AGENT_MODEL (default claude-opus-4-8).
Richer run. The packaged demo ships a small (~330 KB) warehouse. To run the same benchmark
Manifold over the full 4.7 MB warehouse (299,934 transactions), point --manifolds at a directory
whose data.toml warehouse path is the repo's packages/columna-core/demos/warehouse.
From source (contributors):
git clone https://github.com/datumwise/columna && cd columna, thenpip install -e packages/columna-core -e "packages/columna-server[test]"andpytest packages/columna-server -q.
<dir> holds <id>/manifold.cml + data.toml (connector type + data path). Manifolds are parsed
and connected once at startup.
Tools (five, read-only — no SQL, no writes)
| tool | touches data? | returns |
|---|---|---|
list_manifolds() |
no | id, name, description, measure count, universes |
describe_manifold(manifold_id) |
no | dimensions/levels, edges (+ lineage), universes (+ predicate), measure index |
describe_measure(manifold_id, measure) |
no | family triple, per-member anchors, dtype, v-anchor {universe, grain}, m-anchor, provenance |
query(manifold_id, frameql, universe?) |
yes | the wire contract (serve/disclose/clarify/refuse/error) |
explain(manifold_id, frameql, universe?) |
no (fetches_delta: 0) |
the would-be outcome + disclosures |
frameql is "<columns> @ <anchor>" (e.g. "rate: revenue / level.last @ store, day"); the
envelope is parsed here and every expression is delegated to columna-core — one expression dialect.
The contract
Outcomes are data (the four moods), and disclosures are structured {code, materiality, severity, category, detail, remedy, source, rel_error} via columna_core.disclosure_wire — the same
serialization every surface shares. Clarify alternatives are mechanically substitutable (a universe
pin carries apply: {"universe": U}).
See demos/mcp_claude_desktop.md for a Claude Desktop config and a
real clarify → answer transcript.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file columna_server-0.3.0.tar.gz.
File metadata
- Download URL: columna_server-0.3.0.tar.gz
- Upload date:
- Size: 354.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ceb61d85f0b51ea793f4e95b6731e47d491792d5616cee4fcde689b2808c4c6c
|
|
| MD5 |
7bb6f67af65a1463de6914c174d434d5
|
|
| BLAKE2b-256 |
fea12b74d8ba925e18f5bf504ded7f6163d2ce5b215194383c1954695d5ba8c8
|
Provenance
The following attestation bundles were made for columna_server-0.3.0.tar.gz:
Publisher:
publish.yml on datumwise/columna
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
columna_server-0.3.0.tar.gz -
Subject digest:
ceb61d85f0b51ea793f4e95b6731e47d491792d5616cee4fcde689b2808c4c6c - Sigstore transparency entry: 2191824642
- Sigstore integration time:
-
Permalink:
datumwise/columna@d644d3d82752e186e46fe0c0aeb557e331a8bb1a -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/datumwise
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d644d3d82752e186e46fe0c0aeb557e331a8bb1a -
Trigger Event:
release
-
Statement type:
File details
Details for the file columna_server-0.3.0-py3-none-any.whl.
File metadata
- Download URL: columna_server-0.3.0-py3-none-any.whl
- Upload date:
- Size: 345.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05b12a61a07236c5cdcbd06b730c75a0deff851965189137cbbffca62abf406b
|
|
| MD5 |
7308cf214bfbe383c43191b313ac73ff
|
|
| BLAKE2b-256 |
537d179eef2069e039a565692163e334d5b77e0a19c5cf817c3f21d562365524
|
Provenance
The following attestation bundles were made for columna_server-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on datumwise/columna
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
columna_server-0.3.0-py3-none-any.whl -
Subject digest:
05b12a61a07236c5cdcbd06b730c75a0deff851965189137cbbffca62abf406b - Sigstore transparency entry: 2191824747
- Sigstore integration time:
-
Permalink:
datumwise/columna@d644d3d82752e186e46fe0c0aeb557e331a8bb1a -
Branch / Tag:
refs/tags/v0.9.0 - Owner: https://github.com/datumwise
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d644d3d82752e186e46fe0c0aeb557e331a8bb1a -
Trigger Event:
release
-
Statement type: