From 31d766c1507767571fc8ba2c469f469ad576a331 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Tue, 10 Nov 2026 13:10:43 -0800 Subject: [PATCH 1/6] feat: mcp --- docs/enterprise_edition/mcp.md | 85 +++++++++++++++++++++++++++++++++ docs/images/ee/mcp_system.png | Bin 0 -> 113679 bytes 2 files changed, 85 insertions(+) create mode 100644 docs/enterprise_edition/mcp.md create mode 100644 docs/images/ee/mcp_system.png diff --git a/docs/enterprise_edition/mcp.md b/docs/enterprise_edition/mcp.md new file mode 100644 index 00000000..71087207 --- /dev/null +++ b/docs/enterprise_edition/mcp.md @@ -0,0 +1,85 @@ +# MCP + +!!! note "New feature" + + MCP is a new feature. Please test it before deploying to production. + +MCP (model context protocol) allows coding agents and harnesses to fetch real time PgDog metrics, logs and deployment information to help debug production incidents or configuration issues. + +## How it works + +MCP is an HTTP protocol and most coding harnesses, e.g., Codex, Pi, Claude Code support it out of the box. It's disabled by default, so to enable MCP you need to set the following config in the [control plane](control_plane/index.md): + +=== "Helm chart" + + ```yaml + control: + config: + mcp: + enabled: true + ``` + +=== "control.toml" + + ```toml + [mcp] + enabled = true + ``` + +When enabled, the MCP server will be running on the same host and port as the control plane, under the `/mcp` path. + +### Authentication + +Requests to the MCP server require Bearer token authentication. Unauthenticated requests will be rejected automatically. To configure authentication, you have two options: + +1. Hardcode a set of tokens in the configuration +2. Enable [Raft](control_plane/ha.md) and add tokens via the web dashboard + +#### Configuring tokens + +A fixed set of Bearer tokens can be configured as follows: + +=== "Helm chart" + + ```yaml + control: + config: + mcp: enabled + tokens: + - token_one + - token_two + ``` + +=== "control.toml" + + ```toml + [mcp] + enabled = true + tokens = ["token_one", "token_two"] + ``` + +If you're running our [Helm chart](control_plane/installation.md), you can also specify tokens via an environment variable, which is set on the deployment on boot: + +```yaml title="values.yaml" +# TODO: specify MCP_TOKENS via env +``` + +#### Dynamic tokens + +Mananging tokens via configuration can be tedious, so the control plane also supports storing authorized tokens in its [Raft](control_plane/ha.md) log. The log is checked on each request to the MCP server, so tokens can be created and deleted at any time without configuration changes. + +
+ MCP Add token +
+ +### Configuring agents + +Most agent harnesses support MCP out of the box, so configuring PgDog's MCP server should be pretty straightforward. + +#### Codex + +To add the MCP server to Codex, you can add it to either `.codex/config.toml` or `~/.codex/config.toml` as follows: + +```toml title=".codex/config.toml" +# TODO add pgdog MCP +``` diff --git a/docs/images/ee/mcp_system.png b/docs/images/ee/mcp_system.png new file mode 100644 index 0000000000000000000000000000000000000000..0091674d4a740c3e2837209a859a3f81e8d177dc GIT binary patch literal 113679 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�GL+ptyt2N3haW4_ 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 z%0A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

