pg.ddx.io: the PostgreSQL community's memory MCP server
io.ddx.pg · Updated
Every PostgreSQL mailing list since 1991, linked to the commits, code, commitfest and docs.
At a glance
pg.ddx.io: the PostgreSQL community's memory is an MCP server in the Databases & Storage category. It is hosted remotely and connects over HTTP, and declares no required credentials. It exposes 60 tools, including retrieve_context, animal_history and animal_owner_contributions. It scores D (33/100) on the MCP Skills Hub health score as of Oct 28, 2026.
One-click install
Opens your editor and pre-fills the config. Your editor will ask before adding it.
How to install pg.ddx.io: the PostgreSQL community's memory in your AI client
Setup for Claude Code, Claude Desktop, Cursor, Codex, Windsurf, Cline and VS Code — copy-paste ready.
How to install pg.ddx.io: the PostgreSQL community's memory in Claude CodeAnthropic's agentic CLI
Add the server
bashclaude mcp add --transport http archive https://pg.ddx.io/mcpVerify it's connected
bashclaude mcp listSharing it with your team?
Add `--scope project` to write it to .mcp.json in the repository root, which you can commit (with the secrets left as environment variables).
Use it in a session
Ask Claude to use the tools this server exposes (e.g. retrieve_context, animal_history, animal_owner_contributions). It discovers them automatically.
How to install pg.ddx.io: the PostgreSQL community's memory in Claude DesktopDesktop app (MCP config)
Open your MCP config
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json
Add this server
json{ "mcpServers": { "archive": { "command": "npx", "args": [ "-y", "mcp-remote", "https://pg.ddx.io/mcp" ] } } }Why the wrapper?
This is a remote (HTTP) server and Claude Desktop only launches local processes, so mcp-remote proxies the connection. It will open a browser window if the server needs OAuth.
Restart Claude Desktop
The tools appear under the 🔌 menu once the app reloads.
How to install pg.ddx.io: the PostgreSQL community's memory in CursorAI-first code editor
Create / edit .cursor/mcp.json in your project
json{ "mcpServers": { "archive": { "url": "https://pg.ddx.io/mcp" } } }Enable it
Cursor Settings → MCP → toggle the server on. Tools become available to the Composer/Agent.
How to install pg.ddx.io: the PostgreSQL community's memory in Codex CLIOpenAI coding agent
Add to ~/.codex/config.toml
toml[mcp_servers.archive] command = "npx" args = ["-y", "mcp-remote", "https://pg.ddx.io/mcp"]Why the wrapper?
Codex runs MCP servers as local processes, so mcp-remote bridges this HTTP endpoint to stdio.
Run Codex
Codex loads MCP servers from config.toml on startup and exposes their tools to the agent.
How to install pg.ddx.io: the PostgreSQL community's memory in WindsurfCodeium's agentic IDE
Edit ~/.codeium/windsurf/mcp_config.json
json{ "mcpServers": { "archive": { "serverUrl": "https://pg.ddx.io/mcp" } } }Reload
Windsurf → Cascade → refresh MCP servers. Cascade can now call the tools.
How to install pg.ddx.io: the PostgreSQL community's memory in ClineVS Code autonomous agent
Open Cline → MCP Servers → Configure
Adds to cline_mcp_settings.json.
Add the server
json{ "mcpServers": { "archive": { "type": "streamableHttp", "url": "https://pg.ddx.io/mcp" } } }
How to install pg.ddx.io: the PostgreSQL community's memory in VS CodeCopilot / MCP support
Create .vscode/mcp.json
json{ "servers": { "archive": { "type": "http", "url": "https://pg.ddx.io/mcp" } } }Start it
VS Code shows a ▶ Start action above the server entry. Agent mode (Copilot Chat) can then use the tools.
What tools does pg.ddx.io: the PostgreSQL community's memory expose? (60)
Read from the live server. Click any tool for its input schema.
- retrieve_contextSTART HERE for a question about PostgreSQL. Searches every mailing list (inbox narrows it) with hybrid keyword + semantic ranking and returns cited passages that fit token_budget (default 4000, max 32000): one passage per thread, each the author's own words (quotes, signature and patch removed, cut at ~1200 chars) with url, inbox, message_id, from and date. found=false with a reason when the archi
- animal_historyRun timeline for one animal. Filterable by branch and start cutoff; ordered newest first.
- animal_owner_contributionsAnimals run by one owner: list, branches each tracks, last status, first_seen_at and elapsed days since first observation.
- blame_symbolShow the commit history that modified a symbol's file, filtered to the symbol's line range.
- browse_by_dateBrowse threads within a specific date range. Useful for exploring what was discussed during a particular time period.
- build_status_freshnessMost recent :entry/last-build-at observation across all entries. Use to detect a stalled cfbot scraper.
- buildfarm_overviewHigh-level buildfarm health: animal count, recent run counts, currently-failing animals, top owners, OS / branch breakdown, and freshness.
- check_upstream_statusCheck whether a pull request has been merged upstream. Returns the latest patch series head commit and any merge information.
- code_index_statusGet code indexing statistics: files indexed, symbol counts by kind and language, edge count, community count.
- codebase_mapGet a directory-level overview of the codebase showing file counts and symbol counts per directory.
- commit_buildfarm_statusBuildfarm results for one PostgreSQL commit: every animal that built it, with branch, status (passed/failed/flapping), the failing stage and the log url, plus a {passed, failed, flapping, unknown} rollup. commit_sha is a SHA (>= 7 hex) or a branch, tag or major version (17, 9.6) for the commit it points at. Cite the commit SHA and the log urls.
- commit_historyEverything linked to one commit: subject, author and date with its sha, the mail thread its Discussion: link names (participants resolved to people and organizations), the commitfest entry if tracked, and Discord mentions. For postgres also first_releases (per branch the change landed on: branch, sha, release e.g. 14.23 or null when unreleased, first_version incl. betas, shipped=false when it was
- commitfest_statsOverview of all indexed commitfests: count by status, top contributors (entries authored), distinct people / commitfests / entries totals.
- contribution_summarySummary of contribution counts per release: unique people, distinct commits, role breakdown (count(DISTINCT commit_sha) per role, canonical authoritative repos only), and revert-commit count. Powers the /community hero strip.
- detect_changesDetect which symbols changed between two commits by comparing file content hashes.
- discussion_linksDiscussion / Closes / Fixes / Backpatch-through trailers attached to one commit. Returns the raw trailer text and any URL extracted. For the messages those links resolve to, plus the committers announcement and messages citing the SHA, use git_search (mail_refs on each result).
- embedding_statusGet embedding coverage statistics: how many messages have embeddings, which model was used, and when embeddings were last generated.
- entry_branchesRepository branches tracked for a commitfest entry. Joins commitfest.entry_repos with ag_repositories so callers see repo name + branch_name + is_authoritative.
- entry_historyStatus changes for a commitfest entry across commitfests. The relational table doesn't carry an audit log, so we approximate the patch's lifeline by joining on shared :entry/thread-message-id (precise) and falling back to title-prefix substring (weak).
- find_breaksAnimals that failed on a branch within the time window bounded by two commit SHAs. The window is defined by the earliest started_at observed for either SHA on that branch — not by git topological order, since the buildfarm tables don't carry commit ordering.
- find_contributionsFind raw contribution rows for one person: git commit SHAs / buildfarm animals tagged with a role + release. Useful for drill-down on a contributor's recent work.
- find_dead_codeFind functions/methods with zero incoming call graph edges (potentially unused code).
- find_entries_for_authorFind commitfest entries where the given person is an author. Looks up by email (exact) or by name (substring, case-sensitive).
- find_entries_for_threadFind commitfest entries linked to a pgsql-hackers thread by Message-ID. (Returns empty until the mailing-list cross-reference scrape lands; the index attribute :entry/thread-message-id is in the schema.)
- find_entries_with_failures_onCross-domain feed: recent failed buildfarm runs for a named animal, plus commitfest entries with cfbot :failing rollups whose tracked branches overlap the animal's. Note: buildfarm runs commit SHAs and cfbot runs cf/<id> branches, so this verb correlates by branch overlap and time window — not by direct schema join.
- find_failing_patchesCommitfest entries whose latest cfbot build fails on at least one platform: cf_id, title, entry_status and commitfest_number. entry_status filters (default the active reviewable statuses, e.g. needs-review, ready-for-committer); platform narrows to one CI platform; limit caps the list. Cite https://commitfest.postgresql.org/patch/<cf_id>/.
- find_failing_runsMost recent failing buildfarm runs across the entire fleet. Filterable by branch and start cutoff. Use to answer 'what is broken right now?'
- find_passing_long_pendingGreen patches stuck in review: entries whose builds pass on every platform yet whose :entry/last-updated is older than N days. Useful for the 'why isn't this committed yet?' question.
- find_patches_by_platform_statusPatches that pass on some platforms but not others. Example: passing on linux but failing on macos -> portability bug.
- find_patternSearch for a regex pattern in code symbol bodies. Uses trigram indexes for acceleration.
- find_rebase_needed_patchesEntries cfbot reports as no longer applying to master tip (:entry/applies-cleanly is false). These need an author rebase.
- find_related_discussionsFind mailing list messages related to a commit, topic, or PR. A postgres commit SHA (7-40 hex) returns the mail that refers to that commit (match_mode commit): its Discussion: threads first, then the committers announcement, then messages citing the hash, each with how_it_refers. Anything else searches subject and Message-ID fields via case-insensitive substring; if that returns no hits and an emb
- find_similar_messagesFind messages similar to a given message using its embedding vector. Useful for finding related discussions or duplicate threads.
- get_animalProfile of one buildfarm animal: hardware/OS/compiler/owner, branches tracked, last build status, plus the last 20 runs (any branch).
- get_attachmentThe content of one attachment of a mail message (a patch, a log, a test case), chosen by 1-based index or a filename substring, as listed in get_message/get_thread attachments. Text attachments come back as decoded text (a .patch is ready to read or `git apply`), binary ones as base64 with encoding=base64; size is the decoded byte count. Cite the message as https://postgr.es/m/<message_id>.
- get_author_messagesFind messages by a specific author, optionally filtered by date range. Uses the f: (from) search prefix.
- get_calleesFind all symbols that the given symbol calls/references (forward call graph).
- get_callersReverse call graph: the symbols that call or reference qualified_name (from search_symbols), each with its file and lines, like `git grep -w <name>` restricted to call sites. HEAD only; macro expansion and function pointers are not followed. limit caps the list. Read a caller with git_show_file at its line.
- get_commitfestGet a single commitfest with entries grouped by status and the top contributors (authors with the most entries).
- get_communitiesList Louvain community clusters detected in the call graph. Communities group related symbols by functional area.
- get_communityGet details and member symbols for a specific community.
- get_contributorA contributor's profile by email (exact) or name (substring): canonical name, page hash, totals and per-release counts by role (authored, reviewed, committed, reported, ...), the 5 latest credited commits (commit_sha = the git SHA, roles = every role they had in it), and buildfarm animals they own. People who hid their page are excluded from name lookups. For what they did recently use whats_new.
- get_contributor_historyShow all past mailing list submissions by a contributor (matched by email address or name).
- get_dependentsGet transitive dependents: all symbols in the blast radius if this symbol changes.
- get_doc_pageOne PostgreSQL documentation page as text: path (e.g. "brin.html" or "sql-createtable.html") and optional version ("17", "current"; default the latest). Returns its url, path and stored text (body) with fetched_at. Use search_docs to find the path. Cite the returned url.
- get_entryOne commitfest entry by cf_id (the number in commitfest.postgresql.org/patch/<cf_id>/): title, status, commitfest, authors, reviewers, committer, its mail threads and branches. Read the thread with get_thread; cfbot state with find_failing_patches. Cite https://commitfest.postgresql.org/patch/<cf_id>/.
- get_execution_flowsTrace execution flow paths through the call graph from entry points.
- get_impactAnalyze the impact of modifying a symbol: risk level, blast radius, affected communities and execution flows.
- get_inbox_infoGet metadata for an inbox (name, addresses, message count, last activity)
- get_inbox_statsReturn aggregate statistics about an inbox: message counts by time period, top authors, and activity trends.
- get_inbox_summaryPer-inbox summary: total messages, top 10 posters, thread count, date range, and lifetime average messages/day (total messages divided by the days spanned by the archive).
- get_messageOne mail message by Message-ID: headers, in_reply_to/references, decoded body text (by default the author's own words: quoted replies and their attributions, forwarded or Outlook-quoted mail, inline patches, diffstats and the signature removed; full_text=true for everything, quotes included), attachments [{index, filename, content_type, size}] and has_patch. quotes checks citations: each comes bac
- get_message_headersGet email headers as structured key/value pairs. Returns all headers or a specific header by name.
- get_message_referencesDiscover cross-references in a message. Returns explicit References/In-Reply-To headers plus any Message-IDs found in the body text, with archive lookup for each.
- get_new_messagesReturn messages newer than a given article number cursor, enabling agents to poll for new messages without re-scanning. Use after=0 for the first call, then use the returned last_article_num as the cursor for subsequent calls.
- get_patch_branchesGet the git branches created from a patch series. Shows what branches were applied from email patches for code intelligence analysis.
- get_patch_build_historyBuild matrix for one entry: per-platform/config status, log URL, observation time, applies-cleanly flag, rollup.
- get_patch_seriesGet patch submission history for a forge pull request URL. Returns all iterations submitted to the mailing list.
- get_raw_messageGet the complete raw RFC 822 email bytes for a message. Useful for agents that need to parse headers/structure themselves or forward messages.
- get_repo_sync_statsGet commit frequency analysis and sync statistics for a repository. Returns median commit interval, recommended poll frequency, and recent fetch log.
What the code can do
This is a remote server — nothing is installed or run on your machine, so there is no local code to analyze. What it can reach is described above: your requests go to the provider's host.
Before you install
Signals gathered from the source repo and package registry — not a safety verdict.
What it can reach
- Third-party hosted service — Your requests and any data in them are sent to pg.ddx.io.
- No local execution — Nothing is installed or run on your machine.
- No source repository — This registry entry does not link to a public repo, so its code cannot be reviewed before you install it.
Client compatibility
Health score
D · 33Maintenance, adoption, transparency and packaging — not a safety audit. How this is calculated
- Maintenance30%not measurable
No commit history available.
- Adoption20%not measurable
No usage data available.
- Transparency20%25%
1/4: ✗ public source repo, ✗ declared license, ✗ documentation, ✓ discoverable tool list.
- Provenance15%0%
No source repository to trace the code back to.
- Packaging15%75%
Remote endpoint; authentication requirements not declared.
Alternatives to pg.ddx.io: the PostgreSQL community's memory
- Codebase MemoryA · 99Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
- Cairn.ink MemoryA · 80Cross-session memory for AI agents with a Source Receipt for every memory, over MCP.
- PostgreSQL (hardened, read-only)A · 87Read-only PostgreSQL over MCP. Writes refused at the parsed SQL, plus a READ ONLY transaction.
- Atlaso MemoryB · 68Atlaso, the AI memory layer: one shared, persistent memory for every AI tool you connect.
Maintain pg.ddx.io: the PostgreSQL community's memory? Add a badge to your README
Shows its health grade, and links readers to install steps for every client.
[](https://mcp-skills-hub.vercel.app/mcps/io-ddx-pg-archive)Catalog data refreshed . Something wrong? Report it.