Server data from the Official MCP Registry
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Remote endpoints: streamable-http: https://plainquery.in/mcp/
This is a well-structured FastAPI-based MCP server with thoughtful authentication architecture (session tokens, API keys, OAuth 2.1). The codebase demonstrates good security practices around credential handling (encryption for database URLs, no hardcoded secrets, secure token generation). However, several moderate concerns exist: insufficient input validation on database URLs despite sanitization attempts, potential SQL injection vectors in query execution (not shown but referenced), overly broad error messages that leak system information, and weak rate limiting on critical operations like password reset flows. Permissions are appropriate for the stated purpose (database querying, OAuth, Stripe billing integration). Supply chain analysis found 6 known vulnerabilities in dependencies (0 critical, 1 high severity).
4 files analyzed · 16 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Available as Local & Remote
This plugin can run on your machine or connect to a hosted endpoint. during install.
From the project's GitHub README.
Hosted HTTP MCP server for querying a user-connected database in natural language.
The product model in this repo is now single-account and user-scoped:
signup -> verify email -> connect database -> link OAuth identity -> use /mcp -> upgrade with Stripe
/mcpMCP_AUTH_MODE)src.app:appfrontend/oauth_only), API keys (api_key_only), or both (hybrid) — set via MCP_AUTH_MODEPOST /api/v1/account/setup-payloadsLegacy tenant/admin/owner-session flows are removed from the supported product surface.
uvpnpm for the frontendANTHROPIC_API_KEY or GROQ_API_KEY)uv sync
cp .env.example .env
Edit .env with at least:
CREDENTIAL_ENCRYPTION_KEYSREGISTRATION_OPEN=trueLLM_PROVIDERRun the backend:
uv run uvicorn src.app:app --reload --host 0.0.0.0 --port 8000
The backend mounts:
http://localhost:8000/apihttp://localhost:8000/mcpcd frontend
pnpm install
pnpm dev
Open http://localhost:3000, sign up, complete setup, link your OAuth identity via account settings, then connect an MCP client at http://localhost:8000/mcp. The client will complete the OAuth flow automatically, or you can use an API key in api_key_only / hybrid mode.
| Variable | Description |
|---|---|
AUTH_DATABASE_URL | Auth/account database used by the hosted product |
CREDENTIAL_ENCRYPTION_KEYS | Encrypts stored database URLs and other secrets |
REGISTRATION_OPEN | Enables or disables public signup |
ANTHROPIC_API_KEY / GROQ_API_KEY | LLM credentials for SQL generation |
LLM_PROVIDER | Active provider name |
APP_BASE_URL | Base URL used in setup payloads |
FRONTEND_BASE_URL | Base URL used in email links |
ALLOW_SQLITE_USER_DBS | Dev-only escape hatch for user-supplied SQLite databases |
STRIPE_SECRET_KEY / STRIPE_WEBHOOK_SECRET | Stripe API and webhook credentials |
STRIPE_PRO_PRICE_ID | Stripe Price ID that maps to the Pro plan |
STRIPE_CHECKOUT_SUCCESS_URL / STRIPE_CHECKOUT_CANCEL_URL | Optional Checkout redirect overrides |
STRIPE_CUSTOMER_PORTAL_RETURN_URL | Optional Customer Portal return URL override |
See .env.example for the current full set.
POST /api/v1/auth/signupGET /api/v1/auth/verify-emailPOST /api/v1/auth/request-login-linkGET /api/v1/auth/exchange-login-linkPOST /api/v1/auth/logoutAll account routes use session token auth:
x-session-token: <session-token>
Authorization: Bearer <session-token>
GET /api/v1/account
GET /api/v1/account/status
PUT /api/v1/account/database
GET /api/v1/account/api-keys
POST /api/v1/account/api-keys
DELETE /api/v1/account/api-keys/{id}
POST /api/v1/account/api-keys/{id}/rotate
POST /api/v1/account/setup-payloads
GET /api/v1/account/dashboard
GET /api/v1/account/usage/recent
GET /api/v1/account/billingPOST /api/v1/account/billing/checkout-sessionPOST /api/v1/account/billing/portal-sessionPOST /api/v1/billing/webhookStripe webhooks are the source of truth for plan transitions. Checkout or
subscription activation moves a user to plan_code=pro; canceled, unpaid, or
past-due states restrict paid entitlements without deleting database setup.
GET /api/v1/account/mcp-oauth/statusPOST /api/v1/account/mcp-oauth/startGET /api/v1/account/mcp-oauth/callbackDELETE /api/v1/account/mcp-oauth/linkPOST /mcpMCP_AUTH_MODEPOST /api/v1/account/setup-payloads returns client configuration material for VS Code, Cursor, generic HTTP MCP clients, and the current ChatGPT placeholder.
Example:
curl -X POST http://localhost:8000/api/v1/account/setup-payloads \
-H "Authorization: Bearer <session-token>" \
-H "Content-Type: application/json" \
-d '{"raw_api_key":"mdbk_..."}'
The backend never stores raw API keys after creation. A raw key is only embedded in setup payloads when you explicitly send it in the request.
uv run pytest tests/ -m "not integration"
uv run pytest tests/ -m integration
uv run ruff check .
uv run mypy src --ignore-missing-imports
After each hosted deploy, verify the public MCP OAuth discovery surface:
uv run python scripts/smoke_mcp_deployment.py \
--mcp-url https://mcp.example.com/mcp \
--issuer-url https://YOUR_DOMAIN.auth0.com/
The smoke test checks the unauthenticated /mcp challenge, protected resource
metadata, ChatGPT/Claude well-known discovery routes, and issuer metadata. To
also verify authenticated MCP initialize, tools/list, and resources/list,
pass a linked user's access token with --access-token or
MCP_SMOKE_ACCESS_TOKEN.
Run the hosted HTTP stack:
docker compose up --build
The container image serves only the hosted HTTP runtime. The MCP endpoint remains http://localhost:8000/mcp.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.