Skip to main content

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, then pip install -e packages/columna-core -e "packages/columna-server[test]" and pytest 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 the catalog: governed publication lineages (manifold_id, latest_version, versions[] with per-version realizable) + classified legacy/authority_incomplete compatibility runtimes
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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

columna_server-0.8.3.tar.gz (793.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

columna_server-0.8.3-py3-none-any.whl (757.7 kB view details)

Uploaded Python 3

File details

Details for the file columna_server-0.8.3.tar.gz.

File metadata

  • Download URL: columna_server-0.8.3.tar.gz
  • Upload date:
  • Size: 793.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for columna_server-0.8.3.tar.gz
Algorithm Hash digest
SHA256 22f86a67f63c5b71260fd53efe3e16e9350e3661b842ef0471970cd63ab7a9db
MD5 cc0518afffbb36f2c5c84abbfc122138
BLAKE2b-256 d9e123a5a465e350059a63796172e32a433882b974fa1439da2d5ad1428241f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for columna_server-0.8.3.tar.gz:

Publisher: publish.yml on datumwise/columna

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file columna_server-0.8.3-py3-none-any.whl.

File metadata

  • Download URL: columna_server-0.8.3-py3-none-any.whl
  • Upload date:
  • Size: 757.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for columna_server-0.8.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aeb94f9e7e3db25dbbd90a4397bc16c9efa77528fbc73ef5c8924047aeb4fc22
MD5 ef84933b1b8f7572e82c04a80e03f765
BLAKE2b-256 b5f6249835ab68765dd9521dc3087eda854597b3ca00f88818ad8ab108bd14cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for columna_server-0.8.3-py3-none-any.whl:

Publisher: publish.yml on datumwise/columna

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

This release

0.8.3 This release

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page