Read pages hold at most 50 rows, cursors carry a maximum offset of 100,000, statements time out after 30 seconds by default, and queries are capped at 100,000 characters with one explicit RETURN clause per branch — `RETURN *` is unsupported, so list your return values. Raw database errors and query text never reach the client, which is unusual and correct. Enabling write mode does not grant privileges the database role does not already have; use a separate least-privileged role for it.
A Cypher client for Apache AGE, the graph extension for PostgreSQL. Read-only is the default: queries run inside PostgreSQL read-only transactions, parameters are bound rather than interpolated, and pages are bounded by an authenticated cursor.
- `read-age-cypher` runs a validated, parameterised, paginated read-only Cypher query
- `list-age-graphs` lists the graphs in the database
- `get-age-schema` reports counts, edge directions and sampled property types — the orientation step before writing a query
- Write tools are neither advertised nor accepted unless the server starts with `--allow-write`: `write-age-cypher` for a mutating clause, `create-age-graph` and `drop-age-graph`
- Every tool returns MCP structured content, and an asynchronous connection pool sits underneath
Python 3.13 or later, and PostgreSQL with the Apache AGE extension installed and loaded. Install the PyPI package age_mcp_server, version 0.3.0, with uv or pip, or through the author's Homebrew tap. Connect with PG_CONNECTION_STRING and keep the password out of the command line — PGPASSWORD or a PostgreSQL password file. Microsoft Entra authentication to Azure Database for PostgreSQL is available with an opt-in flag after an Azure CLI sign-in.
Build from source — clone the repository and build it, then point your client at the binary
