Skip to main content

Model any domain in 7 questions — a WQuestions MCP server.

Project description

wquestions-mcp

Model any domain in 7 questions.

An MCP server that lets Claude Desktop (or any MCP client) build and query a knowledge model of anything — a spa, a barbershop, a clinic, a bank — using one fixed set of tools. No per-domain schema to write, ever.

The problem

Every domain today gets its own bespoke ontology or database schema: a CRM schema for sales, a clinical model for a clinic, a different one again for a bank or a taxi dispatcher. None of it transfers between domains, and none of it was designed for an LLM to reason over — each new domain means new modeling work before an AI can even start answering questions about it.

WQuestions replaces all of that with a single fixed index: 7 axes that any fact, in any domain, answers. Model a domain by asserting facts on those 7 axes; query it the same way no matter what the domain is.

The 7 axes

Axis Question Holds
Q who agents
O what objects, and reified situations (facts treated as things)
L where places
T when time points and intervals
N how much magnitudes with a unit
K which / what kind atemporal categories, types, states
M how the predicates that connect Q/O/L/T/N/K to each other — structural, not a value axis

demo

Quickstart

Add this to your Claude Desktop config (claude_desktop_config.json) and restart Claude Desktop:

{
  "mcpServers": {
    "wquestions": {
      "command": "uvx",
      "args": ["wquestions-mcp"]
    }
  }
}

Prefer to run from source? Clone this repo and, from the repo root, pip install -e . into a virtualenv (the engine is bundled — no other package needed). Then point command/args at that venv's wquestions-mcp script (e.g. command: ".../.venv/bin/wquestions-mcp", args: []) instead of uvx.

Then ask Claude: "Load the spa example, then show me the model." See DEMO.md for the full 30-second walkthrough.

Tools

Tool Does
list_axes Describe the 7 axes
list_roles List canonical roles (who/what/where/... connectors), typed by domain and range
add_entity Create an individual on a value axis (Q, O, L, T, N, K); for the N axis pass value + unit (a K entity id or inline spec) — a magnitude without a unit is rejected
define_verb Register a situation type and its roles — optional, assert_situation auto-registers unknown verbs
assert_situation Assert a fact: reify a situation and attach its roles
correct Correct/update a role on an existing situation by re-asserting it (append-only; ask returns the latest, history=true shows the trail)
ask Query by projection — fix some roles, ask for others, optionally as of a point in time; pass history=true for the full time-ordered trail instead of just the current value
show_model Dump the current universe: every entity and fact
load_example Load a prebuilt demo universe (spa) to try queries instantly
reset Clear the model and start a fresh universe

How it works

The LLM client does the natural-language-to-structure step: it reads "Diego cut Marco's hair at Barber Kings on 2025-06-11" and turns it into role-labeled arguments (agente: diego, paciente: marco, lugar_de: barber_kings). The server never parses English — it takes those roles, validates them against the 7-axis model, and runs ingest and query over the wq engine. Same engine, same 10 tools, whether the domain behind them is a spa or a barbershop.

Persistence

By default the server persists your universe to an append-only log and reloads on restart, so a modeled domain survives across sessions — you never rebuild by hand. Nothing is ever overwritten; corrections are appended and the log is the source of truth.

  • Default location: ~/.wquestions/universe.jsonl.
  • Choose a file: set WQUESTIONS_LOG=/path/to/domain.jsonl. Point each domain at its own file (e.g. one per MCP server entry in your client config) — a single log holds one live universe at a time (a reset starts a fresh domain within it).
  • Turn it off (pure in-memory): WQUESTIONS_LOG=off.

show_model reports the active log path and how many events were replayed, so you can confirm persistence is on.

Further reading

The 7-axis model — why it's fixed, what each axis actually commits to, and how it holds up once you push on it — is worked out in full in WQuestions, the book this project comes from (Spanish). Start with Chapter 8, El espacio multidimensional for the axis model itself, or the table of contents.

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

wquestions_mcp-0.2.0.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

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

wquestions_mcp-0.2.0-py3-none-any.whl (28.0 kB view details)

Uploaded Python 3

File details

Details for the file wquestions_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: wquestions_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for wquestions_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 221087eeed9948e44c4c9aee15b0908b918b0549f7bb31d9f8c87e5ca61784d6
MD5 db0fc9ffe3c6792b81807491c835e5bb
BLAKE2b-256 8f3c6379a89e9cec9a1bdf1f25fb4f734b722836d9caf8e5e96dc2919af4c383

See more details on using hashes here.

File details

Details for the file wquestions_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: wquestions_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for wquestions_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1868126c4b64a7063c2e1c5d827a1a3de7be79a5749701d07f1b3e18a13dd4d0
MD5 8e09c9a278ec7639569acda783a4636f
BLAKE2b-256 287ce32565ddbb71d3775012d5180893db3cfda785eb2a170c2575b92b9a32ef

See more details on using hashes here.

Supported by

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