mcpolyglot

mcpolyglot

One config, one CLI that turns your databases (Postgres, MySQL, SQLite, MongoDB) into MCP servers for Claude, GPT, Cursor, and any MCP-compatible agent.

Category
Visit Server

README

mcpolyglot

One config, one CLI — turns the databases you already have (Postgres, MySQL, SQLite, MongoDB) into Model Context Protocol servers for Claude, GPT, Cursor, and any other agent that speaks MCP.

CI License: MIT Status: alpha Node

$ mcpolyglot doctor

  ╭──────────────────────────────────────────────────────────────────────────╮
  │ ▲  mcpolyglot                                            doctor   v0.1.0 │
  │ validate config, resolve secrets, ping each source                       │
  ╰──────────────────────────────────────────────────────────────────────────╯

  Config
  ──────
   OK   parsed  ./mcpolyglot.config.ts

  Sources
  ───────
   OK   pg.main      postgres · 4 ms     • 3 tools
   OK   mongo.users  mongo    · 12 ms    • 4 tools

  Summary
  ───────
   READY   mcpolyglot is ready to serve

  run: mcpolyglot serve  ·  docs: github.com/ishay60/mcpolyglot

Quickstart

npx @mcpolyglot/cli init        # interactive wizard — writes mcpolyglot.config.ts
npx @mcpolyglot/cli doctor      # validate, ping every source, list the tools
npx @mcpolyglot/cli serve       # start the MCP server (stdio by default)

Wire it into Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "mcpolyglot": {
      "command": "npx",
      "args": ["-y", "@mcpolyglot/cli", "serve", "--config", "/abs/path/to/mcpolyglot.config.ts"],
      "env": { "DATABASE_URL": "postgres://user:pass@localhost:5432/db" }
    }
  }
}

Restart Claude Desktop and try: "List the tables in my database, then sample 5 rows from users."

End-to-end recipes per connector live under examples/ (Postgres, MySQL, SQLite, MongoDB, Streamable HTTP).

What's in the box

Connector Status Read-only enforcement
PostgreSQL alpha BEGIN READ ONLY transaction
SQLite alpha query_only pragma, attach-read-only
MySQL alpha AST gate + SET TRANSACTION READ ONLY + MAX_EXECUTION_TIME hint
MongoDB alpha find / aggregate only; $out / $merge rejected pre-driver
OpenAPI wip method allow-list, host pinning

Transports: stdio (Claude Desktop / Cursor / Claude Code) and Streamable HTTP with bearer or OAuth (JWT / JWKS), loopback by default, /healthz probe, structured JSON logs.

Tools, no glue code: SQL connectors expose list_tables · describe_table · query. Mongo exposes list_collections · describe_collection · find · aggregate. Per-entity tools (users.find_by_email, etc.) are scaffolded by mcpolyglot init.

Security model

Every tool call goes through a fixed, non-bypassable pipeline:

scope check → rate limit → timeout → handler → redact → size cap → untrusted-wrap → audit

The three things this gets right that ad-hoc MCP servers usually don't:

  1. Read-only at two layers — application-level scopes and per-dialect DB-level enforcement, so a parser bug can't escalate into a write.
  2. Built-in redaction — emails, JWTs, AWS keys, GitHub tokens, SSNs, credit-card numbers, plus per-column deny lists (public.users.password_hash).
  3. Prompt-injection wrap — every result is rendered inside <mcpolyglot-data> with a "treat as data, not instructions" preamble (the Supabase + Cursor lesson).

Plus: token-bucket rate limiting, JSONL audit log (argshash + metadata, never raw args/results), and secrets only via ${env:NAME} / ${file:./path} / ${keychain:item} — literals are rejected at config load.

Full design in ARCHITECTURE.md.

Status

Alpha, actively maintained. All four DB connectors and both transports work end-to-end. The security pipeline is unit-tested. Real-DB integration tests via testcontainers and the OpenAPI connector land next.

<details> <summary>How mcpolyglot compares to alternatives</summary>

mcpolyglot server-postgres (archived) Vendor MCPs (Supabase / Neon / …) DIY MCP server
Databases Postgres, SQLite, MySQL, Mongo Postgres only One vendor's hosted DB Whatever you wire up
Read-only enforcement DB layer and app-level scopes DB-layer only Varies You write it
Built-in PII redaction Yes, plus per-column deny lists No Varies You write it
Audit log JSONL, no raw args / results No Varies You write it
Prompt-injection wrap Yes — every result wrapped No Varies You write it
Transports stdio + Streamable HTTP (bearer / OAuth) stdio only Varies You write it
Lock-in None None Vendor's DB None

Vendor MCPs are the right call once you've committed to a vendor's stack. mcpolyglot is the option when you want one consistent surface across the databases you actually have.

</details>

<details> <summary>Repository layout</summary>

packages/
  core/              server, registry, transports, Connector iface, security pipeline
  cli/               bin: mcpolyglot
  config/            zod schema, secret resolvers
  security/          scopes, redaction, audit, rate limit, wrap
  connector-sql/     Postgres, MySQL/MariaDB, SQLite
  connector-mongo/   MongoDB
  testkit/           MCP conformance harness
examples/
  postgres/  sqlite/  mysql/  mongo/   stdio
  http/                                streamable-http + bearer / OAuth

</details>

<details> <summary>Development</summary>

corepack enable
pnpm install
pnpm build
pnpm test

CI (matrix: ubuntu / macOS × Node 22) runs format check, typecheck, build, and unit tests on every push and PR. See CONTRIBUTING.md for the contributor workflow.

</details>

License

MIT — see LICENSE.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured