MCP Server Builder
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server Buildergenerate a read-only server for my Postgres database"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🛠️ MCP Server Builder
Scenario: A manufacturing quality team and a public-sector reporting team each have their own databases, and neither has engineering support. They want to connect their own data source to the platform themselves, in minutes, without writing code.
This project solves that by generating, deploying, and registering a new read-only MCP server from user-provided database parameters — no code required. A non-engineer connects a new data source end to end in minutes, and every write (INSERT/UPDATE/DELETE) is safely refused.
The six-step flow
Collect connection parameters (user ID, password, server/IP, port) — password masked.
Test the connection (
SELECT 1) with a live status indicator; clear re-prompt on failure.Generate a SELECT-only MCP server (sqlglot-validated).
Deploy it (runs over HTTP).
Register it with the host application (writes
generated_servers/registry.json).Query your data through the new server — writes are refused.
Multi-database deployments (MySQL/TiDB)
Step 1's database picker is a multiselect for MySQL/TiDB — a single deployment
can span several databases, and the assistant/validator require every SQL
reference to be fully qualified (database.table) once more than one is
selected, so a table name can never be silently guessed across databases. See
mcp_server/sql_validator.py (the
ambiguous_database/cross_database_denied checks) and
backend/prompts/ask.py. PostgreSQL and SQL Server
stay scoped to exactly one database per deployment, since they don't support
cross-database queries over a single connection the way MySQL/TiDB do.
Architecture
frontend/— Streamlit wizard UI (talks to the backend over HTTP).app.py— thin entry point: page setup, backend bootstrap, routes to a step.theme.py,stepper.py,api_client.py— CSS, the progress indicator, the HTTP client.steps/— one module per screen:connect_form(1-2),build_flow(3-5),dashboard+tables_overview/chat/query_panel(5-6).
backend/— FastAPI service.main.py— the app entry point (routers, lifespan, health/ready).routes/build.py— test-connection / deploy / register / query / status / stop.routes/ask.py— the agentic "Ask your data" chat endpoint.deployments.py— the in-memory registry of active deployments, shared by both routers.mcp_client.py— the shared MCP client call used by both routers.{connection,generator,deploy,config,intents,logging_config}.py— build logic.prompts/— every Claude-facing prompt and tool schema, one file per concern (ask.pyfor the chat assistant,intent_classifier.pyfor the intent gate), kept separate from request-handling code so wording changes never touch logic.
mcp_server/— the code that becomes each generated read-only MCP server:template.py(the file that gets rendered), plussql_validator.py,errors.py,audit.py, embedded verbatim into every generated server bybackend/generator.py(and also imported directly by the backend, so build-time connection tests and generated-server query validation share one source of truth).generated_servers/— output directory for generated MCP servers; seegenerated_servers/README.md.
Run locally
Two processes (recommended for development):
python -m uvicorn backend.main:app --port 8000 --reload
streamlit run frontend/app.pyOr a single process — the frontend auto-starts the backend in a background thread if nothing is already listening on port 8000:
streamlit run frontend/app.pyDeploy free on Streamlit Community Cloud
The app is single-container ready: frontend/app.py launches the FastAPI
backend in-process (a daemon thread, started once via @st.cache_resource),
so the whole six-step flow runs inside the one process Streamlit Cloud gives you.
Push this repo to public GitHub.
Go to https://share.streamlit.io → New app → select the repo.
Set Main file path to
frontend/app.py.Deploy. You get a public
*.streamlit.appURL.
requirements.txt (Python deps) and packages.txt (system unixodbc) are
installed automatically.
Hosting notes / limits (free tier)
Only publicly-reachable databases work. The container can't reach a DB on your laptop (
127.0.0.1). Use a cloud DB — e.g. free-tier Neon/Supabase (Postgres) or TiDB Cloud/PlanetScale (MySQL).SQL Server needs Microsoft's ODBC driver, which Streamlit Cloud can't install — use MySQL/PostgreSQL/TiDB for the hosted build (or self-host for MSSQL).
The app sleeps when idle and storage is ephemeral: generated servers and
registry.jsondon't persist across restarts (they regenerate on next use).The registered MCP endpoints are container-internal (
localhost) — reachable by this platform (which is the host application for querying), not by an external Claude Desktop. That matches the scenario: teams connect and query through the platform.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rithikathena-cmyk/MCP-Server-Builder'
If you have feedback or need assistance with the MCP directory API, please join our Discord server