MCP Not Loading
When your AI assistant doesn't see faz. Per-client diagnoses for Claude Desktop, Cursor, Claude Code, OpenClaw, and generic MCP clients.
You ran faz mcp install, restarted your AI client, and the assistant says it has no databases — or doesn't know what faz is at all. This page walks through the diagnostic flow.
For verifying a connection that should work, see Verifying the connection.
First: confirm faz mcp itself works
Before blaming the client, confirm faz mcp starts cleanly. Run it manually and feed it a basic JSON-RPC request:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | faz mcp 2>&1 | head -20You should see a JSON response listing the four tools (list_databases, describe_table, query_simple, query). If you see a Python traceback or no faz.yaml or database.yaml, the problem is upstream of MCP entirely — fix the faz.yaml lookup first:
faz policy # confirm faz.yaml parses
FAZ_CONFIG=/absolute/path/to/faz.yaml faz mcpOnce faz mcp runs cleanly under the same env vars your client will use, move on.
Claude Desktop doesn't see faz
The config file isn't where Claude expects
Claude Desktop reads:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Confirm the file exists and has an mcpServers.faz block:
jq '.mcpServers.faz' "$HOME/Library/Application Support/Claude/claude_desktop_config.json"If null, re-run faz mcp install --target claude.
The command path is wrong
The command field is the absolute path to the faz binary. Spawning Claude Desktop runs with a sanitised PATH that often doesn't include /usr/local/bin or your venv. Check:
jq -r '.mcpServers.faz.command' ~/Library/Application\ Support/Claude/claude_desktop_config.jsonThat path must exist and be executable. If it doesn't (you've moved your venv, switched Python versions, etc.), re-run faz mcp install --target claude from the directory where faz is on your current PATH.
FAZ_CONFIG points at a path that doesn't exist
Same issue, different field. The env.FAZ_CONFIG value is baked at install time:
jq -r '.mcpServers.faz.env.FAZ_CONFIG' ~/Library/Application\ Support/Claude/claude_desktop_config.jsonConfirm the file exists and parses (faz policy --path /that/path/faz.yaml).
You restarted the window, not the app
Claude Desktop only re-reads the MCP config when the app starts. Closing the window doesn't quit the app. Cmd-Q on macOS, File → Quit elsewhere.
Inspect Claude's MCP logs
Claude Desktop writes a per-server MCP log:
- macOS:
~/Library/Logs/Claude/mcp-server-faz.log - Linux:
~/.config/Claude/logs/mcp-server-faz.log - Windows:
%APPDATA%\Claude\logs\mcp-server-faz.log
The file shows what faz mcp printed at startup. Common findings:
- Python tracebacks —
faz.yamlis broken or the connectors crashed. Permission denied— thecommandpath isn't executable for the user Claude runs as.- No log file at all — Claude never tried to spawn faz; the JSON config didn't parse.
Cursor doesn't see faz
Config in the wrong location
Cursor reads ~/.cursor/mcp.json. There's also a per-workspace .cursor/mcp.json that overrides for one project. Confirm:
jq '.mcpServers.faz' ~/.cursor/mcp.jsonIf a workspace override exists, it might be missing faz even though the user-level file has it.
MCP indicator stays red
In Cursor's MCP settings panel, each registered server has an indicator. Red means the spawn failed. Cursor logs MCP output to its standard log location (Help → Show Logs); look for lines mentioning faz.
Workspace path issues
If you set FAZ_CONFIG to a path relative to your user home (~/projects/myapp/faz.yaml), Cursor's workspace might run from a different directory. Always use absolute paths in FAZ_CONFIG.
Claude Code doesn't see faz
claude mcp list doesn't include faz
Either faz was never registered, or ~/.claude.json isn't parseable. Check:
jq . ~/.claude.json | head -30If the JSON is broken, fix it manually or re-add via claude mcp add faz --command "$(which faz)" --args "mcp" --env "FAZ_CONFIG=$(pwd)/faz.yaml".
Session ran before registering
MCP servers are spawned at session start. Exit any running Claude Code session and start fresh.
OpenClaw doesn't see faz
openclaw mcp list doesn't include faz
Either the entry isn't in ~/.openclaw/openclaw.json, or it's at the wrong nesting (OpenClaw uses mcp.servers, not the flat mcpServers). Check:
jq '.mcp.servers.faz' ~/.openclaw/openclaw.jsonIf null, re-run faz mcp install --target openclaw (which uses the right nesting), or use OpenClaw's mcp set (see OpenClaw integration).
Restart didn't pick up the change
OpenClaw reads its config on startup. Restart the app fully.
Generic MCP clients
For clients faz doesn't have a --target for, the troubleshooting matrix is:
- JSON shape: confirm the entry lives under the key the client expects. Most use flat
mcpServers; OpenClaw uses nestedmcp.servers. Check the client's docs. - Path: confirm
commandis absolute and executable. - Env: confirm
FAZ_CONFIGis set to an absolute path. Without it,faz mcplooks for./faz.yamlfrom the client's working directory, which is rarely your project directory. - Logs: every MCP client logs server spawn output somewhere — find it in the client's docs.
See Generic MCP for the install pattern.
faz mcp itself fails to start
If your AI client is correctly configured but faz mcp crashes when spawned:
no faz.yaml or database.yaml
FAZ_CONFIG either isn't set in the client's env block, or points at a path that doesn't exist. Set it explicitly:
"env": {
"FAZ_CONFIG": "/absolute/path/to/faz.yaml"
}Connector startup tracebacks
A failing connector at startup logs a WARNING and continues — faz boots without that database. But if every connector fails (e.g. Postgres process down), the MCP client sees an empty database list.
Confirm faz test works from the same shell with the same FAZ_CONFIG. If it does and the MCP client doesn't, the client's environment differs (PATH, working directory, env vars).
"I don't have access to any databases"
The assistant connected to faz, but list_databases returned an empty list. Causes:
- Every connection failed at startup. Check faz's logs for connector errors.
faz.yamlhas nodatabases:entries. Runfaz policyto confirm what's loaded; runfaz add-databaseto add one.FAZ_CONFIGpoints at a different file than you edited. Confirm the path matches.
Related
- Integrations overview — per-client wire-up.
- Verifying the connection — diagnostic checks for a working setup.
- Connection failed — fixes for the per-database errors that show up in MCP logs.
- Common errors — the broader error index.