X?NZ4+j89ZmDRmw> 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 Date: Tue, 10 Nov 2026 13:42:56 -0800 Subject: [PATCH 2/6] docs --- docs/enterprise_edition/mcp.md | 81 ++++++++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 8 deletions(-) diff --git a/docs/enterprise_edition/mcp.md b/docs/enterprise_edition/mcp.md index 71087207..c703978e 100644 --- a/docs/enterprise_edition/mcp.md +++ b/docs/enterprise_edition/mcp.md @@ -44,10 +44,11 @@ A fixed set of Bearer tokens can be configured as follows: ```yaml control: config: - mcp: enabled - tokens: - - token_one - - token_two + mcp: + enabled: true + tokens: + - token_one + - token_two ``` === "control.toml" @@ -58,15 +59,37 @@ A fixed set of Bearer tokens can be configured as follows: tokens = ["token_one", "token_two"] ``` -If you're running our [Helm chart](control_plane/installation.md), you can also specify tokens via an environment variable, which is set on the deployment on boot: +If you're running our [Helm chart](control_plane/installation.md), you can also load a comma-separated list of tokens from a Kubernetes Secret. + +#### Create a Secret + +Create the Secret in the same namespace as the control plane: + +```yaml title="mcp-secret.yaml" +apiVersion: v1 +kind: Secret +metadata: + name: pgdog-mcp-tokens +type: Opaque +stringData: + tokens: "token_one,token_two" +``` + +Once the Secret is created, you can reference it in the Helm chart values: ```yaml title="values.yaml" -# TODO: specify MCP_TOKENS via env +control: + config: + mcp: + enabled: true + secret: + name: pgdog-mcp-tokens + tokensKey: tokens ``` #### Dynamic tokens -Mananging tokens via configuration can be tedious, so the control plane also supports storing authorized tokens in its [Raft](control_plane/ha.md) log. The log is checked on each request to the MCP server, so tokens can be created and deleted at any time without configuration changes. +Managing tokens via configuration can be tedious, so the control plane also supports storing authorized tokens in its [Raft](control_plane/ha.md) log. Stored tokens are checked on each request to the MCP server, so tokens can be created and deleted at any time without configuration changes.

