Go to file
Lucio Lelii 23a9060112 Say why a PostgreSQL connection never reached the server
A connection that failed before PostgreSQL answered was reported as "connection failed (Error)", which
said nothing: a timeout from a firewall dropping the port looked like any other fault. It now says
which it was - the host does not resolve, the connection was refused, timed out, was closed before an
answer, or the TLS handshake failed - in words that point at where to look, still without the
address or the credentials. The internal mode's own connection, as the catalog's user, says the same.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 10:06:52 +02:00
browser-mcp Keep the MCP servers' code here and deploy them from another repository 2026-10-02 11:49:09 +02:00
coding-agent-mcp Improve MCP guidance and tool availability 2026-09-23 13:15:39 +02:00
dev-server-mcp Keep the MCP servers' code here and deploy them from another repository 2026-10-02 11:49:09 +02:00
minio-mcp External sessions connect where the node says, not where the model says 2026-10-05 09:54:33 +02:00
postgres-mcp Say why a PostgreSQL connection never reached the server 2026-10-05 10:06:52 +02:00
.gitignore Keep the MCP servers' code here and deploy them from another repository 2026-10-02 11:49:09 +02:00
README.md Add postgres-mcp: SQL for a model, in a database of its own for each execution 2026-10-02 20:04:52 +02:00
publish-images.sh Add postgres-mcp: SQL for a model, in a database of its own for each execution 2026-10-02 20:04:52 +02:00

README.md

MCP servers

Four independent Streamable HTTP MCP servers, each in its own directory with its own README and tests:

  • coding-agent-mcp - scoped workspace editing.
  • dev-server-mcp - authenticated facade for an allowlisted development-server worker (the same image runs the facade and the worker).
  • browser-mcp - Playwright automation restricted to exact allowed origins.
  • minio-mcp - bounded list/read/stat/write access to object storage.
  • postgres-mcp - SQL access to PostgreSQL, with a database and a user of its own for each execution.

This repository holds their code. Deploying them is a separate repository, mcps-docker-compose: the compose files, the gateway’s Caddyfiles, the example .env and the documentation of every environment variable. It pulls the images published from here, so a server needs no sources and no build toolchain.

Publishing the images

docker login -u luciolelii           # once; use an access token with read and write permission
./publish-images.sh                  # all five
./publish-images.sh minio-mcp        # or just some

Each image is built for linux/amd64 and linux/arm64 and pushed to luciolelii/<name> tagged with this repository’s commit hash and latest. The script refuses to run on a dirty working tree, because the tag names a commit. Afterwards, deploy by setting MCP_IMAGE_TAG in the deployment repository (or the default in its mcp-stack.compose.yml) to the printed hash.

The dev-server image fixes its user at 10001:10001 when it is built, because the two volumes its worker mounts take their owner from the image. See the deployment repository for what that means at run time.

Tests: npm test inside each server’s directory.