PostgreSQL Explorer MCP Server
mcp-registry
Eine kleine, durchgängige Schritt-für-Schritt-Anleitung zur MLflow MCP Server Registry: Erstellen Sie MCP-Server mit FastMCP, rufen Sie sie mit einem FastMCP-Client auf und registrieren Sie sie dann in MLflow, damit sie auffindbar sind – mit Versionen, Zugriffsendpunkten und automatisch ermittelten Tools.
Das Repository besteht aus drei Komponenten:
Komponente | Pfad | Funktion |
MCP-Server |
| Zwei FastMCP-Server – ein einfacher Begrüßungsserver und ein echter PostgreSQL-Explorer |
MCP-Clients |
| Schlanke FastMCP-Clients, die Tools über streamable HTTP aufrufen |
Registry-Hilfsprogramm |
| Registriert Server bei MLflow, aktualisiert ihre Tools, listet Zugriffsendpunkte auf |
Voraussetzungen
Python ≥ 3.13
Ein lokal laufender MLflow-Tracking-Server (v3.15+) – die Registry-APIs sind serverseitig
PostgreSQL, falls Sie den PostgreSQL-Server ausführen möchten
uv(das Repository enthält eineuv.lock)
Abhängigkeiten (pyproject.toml): fastmcp>=3.4.7, mlflow>=3.15.1, psycopg2 + psycopg2-binary,
python-dotenv.
uv syncRelated MCP server: postgres-mcp-readonly
Konfiguration
Der PostgreSQL-Server liest seine Verbindungseinstellungen aus einer .env-Datei im Repository-Stammverzeichnis
(geladen über python-dotenv). .env ist in der gitignore enthalten – erstellen Sie Ihre eigene:
PGHOST=localhost
PGPORT=5432
PGUSER=root
PGPASSWORD=root
PGSSLMODE=prefer
PGADMINDB=postgresVariable | Standard | Zweck |
|
| Server-Host |
|
| Server-Port |
|
| Anmelderolle |
|
| Passwort |
|
| libpq-SSL-Modus |
|
| Datenbank für serverweite Abfragen ( |
src/simple_server.py benötigt keine Konfiguration.
1. Einen MLflow-Tracking-Server starten
mlflow_mcp_registry_util.py zeigt auf http://127.0.0.1:5000. Das Repository enthält bereits eine
mlflow.db (gitignored) aus einem SQLite-gestützten Durchlauf:
uv run mlflow server --backend-store-uri sqlite:///mlflow.db --host 127.0.0.1 --port 5000Wenn Ihr Server woanders läuft, bearbeiten Sie den mlflow.set_tracking_uri(...)-Aufruf am Anfang von
mlflow_mcp_registry_util.py.
2. Einen MCP-Server ausführen
Beide Server binden Port 8000 über streamable HTTP (http://localhost:8000/mcp), führen Sie also einen
nach dem anderen aus – oder ändern Sie den Port im mcp.run(...)-Aufruf.
Einfacher Begrüßungsserver – zwei Tools, Greeting und Sendoff:
uv run python src/simple_server.pyPostgreSQL-Explorer – schreibgeschützte Einsicht in einen laufenden PostgreSQL-Server:
uv run python src/postgresql_mcp.pyOder über die FastMCP-CLI:
uv run fastmcp run src/postgresql_mcp.py --transport http --port 8000PostgreSQL-Tools
Tool | Argumente | Rückgabe |
| — | Nicht-Template-Datenbanken mit Besitzer und formatierter Größe |
|
| Benutzerdefinierte Schemata (System- und temporäre Schemata ausgeschlossen) |
|
| Tabellen und Views im Schema, mit |
|
| Spaltenname, Typ, Nullable, Standardwert – in ordinaler Reihenfolge |
|
| Fremdschlüssel aufgeteilt in |
|
| Flache Kantenliste |
Jedes Tool durchläuft _query(), das eine neue Verbindung zur benannten Datenbank öffnet, eine
einzelne parametrisierte SELECT-Abfrage über einen RealDictCursor ausführt und die Verbindung schließt. Es wird nichts geschrieben.
3. Einen Server von einem Client aus aufrufen
Mit einem auf Port 8000 laufenden Server:
uv run python clients/postgres_server_client.py # calls ListDatabases, prints each database name
uv run python clients/simple_server_client.py # calls the greeting tool with "Ford"clients/postgres_server_client.py entpackt das FastMCP-Ergebnis: Jedes Element in result.content trägt
ein JSON-text-Payload, das geparst und aus dem database gelesen wird.
Hinweis:
clients/simple_server_client.pyruftclient.call_tool("greet", ...)auf, aber das Tool insrc/simple_server.pyist unter dem NamenGreetingregistriert (greetist nur der Python-Funktionsname). Verwenden Sie für den Aufruf"Greeting", um die Auflösung zu gewährleisten.
4. Server bei MLflow registrieren
mlflow_mcp_registry_util.py enthält vier Koroutinen, die jeweils eine Registry-API demonstrieren:
register_postgresql_mcp_server()
Registriert einen entfernten Server – einen, der bereits läuft und über HTTP erreichbar ist:
mlflow.genai.register_mcp_server(
server_json={
"name": "io.github.pavanjava/postgresql-server",
"version": "0.1.0",
"description": "PostgreSQL FastMCP server exposing DB tools",
"remotes": [{"url": "http://localhost:8000/mcp", "type": "streamable-http"}],
},
status="active",
source="local dev server via fastmcp",
create_access_endpoints_from_remotes=True,
)create_access_endpoints_from_remotes=True wandelt jeden Eintrag in remotes in einen MLflow-Zugriffsendpunkt
um, sodass Verbraucher eine Verbindungs-URL aus der Registry auflösen können, anstatt sie fest zu codieren.
register_qdrant_mcp_server()
Registriert stattdessen einen paketierten Server – kein laufender Prozess erforderlich. Der Eintrag beschreibt, wie
er gestartet wird (uvx mcp-server-qdrant über stdio) und deklariert seine Umgebungsvariablen,
einschließlich derer, die erforderlich sind und welche geheim sind (QDRANT_API_KEY).
discover_tools()
Ruft refresh_mcp_server_version_tools(...) auf. MLflow verbindet sich mit der registrierten Serverversion,
ermittelt seine Tools und speichert sie in der Version – danach listet server_version.tools die
ermittelten Toolnamen auf. Dazu muss der Server tatsächlich erreichbar sein.
list_endpoints()
Ruft search_mcp_access_endpoints(server_name=...) auf und gibt für jeden Endpunkt dessen URL, Transporttyp
und die aufgelöste Serverversion aus.
Ausführen
Der __main__-Block führt jeweils eine Koroutine aus; die restlichen sind auskommentiert. Kommentieren Sie die
gwünschte aus:
if __name__ == "__main__":
# asyncio.run(register_postgresql_mcp_server())
asyncio.run(register_qdrant_mcp_server())
# asyncio.run(discover_tools())
# asyncio.run(list_endpoints())uv run python mlflow_mcp_registry_util.pyRegistrierte Server werden dann im Abschnitt MCP Servers der MLflow-Oberfläche unter
http://127.0.0.1:5000 angezeigt.
Vorgeschlagener End-to-End-Pfad
Starten Sie MLflow auf Port 5000.
Starten Sie den PostgreSQL-MCP-Server auf Port 8000.
Überprüfen Sie die Antwort:
uv run python clients/postgres_server_client.py.Registrieren Sie ihn: Kommentieren Sie
register_postgresql_mcp_server()aus und führen Sie das Hilfsprogramm aus.Ermitteln Sie seine Tools: Wechseln Sie zu
discover_tools()und führen Sie es erneut aus – die sechs obigen Tools sollten ausgegeben werden.Überprüfen Sie seinen Zugriffsendpunkt: Wechseln Sie zu
list_endpoints().Durchsuchen Sie das Ergebnis in der MLflow-Oberfläche.
Repository-Struktur
.
├── src/
│ ├── simple_server.py # FastMCP "My MCP Server" — Greeting + Sendoff tools
│ └── postgresql_mcp.py # FastMCP "PostgreSQL Explorer" — 6 read-only introspection tools
├── clients/
│ ├── simple_server_client.py # calls a tool on the greeting server
│ └── postgres_server_client.py # calls ListDatabases and prints database names
├── mlflow_mcp_registry_util.py # MLflow MCP registry: register / refresh tools / list endpoints
├── pyproject.toml
└── uv.lockmlflow.db, .env, .venv und .idea sind in der gitignore enthalten.
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.
Related MCP Servers
- Alicense-qualityDmaintenanceAn open-source MCP server for PostgreSQL schema introspection and guarded read-only queries. It enables MCP clients to discover schemas, tables, columns, indexes, relationships, and safe queryable data from a configured PostgreSQL database.13MIT
- AlicenseAqualityDmaintenanceA secure, read-only PostgreSQL MCP server that provides safe database introspection and querying capabilities.1415MIT
- Alicense-qualityCmaintenanceA Python MCP server that enables schema discovery, read-only SQL queries, table previews, and index/relationship analysis on PostgreSQL databases.1MIT
- AlicenseAqualityBmaintenanceMCP server for PostgreSQL that enables safe read-only database queries, table schema inspection, and query execution planning.634BSD 3-Clause
Related MCP Connectors
MCP server for managing Prisma Postgres.
MCP server for interacting with the Supabase platform
A basic MCP server to operate on the Postman API.
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/pavanjava/mcp_course'
If you have feedback or need assistance with the MCP directory API, please join our Discord server