Skip to main content

Agent-neutral MCP server — SQLite store, Postgres knowledge base, Kart task queue

Project description

willow-mcp

Agent-neutral MCP server. SQLite store (aligned with willow-1.7 WillowStore schema), Postgres knowledge base, Kart task queue. SAP/1.0 authorization on every tool call.

pip install willow-mcp

v1.1.0 — Breaking changes

Store API now matches willow-1.7 sap_mcp.py exactly:

  • store_put: takes record (JSON object) + optional deviation float — not content string
  • store_get / store_delete: use record_id not id
  • store_list: returns flat list, not {items: [...]}
  • store_update: new tool
  • store_search: multi-keyword AND (all tokens must match)
  • Schema: records table with JSON blob, soft delete, deviation scoring
  • WILLOW_STORE_ROOT shares SQLite files with willow-1.7 when set to the same path

Tools

Tool Description
store_put Write record (JSON object) to SQLite store
store_get Read record by record_id
store_list List all records in a collection
store_update Update an existing record
store_search Multi-keyword AND search in a collection
store_delete Soft-delete a record by record_id
store_search_all Search across all collections
knowledge_ingest Add to Postgres knowledge base
knowledge_search Multi-keyword search in Postgres knowledge base
task_submit Submit task to Kart queue
task_status Check task status
task_list List pending tasks

Every tool requires an app_id param. Authorization is checked via SAP/1.0.

MCP config

{
  "mcpServers": {
    "willow": {
      "command": "python3",
      "args": ["-m", "willow_mcp"]
    }
  }
}

On Sean's machine the global Claude Code config overrides this to willow-1.7/sap_mcp.py for full SAP access. The tool API is identical — apps work against both transparently.

Configuration

Env var Default Description
WILLOW_PG_DB willow Postgres database name
WILLOW_PG_USER $USER Postgres user (Unix socket auth)
WILLOW_STORE_ROOT ~/.willow/store SQLite store directory — set to willow-1.7's store root to share data
WILLOW_APP_ID willow-mcp Default app_id if not passed per-call
SAP_SAFE_ROOT ~/.sap/Applications SAFE folder root
SAP_PGP_FINGERPRINT (empty) Pinned GPG fingerprint

Authorization

Uses openclaw-sap-gate (SAP/1.0). If openclaw-sap-gate is not installed, all calls are permitted (open mode).

License

MIT — Sean Campbell 2026

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

willow_mcp-1.2.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

willow_mcp-1.2.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file willow_mcp-1.2.0.tar.gz.

File metadata

  • Download URL: willow_mcp-1.2.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for willow_mcp-1.2.0.tar.gz
Algorithm Hash digest
SHA256 7d88a1a46ed6ec51750b2bf7711d3c1c9dcbeaf50183be37221b3d0d053bd847
MD5 b32cd06fc83e3c070abf2af554dad332
BLAKE2b-256 b4b9ccff6c83bfc995a1a5518eb6d3bc82a63a0fbf7ca97fb5c50949d1c1254f

See more details on using hashes here.

File details

Details for the file willow_mcp-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: willow_mcp-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for willow_mcp-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2fad11223bc383fe35a3c7a56953f5e72ab52756e6ef541744610d67b97e1b8e
MD5 7695670ee63f601fe0b5b096005e50e6
BLAKE2b-256 d054f25b08e19ee58dbb825340d770db437ee533e106cc16df633641ffde7113

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