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 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.

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.1.tar.gz (753.2 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.1-py3-none-any.whl (737.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for columna_server-0.8.1.tar.gz
Algorithm Hash digest
SHA256 3204b3bc0772ab725c9ef90f818871cfa2aaa0150e7ef2af1266af9dd02dcbfa
MD5 8b73047f871808b336ff0271a6ad3dd4
BLAKE2b-256 bd0529d3573259b385f06291af9e15e97205b159a7c97967cc14b8878c803c2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for columna_server-0.8.1.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.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for columna_server-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 07233ef645983a29b9dade9a55f9f2655baae7e18e10ac158c2211145c14a4de
MD5 ddabfe170b9d8c860806f8db61738837
BLAKE2b-256 a0a5b5dcfcdde73d3af792359f58eb1e40a13e059662fdaa99fbf525870204be

See more details on using hashes here.

Provenance

The following attestation bundles were made for columna_server-0.8.1-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

0.8.3

2 files

0.8.2

2 files

This release

0.8.1 This release

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