MCP Add token @@ -81,5 +104,47 @@ Most agent harnesses support MCP out of the box, so configuring PgDog's MCP serv To add the MCP server to Codex, you can add it to either `.codex/config.toml` or `~/.codex/config.toml` as follows: ```toml title=".codex/config.toml" -# TODO add pgdog MCP +[mcp_servers.pgdog] +url = "https://control.example.com/mcp" +http_headers = { Authorization = "Bearer " } ``` + +## Tools + +The MCP server comes with four tools: + +| Tool | Description | +| ----------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `pgdog.proxy_instances` | Show an up-to-date list of PgDog instances currently running. | | +| `pgdog.proxy_metrics` | Fetch real-time PgDog metrics. The tool allows you to filter by database/user, by Kube instance name, and by time window. | +| `pgdog.proxy_logs` | Fetch real-time logs from Kube containers running PgDog. | +| `pgdog.auth_check` | A no-op tool that allows you to verify if the harness has the correct Bearer token. | + +An agent typically doesn't need more instructions to use these tools. For example, a common prompt to debug a production incident could be: + +=== "Prompt" + + ``` + Give me the state of PgDog. + ``` + +=== "Output" + + ``` + PgDog looks operational across the five reporting instances, as of 1:39 PM PST, November 10. + + All five report running, with fresh telemetry and the same version: v0.1.64-v2026-11-03, commit 295f5ea. None reports maintenance mode or a pending reload. + + | Instance | Clients | CPU | Memory | + |---|---:|---:|---:| + | Staging 87mh9 | 11 | 40.9% | 52.4 MiB | + | Staging fqs8t | 16 | 54.8% | 52.7 MiB | + | Sharded 0 | 7 | 10.1% | 11.6 MiB | + | Sharded 1 | 13 | 15.7% | 14.7 MiB | + | Resharding 0 | 0 | 0.2% | 7.1 MiB | + + - No clients currently waiting for backend connections across reported pools. + - No warnings or errors in the recent log tails inspected. + - Staging CPU is the main watch item: observed peaks reached 97.7% and 92.5%. Pool queues peaked at six waiting clients, but are now clear. + - Resharding: no client traffic; logs show destination schema synchronization. + ``` From 68f6d4baa7af18996afa968deb85c6363728c052 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Tue, 10 Nov 2026 13:44:07 -0800 Subject: [PATCH 3/6] save --- docs/enterprise_edition/mcp.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/enterprise_edition/mcp.md b/docs/enterprise_edition/mcp.md index c703978e..2d933da2 100644 --- a/docs/enterprise_edition/mcp.md +++ b/docs/enterprise_edition/mcp.md @@ -111,14 +111,19 @@ http_headers = { Authorization = "Bearer " } ## Tools +!!! info "Tools are read-only" + + All PgDog MCP tools are read-only and don't have any side effects. This makes them pretty safe to use + with or without human supervision. + The MCP server comes with four tools: -| Tool | Description | -| ----------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `pgdog.proxy_instances` | Show an up-to-date list of PgDog instances currently running. | | +| Tool | Description | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `pgdog.proxy_instances` | Show an up-to-date list of PgDog instances currently running. | | | `pgdog.proxy_metrics` | Fetch real-time PgDog metrics. The tool allows you to filter by database/user, by Kube instance name, and by time window. | -| `pgdog.proxy_logs` | Fetch real-time logs from Kube containers running PgDog. | -| `pgdog.auth_check` | A no-op tool that allows you to verify if the harness has the correct Bearer token. | +| `pgdog.proxy_logs` | Fetch real-time logs from Kube containers running PgDog. | +| `pgdog.auth_check` | A no-op tool that allows you to verify if the harness has the correct Bearer token. | An agent typically doesn't need more instructions to use these tools. For example, a common prompt to debug a production incident could be: From e6ba705e79a54d4ad4cdf0183df23b591f6f46f9 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Tue, 10 Nov 2026 13:45:03 -0800 Subject: [PATCH 4/6] save --- docs/enterprise_edition/mcp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/enterprise_edition/mcp.md b/docs/enterprise_edition/mcp.md index 2d933da2..61b9a221 100644 --- a/docs/enterprise_edition/mcp.md +++ b/docs/enterprise_edition/mcp.md @@ -125,7 +125,7 @@ The MCP server comes with four tools: | `pgdog.proxy_logs` | Fetch real-time logs from Kube containers running PgDog. | | `pgdog.auth_check` | A no-op tool that allows you to verify if the harness has the correct Bearer token. | -An agent typically doesn't need more instructions to use these tools. For example, a common prompt to debug a production incident could be: +An agent typically doesn't need special instructions to use these tools. For example, a common prompt to debug a production incident could be: === "Prompt" From b5a5ac3ac7497b4d06e0a587f6cf6cdcc15f1b25 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Tue, 10 Nov 2026 13:48:39 -0800 Subject: [PATCH 5/6] remove cutover save config --- docs/configuration/pgdog.toml/general.md | 6 ------ docs/enterprise_edition/mcp.md | 4 ++++ docs/features/sharding/resharding/cutover.md | 19 ++----------------- 3 files changed, 6 insertions(+), 23 deletions(-) diff --git a/docs/configuration/pgdog.toml/general.md b/docs/configuration/pgdog.toml/general.md index 07bd4e10..98755f6b 100644 --- a/docs/configuration/pgdog.toml/general.md +++ b/docs/configuration/pgdog.toml/general.md @@ -722,12 +722,6 @@ Replication lag threshold (in bytes) at which PgDog will pause traffic automatic Default: **`1_000_000`** (1 MiB) -### `cutover_save_config` - -Save the swapped configuration to disk after a [traffic cutover](../../features/sharding/resharding/cutover.md#swap-the-configuration). When enabled, PgDog will backup both configuration files as `pgdog.bak.toml` and `users.bak.toml`, and write the new configuration to `pgdog.toml` and `users.toml`. - -Default: **`false`** (disabled) - ### `cutover_replication_lag_threshold` Replication lag (in bytes) that must be reached before PgDog will [swap the configuration](../../features/sharding/resharding/cutover.md#swap-the-configuration) during a cutover. diff --git a/docs/enterprise_edition/mcp.md b/docs/enterprise_edition/mcp.md index 61b9a221..5327adbf 100644 --- a/docs/enterprise_edition/mcp.md +++ b/docs/enterprise_edition/mcp.md @@ -1,3 +1,7 @@ +--- +icon: material/robot +--- + # MCP !!! note "New feature" diff --git a/docs/features/sharding/resharding/cutover.md b/docs/features/sharding/resharding/cutover.md index 65f99a56..6f65b0b1 100644 --- a/docs/features/sharding/resharding/cutover.md +++ b/docs/features/sharding/resharding/cutover.md @@ -82,19 +82,7 @@ If something goes wrong after the traffic is moved to the new (destination) data For this to work, the original database must remain in the [configuration files](../../../configuration/index.md), so PgDog performs a swap: source becomes destination and destination becomes the source database. This is the equivalent of running `sed s/source/destination/g` (and vice versa) on both `pgdog.toml` and `users.toml` files, making sure the clients don't know the databases have been changed. -The configuration swap happens in memory, but PgDog has the ability to write the new configuration files to disk as well. This is disabled by default, but can be enabled with a setting: - -=== "pgdog.toml" - ```toml - [general] - cutover_save_config = true - ``` -=== "Helm chart" - ```yaml - cutoverSaveConfig: true - ``` - -When enabled, PgDog will backup both configuration files, `pgdog.toml` as `pgdog.bak.toml` and `users.toml` as `users.bak.toml`, and save its in-memory configuration to `pgdog.toml` and `users.toml` respectively, so the new cutover configuration persists in case of an error. +The configuration swap happens in memory. !!! note "Multi-node deployments" If you're running more than one PgDog node, you should consider deploying our [Enterprise Edition](../../../enterprise_edition/index.md), which has support for saving the configuration files on multiple PgDog nodes at the same time. @@ -167,10 +155,7 @@ To restore traffic to the original cluster, run a `CUTOVER` against the reverse CUTOVER ; ``` -This performs the same atomic swap in reverse: the source and destination are swapped back in `pgdog.toml` and `users.toml`, and traffic returns to the original cluster. Because the reverse stream kept the original cluster in sync, no data written to the new cluster is lost. The task's status in `SHOW TASKS` shows `rolling back` while this happens. - -!!! note "Restoring the configuration files" - The rollback swaps the configuration back in memory (and on disk when [`cutover_save_config`](#swap-the-configuration) is enabled). If you enabled `cutover_save_config`, the configuration as it was before the original cutover is also preserved in the `pgdog.bak.toml` and `users.bak.toml` backups, so you can always restore the previous state by hand. +This performs the same atomic swap in reverse: the source and destination are swapped back in memory, and traffic returns to the original cluster. Because the reverse stream kept the original cluster in sync, no data written to the new cluster is lost. The task's status in `SHOW TASKS` shows `rolling back` while this happens. ### Finalizing the migration From 0780d998684a0e84b290748fbc82833155da1b48 Mon Sep 17 00:00:00 2001 From: Lev Kokotov Date: Tue, 10 Nov 2026 13:51:37 -0800 Subject: [PATCH 6/6] exception --- tests/test_code_blocks.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/test_code_blocks.py b/tests/test_code_blocks.py index a6707f88..a2e025d4 100644 --- a/tests/test_code_blocks.py +++ b/tests/test_code_blocks.py @@ -23,7 +23,11 @@ def verify(binary): for file in glob.glob("docs/**/*.md", recursive=True): - skip_toml = file.startswith("docs/enterprise_edition/control_plane/") + # Control plane configuration cannot be validated by pgdog configcheck. + skip_toml = ( + file.startswith("docs/enterprise_edition/control_plane/") + or file == "docs/enterprise_edition/mcp.md" + ) with open(file, "r") as f: content = f.read() print(f"Checking {file}")