It's 5:45 PM on a Friday. You're shutting down your laptop, about to head out for the weekend. Your phone buzzes — it's your client. "Quick question: Can you check if customer john@example.com's payment went through?"
You reopen your laptop. Switch to the terminal. Remember the table schema. Write the query. Run it. Format the results. Send it back.
Ten minutes later: "Actually, can you check their last five orders too?"
You're billing €150/hr. This interruption isn't billed. Neither is the next one, or the fifteen others like it today. At 10–15 minutes per request, that's 2–4 hours of your day gone — not to engineering, just to being a human SQL translator for your client.
There's a better way to handle this.
The Real Problem Isn't SQL — It's the Interruption Tax
Your client has questions. Their database has the answers. But the technical gap between them keeps landing in your inbox. Every time it does, you lose deep work, momentum, and billable time.
The options aren't great: teach your client SQL (weeks of their time), build them a custom dashboard (days of your time), or keep fielding the requests yourself (indefinitely).
What if you gave your client's AI the ability to query the database directly — with strict guardrails on exactly what it can touch?
That's what this guide sets up.
What You're Actually Building
By the end of this, Claude will have direct, read-controlled access to a PostgreSQL database through an MCP server you configure via MCP Express. Your client (or their support team) can ask questions in plain English. Claude queries the right tables, returns the answer, and never touches anything you didn't explicitly allow.
Examples of what becomes possible:
- "Show me customer john@example.com's order history."
- "How many active subscriptions do we have this month?"
- "Show me failed API requests in the last hour."
No SQL required on their end. No interruption on yours.
Prerequisites
Before proceeding, here’s what you need to query your database using natural language:
- Claude — Claude.ai (web) or Claude Desktop
- Node.js (v18 or later) — Only required if connecting via Claude Desktop using MCP Express CLI
- MCP Express account — Free tier, no credit card required
- A PostgreSQL database — With a connection string handy
Estimated time: 5 minutes from signup to first query.
Step 1: Create Your MCP Server
Go to MCP Servers → New MCP Server. Name it based on the context — something like "Client-Production-DB" keeps things clear when you're managing multiple clients.
Click Create MCP Server.

Step 2: Connect Your PostgreSQL Database
Select PostgreSQL from the integrations list.

Choose Quick Connect and paste your connection string. This is where MCP Express stores your credentials using AWS KMS encryption — the same standard used in banking infrastructure. You rotate your credentials, you don't redeploy anything.

Now configure what Claude is actually allowed to do. This is the part that matters most from a security standpoint. For each table you expose, you select:
- Which columns Claude can see (leave out password hashes, admin credentials, anything sensitive)
- Which operations are allowed: Get, List, Insert, Update, Delete — you pick
For a support team use case, read-only access to customers, orders, and payments is typically enough.

Optional — Custom SQL: You can add complex queries like multi-table JOINs, or use {{query}} to let Claude generate SQL dynamically. Use this with care — see our PostgreSQL security and patterns docs for guidance on when and how to use it safely.
Add a tool name and description so Claude knows when to use this integration. Something like: "Query the client's orders and payments database. Use this when asked about customer orders, payment status, or subscription data."

Step 3: Connect Claude to Your MCP Server
You have two options here depending on how you use Claude:
The easy way — OAuth (recommended)
In Claude, go to Customize → Connectors and click Add new Connector.

Give the connector a name and set the URL to: https://api.mcp-express.com/gateway/mcp

Claude will redirect you to MCP Express to complete the OAuth flow. Log in to your MCP Express account, grant access, and select the MCP server you just configured. That's it — no config files, no CLI, no Node.js required.
The manual way — MCP Express CLI
If you prefer the manual config route, we've covered this in detail in our step-by-step connection guide. It takes under 5 minutes.
Step 4: Start Querying
Open Claude Desktop. Ask a question in plain English — Claude uses your configured tools to query the database and return a structured answer.

What Claude Can and Can't Do (By Design)
You control the guardrails completely. Here's what the structured permission model prevents by default:
- ❌
DROP TABLE users — destructive operations aren't available unless you explicitly enable them - ❌ Accessing tables you didn't expose
- ❌ Writing its own arbitrary SQL (unless you enabled
{{query}} in custom SQL)
And what you can enable on a case-by-case basis:
- ✅ Read-only access for a support team investigating customer issues
- ✅ Write access to specific tables for an internal tool that needs to update order status
- ✅ Custom JOINs for complex analytical queries
The permission model is per-table, per-column, per-operation. If a table isn't in the config, Claude doesn't know it exists.
The Before and After (By the Numbers)
Before MCP Express: Your client Slacks you: "Did john@example.com's payment go through?"
- Pause current work
- Open terminal, remember the schema
- Write and run the query
- Format the output
- Paste it back into Slack
- Wait for the follow-up question
Time per request: 10–15 minutes. Frequency: 15–20 times/day. Cost: 2–4 hours/day of interrupted, unbilled work.
After MCP Express: Your client opens Claude Desktop: "Did john@example.com's payment go through?"

Claude checks the payments table and returns:
- Payment #1: $149.99 — ✅ Completed (credit card, Feb 8)
- Payment #2: $89.50 — ✅ Completed (PayPal, Feb 9)
- Payment #3: $299.00 — ⏳ Pending (credit card, Feb 10)
Time: 30 seconds. Engineer interruptions: zero.
At €150/hr, reclaiming even 2 hours/day is €300 back in your pocket — or redirected to client work that actually moves the needle.
Who Gets the Most Out of This Setup
- Freelancers — Query client databases without learning their schema, deliver insights faster
- Developers — Quick schema exploration: "What tables store X?"
- DevOps — Investigate production issues at 3 AM without remembering the exact syntax
- Support — Look up customer data without waiting for an engineer
Your Database Is Now Queryable
You've connected Claude to your PostgreSQL database in under 5 minutes. Your client can now get instant answers in plain English — no SQL, no interruptions, no waiting for an engineer.
Scale this across client projects: Connect your next database or add more tools to your MCP server in seconds. Create Your Next MCP Server
Further Resources:
- Documentation — See every supported integration, configuration option, and code example in one place.
- Contact Us — Got a question before signing up, or just want to talk through your setup? Drop us an email.
- Open a Support Ticket — Already inside the app and something's not working? Open a ticket directly from your dashboard and we'll get back to you as soon as possible.