name: wren-usage description: "Wren Engine — semantic SQL engine for AI agents. Query 22+ data sources (PostgreSQL, BigQuery, Snowflake, MySQL, ClickHouse, etc.) through a modeling layer (MDL). This skill is the main entry point: it guides setup, delegates to focused sub-skills for SQL authoring, MDL generation, project management, and MCP server operations. Use when: write SQL, query data, generate or update MDL, change database connection, manage YAML projects, set up or operate MCP server, or get started with Wren Engine for the first time." license: Apache-2.0 metadata: author: wren-engine version: "1.3"
Wren Engine — Usage Guide
Version check
Silently fetch https://raw.githubusercontent.com/Canner/wren-engine/main/skills/versions.json.
Compare the wren-usage key with this skill's version (from the frontmatter above).
If the remote version is newer, notify the user before proceeding:
A newer version of the wren-usage skill is available. Update with:
npx skills add Canner/wren-engine --skill wren-usage --agent claude-code
Then continue with the workflow below regardless of update status.
This skill is your day-to-day reference for working with Wren Engine. It delegates to focused sub-skills for each task.
Step 0 — Install dependent skills (first time only)
Check whether the required skills are already installed in ~/.claude/skills/. If any are missing, tell the user to run:
# Option A — npx skills (works with Claude Code, Cursor, and 30+ agents)
npx skills add Canner/wren-engine --skill '*' --agent claude-code
# Option B — Clawhub (if installed via clawhub)
clawhub install wren-usage
This installs wren-usage and its dependent skills (wren-connection-info, wren-generate-mdl, wren-project, wren-sql, wren-mcp-setup, wren-http-api) into ~/.claude/skills/.
After installation, the user must start a new session for the new skills to be loaded.
If the user only wants the MCP server set up (no Docker yet), use
/wren-quickstartfor a guided end-to-end walkthrough instead.
What do you want to do?
Identify the user's intent and delegate to the appropriate skill:
| Task | Skill |
|---|---|
| Write or debug a SQL query | @wren-sql |
| Connect to a new database / change credentials | @wren-connection-info |
| Generate MDL from an existing database | @wren-generate-mdl |
| Save MDL to YAML files (version control) | @wren-project |
Load a saved YAML project / rebuild target/mdl.json |
@wren-project |
| Add a new model or column to the MDL | @wren-project |
| Start, reset, or reconfigure the MCP server | @wren-mcp-setup |
| Call Wren tools via HTTP JSON-RPC (no MCP SDK) | @wren-http-api |
| First-time setup from scratch | @wren-quickstart |
Common workflows
Query your data
Invoke @wren-sql to write a SQL query against the deployed MDL.
Key rules:
- Query MDL model names directly (e.g.
SELECT * FROM orders) - Use
CASTfor type conversions, not::syntax - Avoid correlated subqueries — use JOINs or CTEs instead
-- Example: revenue by month
SELECT DATE_TRUNC('month', order_date) AS month,
SUM(total) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1
For type-specific patterns (ARRAY, STRUCT, JSON), date/time arithmetic, or BigQuery dialect quirks, invoke @wren-sql for full guidance.
Update connection credentials
To change credentials, direct the user to the MCP server Web UI at http://localhost:9001. Connection info can only be configured through the Web UI — do not attempt to set it programmatically.
Invoke @wren-connection-info for a reference of required fields per data source (so you can guide the user on what to enter in the Web UI).
Extend the MDL
To add a model, column, relationship, or view to an existing project:
- Invoke
@wren-project— Load the existing YAML project into an MDL dict - Edit the relevant YAML file (e.g.
models/orders.yml) - Invoke
@wren-project— Build to compile updatedtarget/mdl.json - Call
deploy(mdl_file_path="./target/mdl.json")to apply the change
Regenerate MDL from database
When the database schema has changed and the MDL needs to be refreshed:
- Invoke
@wren-connection-info— confirm or update credentials - Invoke
@wren-generate-mdl— re-introspect the database and rebuild the MDL JSON - Invoke
@wren-project— Save the new MDL as an updated YAML project - Invoke
@wren-project— Build to compiletarget/mdl.json - Deploy
MCP server operations
| Operation | Command |
|---|---|
| Check status | docker ps --filter name=wren-mcp |
| View logs | docker logs wren-mcp |
| Restart | docker restart wren-mcp |
| Full reconfigure | Invoke @wren-mcp-setup |
| Verify health | health_check() via MCP tools |
Quick reference — MCP tools
| Tool | Purpose |
|---|---|
health_check() |
Verify Wren Engine is reachable |
query(sql=...) |
Execute a SQL query against the deployed MDL |
deploy(mdl_file_path=...) |
Load a compiled mdl.json |
setup_connection(...) |
Configure data source credentials |
list_remote_tables(...) |
Introspect database schema |
mdl_validate_manifest(...) |
Validate an MDL JSON dict |
mdl_save_project(...) |
Save MDL as a YAML project |
Troubleshooting quick guide
Query fails with "table not found":
- The MDL may not be deployed. Run
deploy(mdl_file_path="./target/mdl.json"). - Check model names match exactly (case-sensitive).
Connection error on queries:
- Verify credentials with
@wren-connection-info. - Inside Docker: use
host.docker.internalinstead oflocalhost.
MDL changes not reflected:
- Re-run
@wren-projectBuild step and re-deploy.
MCP tools unavailable:
- Start a new Claude Code session after registering the MCP server.
- Check:
docker ps --filter name=wren-mcpanddocker logs wren-mcp.
For detailed MCP setup troubleshooting, invoke @wren-mcp-setup.