with one click
setup-wrenai-mcp
// Set up WrenAI MCP server connection. Detects Node.js, configures .mcp.json with stdio proxy, and verifies the connection. Triggers on 'connect to wrenai', 'setup wrenai mcp', 'connect mcp', or 'wrenai mcp setup'.
// Set up WrenAI MCP server connection. Detects Node.js, configures .mcp.json with stdio proxy, and verifies the connection. Triggers on 'connect to wrenai', 'setup wrenai mcp', 'connect mcp', or 'wrenai mcp setup'.
| name | setup-wrenai-mcp |
| description | Set up WrenAI MCP server connection. Detects Node.js, configures .mcp.json with stdio proxy, and verifies the connection. Triggers on 'connect to wrenai', 'setup wrenai mcp', 'connect mcp', or 'wrenai mcp setup'. |
Configures the current project to connect to a WrenAI MCP server so the AI can query data, generate SQL, run queries, build charts, and provide business insights.
Ask the user for:
http://localhost:3000 or https://app.getwren.aisk-...) — recommended for most setupsMCP_SKIP_AUTH=true on the serverConstruct the MCP endpoint: {url}/api/mcp/{project_id}
The stdio proxy requires Node.js >= 20 (for native https module ESM support). Find a suitable node binary:
node --version
If not found or version < 20, search common locations:
~/.nvm/versions/node/v2*/bin/node~/.volta/bin/node/usr/local/bin/node/opt/homebrew/bin/nodeIf no Node.js >= 20 found, offer to install:
You need Node.js >= 20 for the MCP proxy.
- nvm:
nvm install 20- Direct: download from https://nodejs.org
Record the full absolute path to node (e.g. /Users/me/.nvm/versions/node/v20.20.1/bin/node).
Write the following JSON to .mcp.json in the project root.
If the file already exists with other servers, merge — don't overwrite.
Note: Claude Code's native HTTP transport auto-discovers OAuth and gets stuck if the server advertises
/.well-known/oauth-authorization-server. Use the stdio proxy (mcp-proxy.mjs) to bypass this.
Step 3a — Locate the proxy
The mcp-proxy.mjs file ships with this plugin. Find its absolute path:
# If installed as a plugin, it's in the plugin directory:
ls "$(pwd)/mcp-proxy.mjs" 2>/dev/null || echo "Not found in current dir"
Step 3b — Write .mcp.json
Without auth (local dev):
{
"mcpServers": {
"wrenai": {
"type": "stdio",
"command": "<node_path>",
"args": [
"<absolute_path_to>/mcp-proxy.mjs",
"<endpoint_url>"
]
}
}
}
With API key:
{
"mcpServers": {
"wrenai": {
"type": "stdio",
"command": "<node_path>",
"args": [
"<absolute_path_to>/mcp-proxy.mjs",
"<endpoint_url>",
"<api_key>"
]
}
}
}
For example:
{
"mcpServers": {
"wrenai": {
"type": "stdio",
"command": "/Users/me/.nvm/versions/node/v20.20.1/bin/node",
"args": [
"/Users/me/wrenai-mcp/mcp-proxy.mjs",
"https://app.getwren.ai/api/mcp/123",
"sk-abc123"
]
}
}
}
IMPORTANT: Do NOT use --transport http or type: "http" — Claude Code's HTTP transport auto-discovers OAuth endpoints and fails if the server exposes one. The stdio proxy bypasses this entirely.
Tell the user:
WrenAI MCP config written to
.mcp.json.Next steps:
- Restart Claude Code to activate the connection (config changes require a restart)
- After restarting, try:
/wrenai-analyst how many records do I have?The
wrenai-analystskill is available for data analysis, SQL generation, and charting.
If the connection fails:
| Issue | Fix |
|---|---|
| "Failed to reconnect" | Fully restart the agent — /mcp reconnect uses cached config |
| 401 Unauthorized | Check API key, or set MCP_SKIP_AUTH=true on the WrenAI server |
| Node.js version error | The proxy needs Node >= 20 — check the command path |
| Connection refused | Verify WrenAI is running at the specified URL |
| OAuth timeout (HTTP transport) | Do NOT use type: "http" — use the stdio proxy to bypass OAuth discovery |
| "Token expired without refresh token" | Remove any stale server config from ~/.claude.json with claude mcp remove wrenai -s local |
The same config works for Claude Desktop. The config file location:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonUse the same command/args structure as .mcp.json. The mcp-proxy.mjs path
must be absolute.