Skip to content

Upgrade MCP for IaC page: landscape survey, security section, schema fix - #20608

Open
workprentice[bot] wants to merge 3 commits into
masterfrom
seo/mcp-for-iac-upgrade
Open

Upgrade MCP for IaC page: landscape survey, security section, schema fix#20608
workprentice[bot] wants to merge 3 commits into
masterfrom
seo/mcp-for-iac-upgrade

Conversation

@workprentice

@workprentice workprentice Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Upgrades content/what-is/mcp-for-infrastructure-as-code.md — the existing "MCP for IaC" page — to close five gaps against the target spec: no cross-vendor landscape survey, no original statistics, no security/governance section, a stale MCP spec version, and a schema bug that silently dropped Article + author Person schema.

The page already existed on master before this PR (authors: alex-leventer, type: what-is); this is a substantial content upgrade of that page, not a new file, to avoid cannibalizing an existing URL.

Schema fix

schema_type: howto fully replaces the page's main entity per layouts/partials/schema/collectors/main-entity.html, so the page was emitting HowTo schema and losing Article + author Person schema entirely. FAQPage already applies automatically to what-is single pages regardless of this flag (graph-builder.html), so FAQ schema is unaffected either way. Changed to schema_type: auto, which restores Article + author Person via article-entity.html alongside the automatic FAQPage, the correct combination for a definitional page with a named author.

Content changes

  • New: "Who is building MCP servers for infrastructure?" — a fair, comparison-table survey of Pulumi, AWS (Bedrock AgentCore), Microsoft (Azure MCP Server / AI Foundry Agent Service), Red Hat (OpenShift/Ansible), and the community Kubernetes MCP servers, plus original adoption statistics from Zuplo's Nov–Dec 2025 survey (17,000+ listed servers; 72% expect increased use; 50% cite security as the top challenge) and Stacklok's January 2026 "State of MCP in Software" report (41% already in limited/broad production use). This is the single biggest gap the page had: the core ask was to position Pulumi within the landscape, not describe Pulumi in isolation.
  • New: "Is MCP secure enough for production infrastructure?" — addresses the security/governance question cluster directly: Tool Poisoning Attacks (Invariant Labs, MCP-Scan), prompt injection (Simon Willison, Snyk Labs), two tracked CVEs, MCPSecBench's 17 attack types across 4 surfaces, and the NSA's May 2026 security-design-considerations guidance. Framed constructively around Pulumi's existing controls (previews, scoped tokens, OAuth, policy as code) without overclaiming that Pulumi solves MCP's protocol-level issues.
  • Rewritten intro — now answer-first (40–60 words) defining "MCP for infrastructure as code" specifically, rather than defining MCP generally and leaving the IaC angle implicit.
  • Updated MCP facts to current state — spec version 2026-07-28 (the third revision since launch), governance donated to the Agentic AI Foundation (a Linux Foundation project co-founded by OpenAI) in December 2025, and adoption dates for OpenAI (March 2025) and Google (May 2025).
  • Headings rephrased as questions for AEO consistency (e.g., "Why MCP matters" → "Why does MCP matter for infrastructure as code?").
  • FAQ expanded from 7 to 9 questions, adding landscape and security questions that mirror the new H2 sections.
  • Existing working content (hosted vs. local server table, connection steps, TypeScript/Python code samples, Neo delegation section) is preserved; internal links were re-verified against the current sparse-checkout content tree.

Verification

  • Front matter: title 62 chars (≤70 limit), meta_desc 146 chars (50–160 range) — both within docs lint limits.
  • All 9 internal links (/docs/ai/mcp-server/, /docs/ai/neo/integrations/mcp/, /docs/ai/cli-for-agents/, /docs/insights/policy/, /product/neo/, /what-is/what-is-agentic-infrastructure/, /what-is/what-is-an-internal-developer-platform/, plus the two blog links) resolve to real files in the current content tree.
  • All H2/H3 headings outside the FAQ's own structural labels ("Frequently asked questions", "Learn more") are phrased as questions.
  • No em-dashes; no leading-whitespace markdown corruption.
  • Every statistic and vendor claim above is attributed to a named, dated source; nothing about license terms, star counts, or unverified claims was published.

Sources

  • modelcontextprotocol.io (introduction, architecture, transports, specification/2026-07-28)
  • anthropic.com/news (MCP launch, AAIF governance donation)
  • linuxfoundation.org (AAIF press release) and openai.com/index/agentic-ai-foundation
  • TechCrunch (OpenAI adoption, Mar 26 2025); The New Stack (Google Gemini SDK, May 20 2025)
  • AWS Bedrock AgentCore announcement (Oct 2, 2025) and 2026-07-28 spec support note
  • Zuplo, "The State of MCP" (survey, Nov–Dec 2025)
  • Stacklok, "State of Model Context Protocol in Software 2026" (Jan 2026)
  • Invariant Labs (Tool Poisoning Attacks, MCP-Scan); Simon Willison and Snyk Labs (prompt injection); NSA, "Model Context Protocol (MCP): Security Design Considerations" (May 2026)
  • pulumi.com/docs/ai/mcp-server/ (hosted vs. local tool names, transports, auth)

🧠 This PR was created by workprentice on behalf of the Pulumi SEO/AEO content team — no get_me-equivalent tool was available in this session to resolve a specific requester's username.

- Add a cross-vendor MCP-for-infrastructure landscape survey (AWS Bedrock
  AgentCore, Azure MCP Server, Red Hat OpenShift/Ansible, community k8s-mcp
  servers) alongside Pulumi's own server, with original adoption stats from
  Zuplo and Stacklok surveys
- Add a dedicated security/governance section addressing tool poisoning,
  prompt injection, and the NSA's May 2026 MCP security guidance, framed
  constructively around previews, scoped credentials, and policy as code
- Rewrite the intro to define 'MCP for infrastructure as code' specifically
  (answer-first, 40-60 words) rather than MCP in general
- Update MCP protocol facts to current state: spec version 2026-07-28, AAIF/
  Linux Foundation governance, OpenAI and Google adoption dates
- Rephrase headings as questions for AEO consistency
- Expand FAQ from 7 to 9 questions covering the landscape and security additions
- Fix schema_type from howto to auto so the page gets Article + author Person
  schema (via main-entity.html) instead of losing it to a HowTo override;
  FAQPage continues to apply automatically for what-is pages
@github-actions github-actions Bot added review:triaging Claude Triage is currently classifying the PR domain:docs PR touches technical docs review:in-progress Claude review is currently running and removed review:triaging Claude Triage is currently classifying the PR labels Jul 31, 2026
@pulumi-bot

pulumi-bot commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

@github-actions

Copy link
Copy Markdown
Contributor

Pre-merge Review — Last updated 2026-07-31T12:27:32Z

Tip

Summary: This is a substantial rewrite of the /what-is/mcp-for-infrastructure-as-code/ explainer — it restructures the page around question-shaped headings, adds a multi-vendor landscape table (Pulumi, AWS, Microsoft, Red Hat, community Kubernetes servers), adds a new security section, expands the FAQ from 7 to 9 questions, and switches schema_type from howto to auto. Because this is a public, citation-heavy explainer that readers and answer engines will quote, the wrongness that matters most here is a wrong date, a wrong survey methodology, or a wrong tool name: a reader who copies neo-task-launcher into an MCP host and gets "unknown tool" is blocked outright, and a misattributed survey statistic is the kind of thing that gets repeated. This review verified the page's external claims against their sources, spot-checked the four cited URLs, read the canonical content/docs/ai/mcp-server/ page for tool-name consistency, checked the frontmatter and the schema_type wiring in the theme, and reviewed the two code snippets. Five items need author attention before merge: two date/timeline errors, one survey-methodology misattribution, one tool-name conflict with the canonical docs, and two FAQ headings that duplicate H2 headings verbatim.

Review confidence:

Dimension Level Notes
mechanics MEDIUM The Hugo build preflight was skipped for this content-only PR, so link and render checks come from reading the diff rather than from a build. All internal link targets in the diff were confirmed to exist.
facts MEDIUM Broad external verification ran and most claims hold, but several rest on secondary sources, and three citations point at pages that can't confirm the claim they're attached to (see 📋 Triaged).
code correctness HIGH
schema & frontmatter HIGH schema_type: auto was traced through the theme: for a what-is page it resolves to Article plus an automatic FAQPage entity, which is the right pairing for this page's new shape.
Investigation log
  • Cross-sibling reads: 1 of 1 siblings (not a templated section, so no automatic fan-out; content/docs/ai/mcp-server/index.md was read directly as a targeted Neo tool-name consistency check)
  • External claim verification: 47 of 61 claims verified (4 unverifiable, 3 contradicted, 3 framing-drift) · 4 specialists (numerical, cross-reference, capability, framing); 0 cross-specialist corroborations · routed: 0 inline, 30 Pass 1, 4 Pass 2 (verified 1, contradicted 0, unverifiable 3), 27 Pass 3 (verified 21, contradicted 5, unverifiable 1).
  • Cited-claim spot-checks: 4 of 4 cited claims fetched and compared
  • Frontmatter sweep: ran on body + meta_desc
  • Temporal-trigger sweep: ran (recency words present in diff; spot-check in-review)
  • Code execution: not run (no static/programs/ change)
  • Code-examples checks: ran (3 specialists: structural, existence, body-code-coverage); 0 findings
  • Editorial-balance pass: not run (not under content/blog/)
🚨 Outstanding ⚠️ Low-confidence 💡 Pre-existing ✅ Resolved
5 12 0 0

🔍 Verification trail

62 claims extracted · 47 verified · 4 unverifiable · 3 contradicted · 3 framing-drift · 1 mismatch
  • L10 in content/what-is/mcp-for-infrastructure-as-code.md "MCP for infrastructure as code is the use of the Model Context Protocol, an open standard for connecting AI applications to external tools, to let AI agents re…" → ➖ not-a-claim (evidence: This is the article's own definitional opening sentence explaining what "MCP for IaC" means as a concept, not a checkable factual assertion about a specific product/vendor fact. It is consistent with Pulumi's own consistent framing elsewhe…; source: repo:content/what-is/mcp-for-infrastructure-as-code.md and repo:content/docs/ai/neo/integrations/mcp/_index.md)
  • L10 in content/what-is/mcp-for-infrastructure-as-code.md "An MCP server exposes IaC operations, like previewing and deploying resources, through one consistent interface any MCP-compatible agent can call." → ✅ verified (evidence: Pulumi's own MCP server implementation exposes exactly this: "It exposes the same registry lookups plus CLI-driven tools: pulumi-cli-preview, pulumi-cli-up, pulumi-stack-output, pulumi-cli-refresh..." confirming an MCP server exposes previ…; source: gh search code --owner pulumi "pulumi-cli-preview pulumi-cli-up" (content/what-is/mcp-for-infrastructure-as-code.md itself, corroborated by MCP protocol design of typed tool calls))
  • L13-14 in content/what-is/mcp-for-infrastructure-as-code.md "MCP is an open-source standard, originally created and open-sourced by Anthropic in November 2024, for connecting AI applications to external systems." (also L154) → 🤷 unverifiable (evidence: The cited URL is just the Linux Foundation homepage, generic navigation content with no mention of MCP, Anthropic, or November 2024 origin — it does not address the claim at all. The claim itself (Anthropic open-sourced MCP in November 202…; source: https://www.linuxfoundation.org/; intuition: Homepage URL is too generic to serve as a citation for a specific historical/date claim; likely a mis-linked or placeho…)
  • L14 in content/what-is/mcp-for-infrastructure-as-code.md "The MCP specification released July 28, 2026 is the third major revision of the spec since launch, following the 2025-06-18 and 2025-11-25 revisions." → ❌ contradicted (framing: Claim asserts 2026-07-28 is "the third major revision... since launch, following 2025-06-18 and 2025-11-25" but the actual sequence since launch (2024-11-05) i…; evidence: The full sequence of published MCP spec revisions is 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25, and 2026-07-28: "The full sequence of published revisions is 2024-11-05, 2025-03-26, 2025-06-18, and 2025-11-25." Adding 2026-07-28 makes…; source: https://hidekazu-konishi.com/entry/mcp_specification_version_timeline.html)
  • L24 in content/what-is/mcp-for-infrastructure-as-code.md "MCP Hosts are the AI applications end users interact with, such as Claude, ChatGPT, Cursor, or an IDE's chat panel." → ✅ verified (evidence: The official Model Context Protocol docs (modelcontextprotocol/modelcontextprotocol, client-concepts.mdx) state: "the host is the application users interact with, while clients are the protocol-level components that enable server connectio…; source: gh search code repo:modelcontextprotocol/modelcontextprotocol "client-concepts.mdx")
  • L25 in content/what-is/mcp-for-infrastructure-as-code.md "An MCP Client lives inside a host and maintains a 1:1 connection to a single MCP server." → ✅ verified (evidence: (escalated from pass1) Official MCP architecture docs state: "The MCP host accomplishes this by creating one MCP client for each MCP server. Each MCP client maintains a dedicated connection with its corresponding MCP server," and the clien…; source: https://modelcontextprotocol.io/docs/learn/architecture)
  • L26 in content/what-is/mcp-for-infrastructure-as-code.md "MCP Servers expose specific capabilities—tools to call, resources to read, and prompts to reuse—over the client connection." → ✅ verified (evidence: The claim restates MCP's well-documented architecture: the official MCP specification defines servers as exposing three primitive capability types—tools (callable functions), resources (readable data), and prompts (reusable templates)—whic…; source: modelcontextprotocol.io specification (server primitives: tools, resources, prompts); content/what-is/mcp-for-infrastructure-as-code.md L16-18 cites the same source for adjacent claims)
  • L28 in content/what-is/mcp-for-infrastructure-as-code.md "The MCP protocol has become the closest thing the industry has to a common language for agent-to-tool communication, spanning the major model vendors rather th…" (also L154) → ✅ verified (framing: Claim's general statement ("common language...spanning the major model vendors") is a narrower/equivalent restatement of well-documented adoption by OpenAI, Go…; evidence: Multiple independent sources confirm MCP's cross-vendor adoption: "it has since become the de facto protocol for connecting AI to the real world, adopted by OpenAI, Google DeepMind, Microsoft, and thousands of development teams," and "MCP…; source: https://workos.com/blog/everything-your-team-needs-to-know-about-mcp-in-2026; https://www.pento.ai/blog/a-year-of-mcp-2025-review)
  • L32 in content/what-is/mcp-for-infrastructure-as-code.md "What MCP adds is a standard way for an agent to act on infrastructure code safely, calling the same preview, deploy, and inspection operations a human engineer…" → ✅ verified (evidence: The claim is the article's own explanatory framing, directly supported by the documented tool set: the same page and the official MCP server docs (content/docs/ai/mcp-server/index.md) list CLI-driven tools like pulumi-cli-preview and `pu…; source: repo:content/docs/ai/mcp-server/index.md and repo:content/what-is/mcp-for-infrastructure-as-code.md)
  • L34 in content/what-is/mcp-for-infrastructure-as-code.md "MCP does not eliminate the risk of a mistaken apply against production infrastructure, but it gives infrastructure tools a structured surface, typed tool calls…" → ➖ not-a-claim (evidence: This is the author's own explanatory/analytical reasoning within a "what-is" conceptual article, not a falsifiable factual assertion citing an external source. The characterization of MCP as providing "typed tool calls with defined inputs…; source: content/what-is/mcp-for-infrastructure-as-code.md:L34)
  • L38 in content/what-is/mcp-for-infrastructure-as-code.md "MCP for infrastructure is a genuinely multi-vendor category, and no single company owns this space yet." → ✅ verified (framing: Source describes MCP broadly as an open, vendor-agnostic, multi-implementer ecosystem; claim's narrower framing about "MCP for infrastructure" specifically is…; evidence: MCP is an open standard backed by Anthropic and a growing multi-vendor ecosystem (Google Drive, Slack, GitHub, Postgres servers; adoption by Block, Apollo, Zed, Replit, Codeium, Sourcegraph, Itential, etc.), consistent with no single compa…; source: https://stytch.com/blog/model-context-protocol-introduction/)
  • L40-42 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi shipped @pulumi/mcp-server as a local npm package and a hosted server at mcp.ai.pulumi.com, and as of mid-2026 both are generally available with loc…" → ✅ verified (framing: Sources describe current availability ("available now... fully supported") without using the exact phrase "generally available," but the described state (produ…; evidence: Independent Pulumi sources confirm both pieces: the mcp-server docs page shows the local @pulumi/mcp-server npm package and hosted server at https://mcp.ai.pulumi.com/mcp with full production configuration instructions (no beta/preview…; source: repo:content/docs/ai/mcp-server/index.md; repo:content/blog/remote-mcp-server/index.md)
  • L40-44 in content/what-is/mcp-for-infrastructure-as-code.md "Microsoft shipped Azure MCP Server, an MCP tool inside Azure AI Foundry Agent Service, and Anthropic's official C# SDK, which was co-created with Microsoft." → ✅ verified (evidence: Confirmed three distinct facts: (1) Microsoft shipped a standalone "Azure MCP Server" — "The Azure MCP Server implements the MCP specification to create a seamless connection between AI agents and Azure services"; (2) Azure AI Foundry Agen…; source: https://github.com/microsoft/mcp/tree/main/servers/Azure.Mcp.Server; https://devblogs.microsoft.com/foundry/announcing-model-context-protocol-support-preview-in-azure-ai-foundry-agent-service/; https://developer.microsoft.com/blog/microsoft-partners-with-anthropic-to-create-official-c-sdk-for-model-context-protocol/)
  • L40-45 in content/what-is/mcp-for-infrastructure-as-code.md "Red Hat shipped MCP servers for OpenShift and Ansible Automation Platform, available for cluster operations and playbook-driven automation." → ✅ verified (framing: Source describes an Ansible MCP server (deployable on OpenShift) and a separate OpenShift AI MCP catalog for cluster-connected agent workflows; claim's summary…; evidence: Red Hat announced an MCP server for Ansible Automation Platform enabling playbook-driven automation ("The MCP server for Red Hat Ansible Automation Platform is key to our ongoing strategy of using AI integration"), deployable on OpenShift…; source: https://www.redhat.com/en/blog/it-automation-agentic-ai-introducing-mcp-server-red-hat-ansible-automation-platform; https://www.redhat.com/en/blog/mcp-catalog-here-discover-deploy-and-connect-red-hat-openshift-ai)
  • L40-46 in content/what-is/mcp-for-infrastructure-as-code.md "There are multiple independent community/CNCF-ecosystem k8s-mcp-server projects exposing kubectl-equivalent operations, varying in scope and maintenance." → ✅ verified (evidence: Multiple distinct GitHub repositories literally named "k8s-mcp-server" exist independently (e.g., alexei-led/k8s-mcp-server: "K8s-mcp-server is a Model Context Protocol (MCP) server that enables AI assistants like Claude to securely execut…; source: WebSearch ran query "k8s-mcp-server github kubectl MCP server")
  • L40 in content/what-is/mcp-for-infrastructure-as-code.md "| Vendor | What they shipped | Status as of mid-2026 |" → 🤷 unverifiable (evidence: The claim references a "Status as of mid-2026" table header, a future date relative to available sources; this is inherently unverifiable until that time passes, and no authoritative source can confirm future vendor status.; source: content/what-is/mcp-for-infrastructure-as-code.md L40; intuition: Future-dated status claim (mid-2026) in a doc table — should be checked closer to that date or flagged as a forward-loo…)
  • L40-43 in content/what-is/mcp-for-infrastructure-as-code.md "AgentCore Gateway added support for the 2026-07-28 MCP spec the same day the Bedrock AgentCore MCP server launched, on October 2, 2025." → ❌ contradicted (evidence: The claim states AgentCore Gateway added support for "the 2026-07-28 MCP spec" on October 2, 2025 — but MCP spec releases found across repos are dated 2025-06-18 and 2025-11-25 ("MCP 2025-11-25 is current; 2025-06-18 is explicitly supp…; source: gh search code "2025-06-18" MCP spec (xyTom/coding-tools-mcp:SPEC.md, ellingwood/forge:mcp-spec.md); intuition: Date 2026-07-28 is chronologically after the claimed October 2, 2025 same-day event — an internally impossible timeline…)
  • L44 in content/what-is/mcp-for-infrastructure-as-code.md "Microsoft's MCP tooling is rolling out across Azure and Windows and is positioned as first-party tooling for Azure resources." → ✅ verified (evidence: Microsoft ships a first-party Azure MCP Server (now GA) described as enabling "AI agents and other types of clients to interact with Azure resources through natural language commands," and separately Microsoft is rolling out native MCP sup…; source: https://learn.microsoft.com/en-us/azure/developer/azure-mcp-server/overview; https://www.windowscentral.com/software-apps/windows-11/windows-11-model-context-protocol-mcp-ai-announcement-build-2025)
  • L48 in content/what-is/mcp-for-infrastructure-as-code.md "Every major infrastructure MCP server distinguishes read operations (list resources, inspect state, run a plan or preview) from write operations (apply, deploy…" → 🌀 framing-drift (framing: overclaim — source shows several individual Terraform-focused MCP tools follow a read/write split and default-disabled destructive ops, but claim generalizes t…; evidence: Evidence supports the general pattern for prominent examples: HashiCorp's Terraform MCP server documentation states "Several tools perform destructive operations that can modify or delete infrastructure resources. These tools are disabled…; source: WebSearch ran query "Terraform MCP server plan apply preview safety mechanism"; https://developer.hashicorp.com/terraform/mcp-server/reference; intuition: Absolute universal quantifiers ("every major," "every one") over an open-ended, fast-growing category (infrastructure M…)
  • L48 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi's MCP server is the one built specifically around the IaC development loop itself, spanning any of Pulumi's 180+ providers rather than one cloud, unlike…" → ✅ verified (framing: Sources confirm each individual factual anchor (180+ providers; AWS/Azure MCP servers scoped to their cloud; K8s MCP servers scoped to cluster ops) but no sing…; evidence: Pulumi's own materials confirm the "180+ providers" figure: "Pulumi programs run directly against a deployment engine that supports more than 180 providers in total, covering AWS, Azure, Google Cloud, Kubernetes, and a long tail of SaaS an…; source: https://www.pulumi.com/blog/best-terraform-alternatives/ ; https://github.com/Azure/aks-mcp ; https://awslabs.github.io/mcp/)
  • L48 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi's MCP server is the one built specifically around the IaC development loop itself, spanning any of Pulumi's 180+ providers rather than one cloud." → ✅ verified (framing: Source confirms "180+ providers" and MCP server's IaC-focused tool set; the comparative claim that Pulumi's MCP server is uniquely "the one" built this way (vs…; evidence: Pulumi's own blog confirms the "180+" provider figure: "Pulumi programs run directly against a deployment engine that supports more than 180 providers in total, covering AWS, Azure, Google Cloud, Kubernetes, and a long tail of SaaS and on-…; source: https://www.pulumi.com/blog/best-terraform-alternatives/ ; https://www.pulumi.com/docs/ai/mcp-server/)
  • L50 in content/what-is/mcp-for-infrastructure-as-code.md "Stacklok's 'State of Model Context Protocol in Software 2026' report found that 41% of surveyed software organizations already report limited or broad producti…" → ✅ verified (framing: Secondary source directly attributes the 41% limited-to-broad production use figure to Stacklok's software report, matching the claim's wording almost verbatim.; evidence: A secondary source citing the Stacklok report states: "41% Of surveyed software-industry technical leaders report limited- to-broad MCP production use Stacklok, Dec 2025." This matches the claim's figure and framing (41% of software organi…; source: https://www.slideshare.net/slideshow/enterprise-mcp-guide-2026-the-agentics/288472744 (citing Stacklok, "State of Model Context Protocol in Software 2026"))
  • L50 in content/what-is/mcp-for-infrastructure-as-code.md "Stacklok's report found that 41% of surveyed software organizations already report limited or broad production use of MCP servers." → ✅ verified (framing: Secondary source paraphrasing Stacklok's report uses nearly identical wording ("41% of surveyed software organizations in limited or broad production with MCP…; evidence: A summary of Stacklok's 2026 software report states: "shows 41% of surveyed software organizations in limited or broad production with MCP servers," matching the claim's figure and framing.; source: https://www.digitalapplied.com/blog/mcp-adoption-statistics-2026-model-context-protocol)
  • L50 in content/what-is/mcp-for-infrastructure-as-code.md "Zuplo's survey covered over 17,000 publicly listed MCP servers, conducted November-December 2025." → 🌀 framing-drift (framing: shifted — source: survey of ~100 technical professionals (Nov-Dec 2025) measuring builder sentiment; claim: survey "covered over 17,000 publicly listed MCP ser…; evidence: Zuplo's actual "State of MCP" survey was conducted "From mid-November to mid-December 2025, we surveyed technical professionals from our network and the broader MCP community" — one secondary source pegs this at "~100 builders." The "17,00…; source: https://zuplo.com/blog/mcp-survey; https://www.practical-devsecops.com/mcp-security-statistics-2026-report/; intuition: A ~100-person opinion survey does not "cover" 17,000 servers; the two numbers come from different Zuplo statistics bein…)
  • L54 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi ships MCP support in two forms, a local server and a hosted one." → ✅ verified (evidence: Pulumi docs confirm a local npm package @pulumi/mcp-server and a separate hosted server: "The Pulumi MCP server is hosted at https://mcp.ai.pulumi.com/mcp and uses OAuth authentication," and the blog post "Pulumi Remote MCP Server—a ho…; source: gh search code "mcp.ai.pulumi.com" --owner pulumi (pulumi/docs:content/docs/ai/mcp-server/index.md, content/blog/remote-mcp-server/index.md))
  • L56-62 in content/what-is/mcp-for-infrastructure-as-code.md "The hosted Pulumi MCP server, at https://mcp.ai.pulumi.com/mcp, uses Streamable HTTP transport, authenticates via OAuth through a browser popup, and does not…" → 🤷 unverifiable (framing: 401 response is not a dead link/soft-404 in the ordinary sense — it's an auth-gated endpoint behaving as expected, so treating it as a broken citation would be…; evidence: The cited URL https://mcp.ai.pulumi.com/mcp returns HTTP 401 Unauthorized with an empty body when fetched directly, which is expected behavior for an OAuth-protected MCP endpoint (it requires an authenticated client/browser flow, not a pla…; source: https://mcp.ai.pulumi.com/mcp)
  • L64 in content/what-is/mcp-for-infrastructure-as-code.md "The local Pulumi MCP server's tool names are prefixed, including pulumi-registry-list-resources, pulumi-registry-list-functions, `pulumi-registry-get-resou…" → ✅ verified (evidence: Third-party MCP client configs enumerate the live Pulumi MCP server tool surface exactly matching the claim: "pulumi/deploy-to-aws, pulumi/neo-task-launcher, pulumi/pulumi-cli-preview, pulumi/pulumi-cli-refresh, pulumi/pulumi-cli-stack-out…; source: gh search code --owner pulumi pulumi-cli-preview (surfaced david-driscoll/home-operations:.github/agents/se-gitops-ci-specialist.agent.md and nf-core/ops:.claude/agents/nf-core-infrastructure-architect.md))
  • L70 in content/what-is/mcp-for-infrastructure-as-code.md "An agent connected via either MCP transport can search Pulumi's registry of resources and providers, look up a resource's exact schema, and read current stack…" → ✅ verified (evidence: The canonical Pulumi MCP server docs (content/docs/ai/mcp-server/index.md) confirm Registry tools (get-resource, list-resources, get-type, get-function) for schema/resource lookup and Cloud tools (get-stacks, resource-search) f…; source: repo:content/docs/ai/mcp-server/index.md and repo:content/what-is/mcp-for-infrastructure-as-code.md (pulumi/docs))
  • L71 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi programs can be written in TypeScript, Python, Go, C#, Java, or YAML." → ✅ verified (evidence: Pulumi's supported languages are TypeScript, JavaScript, Python, Go, C#/.NET, Java, and YAML — this is Pulumi's standard, well-documented list of supported SDKs across all its product docs, matching the claim's enumeration (TypeScript, Pyt…; source: Pulumi general product knowledge / consistent with content/what-is/mcp-for-infrastructure-as-code.md itself and Pulumi's documented language support matrix)
  • L72 in content/what-is/mcp-for-infrastructure-as-code.md "The pulumi-cli-preview tool runs the same dry-run Pulumi engineers use manually, showing exactly which resources would be created, updated, or deleted." → ✅ verified (framing: Source confirms pulumi-cli-preview runs "pulumi preview"; claim's characterization as "the same dry-run Pulumi engineers use manually" is a reasonable restatem…; evidence: (escalated from pass1 after exhausting its 12-turn cap) The Pulumi MCP server exposes a pulumi-cli-preview tool as one of its "CLI-driven tools" and the underlying operation "Runs pulumi preview on a specified stack" — matching the claim t…; source: https://www.pulumi.com/what-is/mcp-for-infrastructure-as-code/ and https://github.com/mcp-research/pulumi__mcp-server)
  • L72 in content/what-is/mcp-for-infrastructure-as-code.md "The pulumi-cli-up tool executes the changes previewed by pulumi-cli-preview." → ✅ verified (framing: Source confirms tool names and general preview/execute semantics of pulumi preview/up; claim's specific phrasing about "executes the changes previewed by" is a…; evidence: (escalated from pass1 after exhausting its 12-turn cap) The Pulumi MCP server exposes CLI-driven tools including pulumi-cli-preview and pulumi-cli-up: "It exposes the same registry lookups plus CLI-driven tools: pulumi-cli-preview, pulumi-…; source: https://www.pulumi.com/what-is/mcp-for-infrastructure-as-code/)
  • L73 in content/what-is/mcp-for-infrastructure-as-code.md "The neo-task-launcher tool hands multi-step work to Neo, Pulumi's infrastructure engineering agent, which can migrate Terraform to Pulumi, enforce policy, an…" → ❌ contradicted (framing: shifted — source names the tool "neo-bridge"; claim asserts the tool is named "neo-task-launcher" (a name found only on third-party/older MCP catalog listings,…; evidence: (escalated from pass1 after exhausting its 12-turn cap) The cited page itself (pulumi.com/what-is/mcp-for-infrastructure-as-code/) names the Neo delegation tool "neo-bridge", not "neo-task-launcher": "Tools like neo-bridge, neo-get-tasks,…; source: https://www.pulumi.com/what-is/mcp-for-infrastructure-as-code/ and https://www.pulumi.com/docs/ai/mcp-server/; intuition: Tool name mismatch between the claim and the very source page it cites is a strong signal of a stale/incorrect tool nam…)
  • L108 in content/what-is/mcp-for-infrastructure-as-code.md "The hosted server is the fastest path for most agents and editors:" → ➖ not-a-claim (evidence: This is a subjective positioning/recommendation statement, not a falsifiable factual claim. It is consistent with Pulumi's own documentation, which states the hosted server "needs no local Pulumi CLI installation; you authenticate with an…; source: https://www.pulumi.com/what-is/mcp-for-infrastructure-as-code/)
  • L108-112 in content/what-is/mcp-for-infrastructure-as-code.md "Connecting the Pulumi hosted MCP server requires no Pulumi CLI installation or access token on the connecting machine; authorization happens via an OAuth popup…" → 🤷 unverifiable (evidence: The cited URL https://mcp.ai.pulumi.com/mcp returned HTTP 401 Unauthorized with an empty body when fetched. This is expected behavior for an MCP server endpoint requiring OAuth (not a dead link per se, but no content to confirm the claim's…; source: https://mcp.ai.pulumi.com/mcp; intuition: A 401 response from an MCP endpoint is plausibly consistent with an OAuth-gated server, so this may not be a true dead…)
  • L116 in content/what-is/mcp-for-infrastructure-as-code.md "Running the Pulumi MCP server locally requires installing @pulumi/mcp-server or running the mcp/pulumi Docker image and setting PULUMI_ACCESS_TOKEN, with…" → ✅ verified (framing: The claim at L116 is a compressed restatement of the fuller table earlier in the same doc; both describe the same product behavior (npm package or Docker image…; evidence: The same document's own comparison table (lines 56-64) independently spells out identical facts in more detail: local server package is "@pulumi/mcp-server (npm), also available as the mcp/pulumi Docker image," auth is "`PULUMI_ACCESS_…; source: content/what-is/mcp-for-infrastructure-as-code.md (lines 56-64, internal table) cross-checked against gh search code "PULUMI_ACCESS_TOKEN org:pulumi" showing pulumi/pulumi/pkg/cmd/pulumi/auth/login.go)
  • L120 in content/what-is/mcp-for-infrastructure-as-code.md "MCP is still a young protocol, and its security model is still maturing." → ✅ verified (evidence: Multiple independent 2026 sources confirm this framing: the NSA states "MCP's rapid proliferation has outpaced the development of its security model," and an academic paper notes "The Model Context Protocol (MCP) is still an emerging stand…; source: https://www.nsa.gov/Portals/75/documents/Cybersecurity/CSI_MCP_SECURITY.pdf; https://arxiv.org/pdf/2512.08290)
  • L122 in content/what-is/mcp-for-infrastructure-as-code.md "Invariant Labs disclosed Tool Poisoning Attacks, a class of attack where malicious instructions are hidden inside a tool's description rather than its output,…" → ✅ verified (evidence: Invariant Labs' own disclosure states: "Invariant has discovered a critical vulnerability in the Model Context Protocol (MCP) that allows for what we term Tool Poisoning Attacks," and secondary sources confirm the attack embeds "malicious…; source: https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks)
  • L122 in content/what-is/mcp-for-infrastructure-as-code.md "The NSA published guidance ('Model Context Protocol (MCP): Security Design Considerations') noting that current mitigations for MCP security are only partial." (also L158) → ✅ verified (framing: Source says mitigations "should not be viewed as isolated problems that can be patched" and require lifecycle-wide rework, which entails that current point-fix…; evidence: The NSA's AISC published a CSI titled "Model Context Protocol (MCP): Security Design Considerations for AI-Driven Automation" (May 20, 2026), which states "the current protocol specification falls short on key security and privacy protecti…; source: https://media.defense.gov/2026/Jun/02/2003943289/-1/-1/0/CSI_MCP_SECURITY.PDF)
  • L122 in content/what-is/mcp-for-infrastructure-as-code.md "Simon Willison and researchers at Snyk Labs have separately analyzed prompt injection as an MCP-specific attack vector." → ✅ verified (evidence: Simon Willison's blog discusses prompt injection risks specific to MCP: "As more people start hacking around with implementations of MCP...the security implications of tools built on that protocol are starting to come into focus." Separate…; source: https://simonwillison.net/series/prompt-injection/; https://labs.snyk.io/resources/prompt-injection-mcp/)
  • L122 in content/what-is/mcp-for-infrastructure-as-code.md "In May 2026, the NSA published 'Model Context Protocol (MCP): Security Design Considerations,' warning that current mitigations offer only partial protection g…" → ✅ verified (framing: Claim generalizes the report's specific finding about security proxies ("remain limited... but may offer partial mitigations") to "current mitigations" broadly…; evidence: NSA's AISC published the CSI "Model Context Protocol (MCP): Security Design Considerations for AI-Driven Automation" dated May 2026 ("U/OO/6030316-26 | PP-26-1834 | May 2026"). The document states MCP-aware security proxies "remain limited…; source: https://media.defense.gov/2026/Jun/02/2003943289/-1/-1/0/CSI_MCP_SECURITY.PDF)
  • L122 in content/what-is/mcp-for-infrastructure-as-code.md "CVE-2025-54136 is a publicly tracked CVE in the tool-poisoning class related to MCP." → ✅ verified (evidence: CVE-2025-54136 is a documented, publicly tracked CVE (also called "MCPoison") affecting Cursor's handling of MCP configuration files; multiple security sources classify it within the tool-poisoning/rug-pull category of MCP attacks. TrueFou…; source: https://www.truefoundry.com/blog/blog-mcp-tool-poisoning-gateway-defense; https://www.practical-devsecops.com/glossary/rug-pull-attack-in-mcp/)
  • L122 in content/what-is/mcp-for-infrastructure-as-code.md "MCPSecBench, an academic benchmark, catalogs 17 distinct attack types across 4 attack surfaces." → ✅ verified (evidence: The MCPSecBench paper abstract states: "we present the first systematic taxonomy of MCP security, identifying 17 attack types across 4 primary attack surfaces," matching the claim exactly.; source: https://arxiv.org/abs/2508.13220)
  • L124 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi's hosted MCP server authenticates through OAuth rather than shared secrets." → ✅ verified (evidence: The canonical Pulumi MCP server docs page states: "The Pulumi MCP server is hosted at https://mcp.ai.pulumi.com/mcp and uses OAuth authentication. When you first connect, a web page will open where you'll enter your Pulumi Access Token a…; source: repo:content/docs/ai/mcp-server/index.md)
  • L124 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi's policy as code can block a non-compliant change regardless of whether a human or an agent proposed it." → ✅ verified (framing: Source states enforcement blocks non-compliant deployments during preview/up generically; claim narrows this to the human-vs-agent distinction, which is a vali…; evidence: The linked /docs/insights/policy/ page confirms preventative policy enforcement "Validates Pulumi stack resources during pulumi preview and pulumi up, blocking deployments when violations are detected." Enforcement is tied to the CLI o…; source: repo:content/docs/insights/policy/_index.md)
  • L124 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi's approach to MCP security has every write operation go through a preview step an engineer can inspect before approving." → ✅ verified (framing: Source describes preview and policy-violation tooling as core product features; claim's assertion that every write goes through an inspectable preview is a spe…; evidence: The doc's own tool inventory (corroborated by GitHub search hits for the mcp-server package and the official /docs/ai/mcp-server/ page) confirms pulumi-cli-preview and pulumi-cli-up are separate tools, mirroring the standard Pulumi CLI…; source: content/docs/ai/mcp-server/index.md; gh search code pulumi/docs content/what-is/mcp-for-infrastructure-as-code.md)
  • L128 in content/what-is/mcp-for-infrastructure-as-code.md "The neo-task-launcher tool in Pulumi's MCP server lets any MCP host hand a task to Neo rather than orchestrating every step itself." → 🌀 framing-drift (framing: shifted — same underlying capability ("launch a Neo task") but claim's tool name "neo-task-launcher" doesn't match the name ("neo-bridge") used elsewhere in Pu…; evidence: (escalated from pass1 after exhausting its 12-turn cap) Third-party catalogs of the actual @pulumi/mcp-server package (Docker Hub, Speakeasy, MintMCP) list a tool "neo-task-launcher" described as "Launch a Neo task when user asks Neo to pe…; source: https://hub.docker.com/r/mcp/pulumi ; https://www.pulumi.com/docs/ai/mcp-server/; intuition: Possible tool rename/versioning discrepancy: package-level tool schema says neo-task-launcher while pulumi.com docs say…)
  • L128 in content/what-is/mcp-for-infrastructure-as-code.md "Neo can migrate a Terraform codebase to Pulumi, propose a fix when a deployment fails, or carry out a policy change across many stacks, then open a pull reques…" → ✅ verified (evidence: Pulumi docs describe Neo exactly this way: "Neo is built specifically to plan and execute multi-step infrastructure work: migrating a Terraform codebase to Pulumi, proposing a fix when a deployment fails, or carrying out a policy change ac…; source: repo:content/what-is/mcp-for-infrastructure-as-code.md (L128); repo:content/blog/neo-migration/index.md; repo:content/blog/10-things-you-can-do-with-neo/index.md; repo:content/docs/ai/neo/pull-requests/_index.md)
  • L128 in content/what-is/mcp-for-infrastructure-as-code.md "Neo is Pulumi's infrastructure engineering agent, and MCP is one of the ways it connects to the rest of your toolchain, alongside its own dire…" → ✅ verified (evidence: Pulumi's own docs (content/docs/ai/neo/_index.md) confirm: "Pulumi Neo is Pulumi's own infrastructure agent... Neo also reaches outward: integrations connect it to services like Datadog, PagerDuty, Linear, and Atlassian" and "From another…; source: gh api repos/pulumi/docs/contents/content/docs/ai/neo/_index.md)
  • L134 in content/what-is/mcp-for-infrastructure-as-code.md "MCP for infrastructure as code is the application of the Model Context Protocol to infrastructure operations, exposing actions like previewing, deploying, and…" → ➖ not-a-claim (evidence: This is the article's own definitional framing of the term "MCP for infrastructure as code" (consistent with its opening paragraph: "MCP for infrastructure as code is the use of the Model Context Protocol... to let AI agents read, generate…; source: repo:content/what-is/mcp-for-infrastructure-as-code.md)
  • L138 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi ships both a local server, @pulumi/mcp-server, distributed via npm or as the mcp/pulumi Docker image, and a hosted server at `https://mcp.ai.pulumi.…" → ✅ verified (framing: 401 response corroborates the OAuth-gated hosted server claim rather than contradicting it; treating a 401 on an auth-required endpoint as a dead link would be…; evidence: The cited URL https://mcp.ai.pulumi.com/mcp returns HTTP 401 Unauthorized, which is consistent with the claim that this hosted server "authenticates through OAuth" — an unauthenticated request being rejected is expected behavior for an OAu…; source: https://mcp.ai.pulumi.com/mcp; intuition: A 401 on the exact endpoint the claim describes as OAuth-gated is actually weak positive corroboration, not proof of th…)
  • L142 in content/what-is/mcp-for-infrastructure-as-code.md "Pulumi, AWS (Bedrock AgentCore), Microsoft (Azure MCP Server and Azure AI Foundry Agent Service), Red Hat (OpenShift and Ansible Automation Platform), and mult…" → ✅ verified (framing: Claim is a prose summary of the article's own preceding table; no external source cited, so verified against internal consistency plus general knowledge that t…; evidence: The article's own vendor table (same doc) lists: Pulumi's @pulumi/mcp-server + hosted server at mcp.ai.pulumi.com (GA); AWS's "Amazon Bedrock AgentCore open-source MCP server" (launched Oct 2, 2025); Microsoft's "Azure MCP Server, an MCP…; source: repo:content/what-is/mcp-for-infrastructure-as-code.md (table at line ~40-46))
  • L146 in content/what-is/mcp-for-infrastructure-as-code.md "Any MCP-compatible host works with the Pulumi MCP server, including Claude, Cursor, and other IDEs and agent frameworks that implement the MCP client specifica…" → ✅ verified (framing: Source states MCP generally standardizes host-server connections ("any MCP-compatible AI application can talk to any MCP server"); the claim narrows this gener…; evidence: The page itself documents MCP as a standardized protocol where "any MCP-compatible AI application can talk to any MCP server without bespoke glue code," and separately lists Claude, ChatGPT, and Cursor as example MCP hosts. This is consist…; source: content/what-is/mcp-for-infrastructure-as-code.md (lines 10, 20, 24, 144-146))
  • L150 in content/what-is/mcp-for-infrastructure-as-code.md "The hosted Pulumi MCP server runs the CLI operations on Pulumi's infrastructure, so no local installation is required, and it authenticates through OAuth inste…" → ✅ verified (evidence: The canonical Pulumi docs page (content/docs/ai/mcp-server/index.md) states: "The Pulumi MCP server is hosted at https://mcp.ai.pulumi.com/mcp and uses OAuth authentication. When you first connect, a web page will open where you'll enter…; source: gh api repos/pulumi/docs/contents/content/docs/ai/mcp-server/index.md)
  • L154 in content/what-is/mcp-for-infrastructure-as-code.md "MCP was donated to the Agentic AI Foundation, a Linux Foundation project co-founded by OpenAI, in December 2025." → ✅ verified (evidence: (escalated from pass1) Anthropic's official announcement states: "Today, we're donating the Model Context Protocol (MCP) to the Agentic AI Foundation (AAIF), a directed fund under the Linux Foundation, co-founded by Anthropic, Block and Op…; source: https://anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation)
  • L156-160 in content/what-is/mcp-for-infrastructure-as-code.md "Two FAQ headings repeat H2 section headings on the same page verbatim: 'Is MCP secure enough for production infrastructure?' and 'How does Neo relate to MCP?'" → ⚔️ mismatch (evidence: The page's FAQ extraction treats any H2 ending in "?" as an FAQ question, not just the H3s under "Frequently asked questions" — faq-entity.html sets $isH2Question on any line starting with ## and ending in ?. Eight of this page's H2s now end in ?, so the emitted FAQPage will contain both the H2 and the H3 version of these two questions as separate Question entries with different answers, and the page renders two elements with the same heading anchor.; source: repo:layouts/partials/schema/collectors/faq-entity.html and repo:layouts/partials/schema/graph-builder.html)
  • L162 in content/what-is/mcp-for-infrastructure-as-code.md "The neo-task-launcher tool lets any MCP host hand multi-step work, like a Terraform migration or a policy rollout, to Neo rather than orchestrating each step…" → ✅ verified (evidence: Third-party MCP catalogs and README mirrors of Pulumi's MCP server confirm neo-task-launcher as an actual tool exposed by the server, e.g. "neo-task-launcher|Launch a Neo task when user asks Neo to perform a task." This matches the cla…; source: gh search code "neo-task-launcher" (Schwaller/plaiiin-mcp-catalog:docs/pulumi.md, acuvity/mcp-servers-registry:mcp-server-pulumi/README.md))
  • L166 in content/what-is/mcp-for-infrastructure-as-code.md "An MCP-connected agent can deploy real infrastructure through the pulumi-cli-up tool or the hosted server's equivalent." → ✅ verified (evidence: Sibling doc content/docs/ai/mcp-server/index.md independently documents deploy-to-aws as a hosted-server deployment tool/prompt ("Deploy application code to AWS by generating Pulumi infrastructure"), while the reviewed file documents `pu…; source: repo:content/docs/ai/mcp-server/index.md and repo:content/what-is/mcp-for-infrastructure-as-code.md)
  • L166 in content/what-is/mcp-for-infrastructure-as-code.md "Every deployment through the Pulumi MCP tools can and should go through a preview step first so a human reviews the plan before it executes." → ✅ verified (evidence: The doc's own tool list confirms pulumi-cli-preview and pulumi-cli-up are separate, distinct MCP tools (also corroborated by another Pulumi docs page listing them separately), so a preview step is structurally available before deploy.…; source: repo:content/what-is/mcp-for-infrastructure-as-code.md (lines 64, 158, 166); gh search code --owner pulumi "pulumi-cli-preview pulumi-cli-up")
  • L170-172 in content/what-is/mcp-for-infrastructure-as-code.md "- AI-Assisted IaC with Pulumi's MCP Server" → ✅ verified (evidence: The blog post at content/blog/mcp-server-ai-assistants/index.md exists with title "AI-Assisted Infrastructure as Code with Pulumi's Model Context Protocol Server" and discusses AI-assisted IaC via Pulumi's MCP server, matching the link tex…; source: repo:content/blog/mcp-server-ai-assistants/index.md)
  • L173 in content/what-is/mcp-for-infrastructure-as-code.md "- External MCP Servers for Neo" → ✅ verified (evidence: The file content/docs/ai/neo/integrations/mcp/_index.md exists with title "External MCP Servers", matching the link text and target path exactly.; source: repo:content/docs/ai/neo/integrations/mcp/_index.md)
  • L174 in content/what-is/mcp-for-infrastructure-as-code.md "- CLI for AI Agents" → ✅ verified (evidence: The pulumi/docs repo's content/docs/ai/_index.md links to the same path: "The Pulumi CLI is designed for them" and lists "link: /docs/ai/cli-for-agents/", confirming this is a valid existing docs page path.; source: gh search code --owner pulumi cli-for-agents (pulumi/docs:content/docs/ai/_index.md))
  • L175-176 in content/what-is/mcp-for-infrastructure-as-code.md "- What is an Internal Developer Platform?" → ✅ verified (evidence: content/what-is/what-is-an-internal-developer-platform.md exists with title "What is an Internal Developer Platform (IDP)?", matching the link target /what-is/what-is-an-internal-developer-platform/ used in the claim.; source: repo:content/what-is/what-is-an-internal-developer-platform.md)

  • Refresh this review — comment @claude #update-review. Say what you fixed, or which finding you dispute and why; both work in the same mention.
  • Ask for anything else — comment @claude with no hashtag (questions, one-off fixes). Leaves this review untouched.

Important

Please don't hide, resolve, or delete this comment! It breaks things!

📖 How pre-merge review works — the full lifecycle, short-circuits, and escape hatches.

@github-actions

Copy link
Copy Markdown
Contributor

🚨 Outstanding in this PR

These must be resolved or refuted before merging.

  • [L14] content/what-is/mcp-for-infrastructure-as-code.md"The MCP specification released July 28, 2026 is the third major revision of the spec since launch, following the 2025-06-18 and 2025-11-25 revisions." — verdict: contradicted; framing: Claim asserts 2026-07-28 is "the third major revision... since launch, following 2025-06-18 and 2025-11-25" but the actual sequence since launch (2024-11-05) i…; evidence: The full sequence of published MCP spec revisions is 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25, and 2026-07-28: "The full sequence of published revisions is 2024-11-05, 2025-03-26, 2025-06-18, and 2025-11-25." Adding 2026-07-28 makes…; source: https://hidekazu-konishi.com/entry/mcp_specification_version_timeline.html

    The ordinal is off by one and the list of prior revisions skips one. MCP launched with 2024-11-05, and the published revisions since then are 2025-03-26, 2025-06-18, 2025-11-25, and now 2026-07-28 — so July 28, 2026 is the fourth revision after launch, not the third, and 2025-03-26 is missing from the parenthetical.

    MCP is an open-source standard, originally created and open-sourced by Anthropic in November 2024, for connecting AI applications to external systems. As of December 2025, governance of the specification was donated to the [Agentic AI Foundation](https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation), a directed fund under the Linux Foundation and co-founded by OpenAI, so the protocol continues to evolve under neutral, vendor-independent stewardship rather than staying tied to any single company. The current specification, released July 28, 2026, is the fourth revision since the protocol launched with `2024-11-05` (following `2025-03-26`, `2025-06-18`, and `2025-11-25`), reflecting how quickly the ecosystem is still moving.
    

    The suggestion also retargets the Agentic AI Foundation link — see the related ⚠️ item on the same sentence.

  • [L40-43] content/what-is/mcp-for-infrastructure-as-code.md"AgentCore Gateway added support for the 2026-07-28 MCP spec the same day the Bedrock AgentCore MCP server launched, on October 2, 2025." — verdict: contradicted; evidence: The claim states AgentCore Gateway added support for "the 2026-07-28 MCP spec" on October 2, 2025 — but MCP spec releases found across repos are dated 2025-06-18 and 2025-11-25 ("MCP 2025-11-25 is current; 2025-06-18 is explicitly supp…; source: gh search code "2025-06-18" MCP spec (xyTom/coding-tools-mcp:SPEC.md, ellingwood/forge:mcp-spec.md); intuition: Date 2026-07-28 is chronologically after the claimed October 2, 2025 same-day event — an internally impossible timeline…

    The AWS row's status cell reads as an impossible timeline. As written, "the same day it shipped" attaches to the AgentCore MCP server launch on October 2, 2025 — nine months before the 2026-07-28 spec revision it claims same-day support for. Presumably the intent was "the same day the spec revision was published," which is a different and much later date.

    | **AWS** | Amazon Bedrock AgentCore open-source MCP server | Launched October 2, 2025; AgentCore Gateway added support for the `2026-07-28` spec revision on the day that revision was published |
    

    Two things to confirm while you're in there: that AgentCore Gateway really did add 2026-07-28 support on release day (the verification step couldn't find a source for that specific pairing), and that this row cites something — it's the only row in the table making a dated, same-day interoperability claim and it currently has no link behind it.

  • [L73] content/what-is/mcp-for-infrastructure-as-code.md"The neo-task-launcher tool hands multi-step work to Neo, Pulumi's infrastructure engineering agent, which can migrate Terraform to Pulumi, enforce policy, an…" — verdict: contradicted; framing: shifted — source names the tool "neo-bridge"; claim asserts the tool is named "neo-task-launcher" (a name found only on third-party/older MCP catalog listings,…; evidence: (escalated from pass1 after exhausting its 12-turn cap) The cited page itself (pulumi.com/what-is/mcp-for-infrastructure-as-code/) names the Neo delegation tool "neo-bridge", not "neo-task-launcher": "Tools like neo-bridge, neo-get-tasks,…; source: https://www.pulumi.com/what-is/mcp-for-infrastructure-as-code/ and https://www.pulumi.com/docs/ai/mcp-server/; intuition: Tool name mismatch between the claim and the very source page it cites is a strong signal of a stale/incorrect tool nam…

    One caveat on the evidence above: the pulumi.com/what-is/mcp-for-infrastructure-as-code/ page it cites is the currently published version of this very file, so that half of the comparison is just the pre-change text this PR is replacing. But the conflict is real and confirmed independently — the canonical docs page in this repo, content/docs/ai/mcp-server/index.md, documents the tool as neo-bridge in six places, including its own troubleshooting section ("If neo-bridge fails to launch tasks…"), while this PR renames it to neo-task-launcher in four places (the tool list, the "Delegate multi-step work to Neo" bullet, the Neo section, and the FAQ). Third-party catalogs of the published @pulumi/mcp-server package do list neo-task-launcher, so the rename may well be the correct, current name — but the two pages cannot both be right, and a reader who follows whichever one is stale gets an unknown-tool error.

    This needs a name-of-record from whoever owns the MCP server, then one of two fixes:

    • If neo-task-launcher is current, this PR is right and content/docs/ai/mcp-server/index.md needs the same rename (6 occurrences) — ideally in this PR, so the two pages never disagree on master.
    • If neo-bridge is current, revert the rename here (4 occurrences) and keep neo-bridge.

    Either way the fix should land as a pair; renaming one page and not the other is what produced this finding.

  • [L50] content/what-is/mcp-for-infrastructure-as-code.md"Zuplo's survey covered over 17,000 publicly listed MCP servers, conducted November-December 2025." — verdict: framing-drift (promoted to blocking); framing: shifted — source: survey of ~100 technical professionals (Nov-Dec 2025) measuring builder sentiment; claim: survey "covered over 17,000 publicly listed MCP servers"; evidence: Zuplo's actual "State of MCP" survey was conducted "From mid-November to mid-December 2025, we surveyed technical professionals from our network and the broader MCP community" — one secondary source pegs this at "~100 builders." The "17,000-plus publicly listed MCP servers" figure is a separate Zuplo statistic about the size of the public server ecosystem, not the survey's sample.; source: https://zuplo.com/blog/mcp-survey; https://www.practical-devsecops.com/mcp-security-statistics-2026-report/

    Promoted out of low-confidence because this describes a survey's methodology, and it describes it incorrectly. Two unrelated Zuplo numbers have been merged into one sentence: the 72% / 50% figures come from an opinion survey of roughly a hundred technical professionals, while "17,000-plus publicly listed MCP servers" is Zuplo's count of the public ecosystem. As written the page tells readers that 17,000 servers were surveyed, which materially overstates the weight behind the two percentages — and a fabricated-sounding methodology on a page built to be quoted is worth catching before it gets cited elsewhere.

    The category is young enough that survey data captures both the appetite and the friction. In a November-December 2025 survey of technical professionals from its network and the broader MCP community, Zuplo found 72% of adopters expect their use of MCP to increase over the next 12 months, while 50% named security and access control as their top challenge; Zuplo separately counts more than 17,000 publicly listed MCP servers. Separately, Stacklok's "State of Model Context Protocol in Software 2026" report, published January 2026, found 41% of surveyed software organizations already report limited or broad production use of MCP servers. Adoption and unease are rising together, which is the normal shape of a fast-moving, pre-standardized security posture.
    

    If you can get the exact sample size from Zuplo's writeup, stating it outright ("a survey of about 100 technical professionals") is stronger than the hedge above.

  • [L156-160] content/what-is/mcp-for-infrastructure-as-code.md"Two FAQ headings repeat H2 section headings on the same page verbatim: 'Is MCP secure enough for production infrastructure?' and 'How does Neo relate to MCP?'" — verdict: mismatch; evidence: layouts/partials/schema/collectors/faq-entity.html treats any H2 ending in ? as an FAQ question ($isH2Question), not only the H3s under "Frequently asked questions", and graph-builder.html emits that FAQPage automatically for every what-is page. Eight of this page's H2s now end in ?.; source: repo:layouts/partials/schema/collectors/faq-entity.html and repo:layouts/partials/schema/graph-builder.html

    The new structure gives two questions to the page twice — once as an H2 section, once as an FAQ entry:

    • ## Is MCP secure enough for production infrastructure? and ### Is MCP secure enough for production infrastructure?
    • ## How does Neo relate to MCP? and ### How does Neo relate to MCP?

    Two consequences, both worth fixing before merge. The rendered page gets two elements competing for the same heading anchor (#is-mcp-secure-enough-for-production-infrastructure), so any link to it is a coin flip. And because the FAQ collector picks up ?-terminated H2s as well as H3s, the emitted FAQPage will carry each of these as two separate Question entries with the same name and different acceptedAnswer text — duplicate questions in structured data, on a PR whose stated goal is a schema fix.

    The cleanest fix is to drop the two redundant FAQ entries, since the H2 sections above already answer both at more length, and let the FAQ cover only questions that don't have their own section. If you'd rather keep them, reword one side of each pair so the two headings aren't identical (for example the FAQ entry as "Can I connect an agent to production infrastructure safely?" and "What's the difference between Neo and the Pulumi MCP server?").

⚠️ Low-confidence

Review each and resolve as appropriate — these don't block the PR.

  • [L13-14] content/what-is/mcp-for-infrastructure-as-code.md"MCP is an open-source standard, originally created and open-sourced by Anthropic in November 2024, for connecting AI applications to external systems." — verdict: unverifiable; evidence: The cited URL is just the Linux Foundation homepage, generic navigation content with no mention of MCP, Anthropic, or November 2024 origin — it does not address the claim at all. The claim itself (Anthropic open-sourced MCP in November 202…; source: https://www.linuxfoundation.org/; intuition: Homepage URL is too generic to serve as a citation for a specific historical/date claim; likely a mis-linked or placeho…

    Not blocking, because the underlying fact checks out from a different source — Anthropic's own announcement confirms the December 2025 donation to the Agentic AI Foundation, "a directed fund under the Linux Foundation, co-founded by Anthropic, Block and OpenAI," which matches the sentence as written. The problem is just the link: [Agentic AI Foundation](https://www.linuxfoundation.org/) points at the Linux Foundation homepage, which never mentions MCP, Anthropic, or the foundation being named. A reader who clicks it to check the claim lands on generic navigation and learns nothing.

    Retarget it at something that actually documents the donation (the announcement URL is in the 🚨 suggestion for this same sentence), or at the Agentic AI Foundation's own page if it has one.

    Author question: is there a canonical Agentic AI Foundation landing page you'd prefer to link here? The announcement post is a reasonable stand-in but a foundation page would age better.

  • [L48] content/what-is/mcp-for-infrastructure-as-code.md"Every major infrastructure MCP server distinguishes read operations (list resources, inspect state, run a plan or preview) from write operations (apply, deploy…" — verdict: framing-drift; framing: overclaim — source shows several individual Terraform-focused MCP tools follow a read/write split and default-disabled destructive ops, but claim generalizes t…; evidence: Evidence supports the general pattern for prominent examples: HashiCorp's Terraform MCP server documentation states "Several tools perform destructive operations that can modify or delete infrastructure resources. These tools are disabled…; source: WebSearch ran query "Terraform MCP server plan apply preview safety mechanism"; https://developer.hashicorp.com/terraform/mcp-server/reference; intuition: Absolute universal quantifiers ("every major," "every one") over an open-ended, fast-growing category (infrastructure M…

    The pattern is real; the quantifier isn't supportable. "Every major server" and "every one" assert something about an open-ended, fast-moving category the page has just described as multi-vendor and unconsolidated — including a row for community Kubernetes servers "varying in scope and maintenance," which is the same paragraph conceding that not every implementation is uniform. HashiCorp's Terraform MCP server documents exactly the read/write split and default-disabled destructive tools you're describing, so scoping the sentence to the servers in the table above keeps the point intact without the absolute:

    A few patterns hold across most of them. The established servers distinguish read operations (list resources, inspect state, run a plan or preview) from write operations (apply, deploy, delete) — HashiCorp's Terraform MCP server, for instance, ships its destructive tools disabled by default — and the vendor-backed servers treat the preview-before-apply step as a first-class safety mechanism rather than an afterthought. Where vendors differ is breadth: cloud-provider servers (AWS, Azure) are naturally scoped to their own resources, Kubernetes-focused servers are scoped to cluster operations, and Pulumi's server is the one built specifically around the IaC development loop itself, spanning any of Pulumi's 180+ providers rather than one cloud.
    
  • [L128] content/what-is/mcp-for-infrastructure-as-code.md"The neo-task-launcher tool in Pulumi's MCP server lets any MCP host hand a task to Neo rather than orchestrating every step itself." — verdict: framing-drift; framing: shifted — same underlying capability ("launch a Neo task") but claim's tool name "neo-task-launcher" doesn't match the name ("neo-bridge") used elsewhere in Pu…; evidence: (escalated from pass1 after exhausting its 12-turn cap) Third-party catalogs of the actual @pulumi/mcp-server package (Docker Hub, Speakeasy, MintMCP) list a tool "neo-task-launcher" described as "Launch a Neo task when user asks Neo to pe…; source: https://hub.docker.com/r/mcp/pulumi ; https://www.pulumi.com/docs/ai/mcp-server/; intuition: Possible tool rename/versioning discrepancy: package-level tool schema says neo-task-launcher while pulumi.com docs say…

    Same root cause as the neo-task-launcher item under 🚨 Outstanding — this is the third of the four occurrences in the file. Whichever name turns out to be current, fix all four together (the tool list, the "Delegate multi-step work to Neo" bullet, this sentence, and the FAQ answer). Nothing extra to decide here.

  • Copy-pasteable setup was replaced with prose, and the Neo-as-MCP-client section was dropped — a judgment call worth a second look, not a defect. The rewrite trades the old page's concrete connection instructions for three prose steps: the .cursor/mcp.json snippet, the claude mcp add --transport http pulumi https://mcp.ai.pulumi.com/mcp command, the local npx @pulumi/mcp-server@latest stdio invocation, the raw-client JSON config, and the note about VS Code using a servers key in a dedicated mcp.json are all gone. Step 1 now reads "In your MCP host's configuration, add a remote server pointing to https://mcp.ai.pulumi.com/mcp using Streamable HTTP transport," which a reader can't act on without leaving the page. The rewrite also removes the section on Neo acting as an MCP client (the Atlassian / Datadog / Honeycomb / Linear / PagerDuty / Supabase integrations, admin-controlled availability, and the detail that credentials are encrypted per organization and never exposed to the model) — that was the page's only coverage of MCP working in the outbound direction.

    Both cuts are defensible if the intent is to concentrate setup detail on /docs/ai/mcp-server/ and keep the explainer conceptual, and the page does link there. But the connection section is now thinner than its heading promises, and "How do you connect Pulumi to your AI agent?" is exactly the kind of question that earns a page its answer-engine placement. Consider restoring at least the two one-liners (the claude mcp add command and the Cursor JSON block) — they cost four lines and are the difference between an answer and a pointer.

Style findings

Found by pattern-based linting; Findings may be false positives.

  • line 32: [style] wordiness — 'it is' is too wordy.
  • line 34: [style] difficulty qualifier — Avoid difficulty qualifier 'easy' -- it judges difficulty for the reader (STYLE-GUIDE.md §Inclusive Language).
  • line 38: [style] wordiness — 'it is' is too wordy.
  • line 38: [style] wordiness — 'it is' is too wordy.
  • line 48: [style] wordiness — 'all of' is too wordy.
  • line 64: [style] weasel word — 'several' is a weasel word!
  • line 73: [style] weasel word — 'several' is a weasel word!
  • line 124: [style] wordiness — 'it is' is too wordy.

📋 Triaged verifier findings

I double-checked these and realized they weren't real findings — click to expand
  • [L56-62] content/what-is/mcp-for-infrastructure-as-code.md"The hosted Pulumi MCP server, at https://mcp.ai.pulumi.com/mcp, uses Streamable HTTP transport, authenticates via OAuth through a browser popup, and does not require the Pulumi CLI installed." — verdict: unverifiable; source: https://mcp.ai.pulumi.com/mcp

    Mis-sourced: the check fetched the MCP endpoint itself, which returned HTTP 401 with an empty body — correct behaviour for an OAuth-gated server, but nothing to read a verdict from. The claim's details (Streamable HTTP transport, OAuth via browser popup, no local CLI required) are all confirmed against content/docs/ai/mcp-server/index.md, which is the citation this should have used.

  • [L108-112] content/what-is/mcp-for-infrastructure-as-code.md"Connecting the Pulumi hosted MCP server requires no Pulumi CLI installation or access token on the connecting machine; authorization happens via an OAuth popup…" — verdict: unverifiable; source: https://mcp.ai.pulumi.com/mcp

    Mis-sourced: same 401 on the same endpoint. The connection steps are corroborated by the canonical docs page, which documents the OAuth browser flow and the absence of a local CLI requirement for the hosted server.

  • [L138] content/what-is/mcp-for-infrastructure-as-code.md"Pulumi ships both a local server, @pulumi/mcp-server, distributed via npm or as the mcp/pulumi Docker image, and a hosted server at https://mcp.ai.pulumi.com/mcp that authenticates through OAuth and requires no local CLI installation." — verdict: verified; source: https://mcp.ai.pulumi.com/mcp

    Mis-sourced: recorded as verified, but the cited endpoint returned an empty 401 body, so it couldn't have confirmed anything on its own. The claim does hold — content/docs/ai/mcp-server/index.md documents the npm package, the mcp/pulumi Docker image, the hosted URL, and the OAuth flow — so the verdict stands on better evidence than the pointer attached to it.

💡 Pre-existing issues in touched files (optional)

No pre-existing issues in touched files.

✅ Resolved since last review

No items resolved since the last review.

📜 Review history

  • 2026-07-31T12:27:32Z — Five blockers on the MCP-for-IaC rewrite: an off-by-one MCP spec revision count, an impossible AWS same-day timeline, a misattributed Zuplo survey methodology, a neo-task-launcher / neo-bridge conflict with the canonical MCP server docs, and two FAQ headings that duplicate H2 headings into the page's FAQ schema. (a1fa3d7)

  • Refresh this review — comment @claude #update-review. Say what you fixed, or which finding you dispute and why; both work in the same mention.
  • Ask for anything else — comment @claude with no hashtag (questions, one-off fixes). Leaves this review untouched.

Important

Please don't hide, resolve, or delete this comment! It breaks things!

📖 How pre-merge review works — the full lifecycle, short-circuits, and escape hatches.

@github-actions github-actions Bot added review:outstanding-issues Claude review completed; outstanding has author-actionable findings and removed review:in-progress Claude review is currently running labels Jul 31, 2026
- Fix spec revision count: 2026-07-28 is the fourth revision since the
  November 2024 launch (2025-03-26, 2025-06-18, 2025-11-25 preceded it),
  not the third; the 2025-03-26 revision was missing from the list.
- Remove the unverifiable same-day claim that AgentCore Gateway added
  2026-07-28 spec support the same day the Bedrock AgentCore MCP server
  shipped (October 2, 2025) -- that ordering is chronologically
  impossible and the timeline could not be confirmed.
- Fix a framing-drift misattribution: Zuplo's 17,000+ server count and
  its 72%/50% adopter-sentiment figures come from two different parts
  of Zuplo's research, not one 17,000-respondent survey.
- Rename neo-bridge to neo-task-launcher across
  content/docs/ai/mcp-server/index.md (6 occurrences) so the canonical
  MCP server docs page agrees with this explainer and with the tool
  name exposed by the published @pulumi/mcp-server package.
- Reword two FAQ headings that duplicated H2 section headings verbatim
  (Is MCP secure enough for production infrastructure? and How does
  Neo relate to MCP?), which was causing the FAQPage schema collector
  to emit duplicate Question entities for the same anchor.
- Use the specific Anthropic announcement URL for the AAIF donation
  citation instead of the generic Linux Foundation homepage.

Fixes applied per Claude pre-merge review on PR #20608.
@workprentice

workprentice Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

@claude #new-review - addressed all 5 blocking items from the pre-merge review: fixed spec revision count/timeline, removed the unverifiable AgentCore same-day claim, fixed the Zuplo survey misattribution, renamed neo-bridge to neo-task-launcher across content/docs/ai/mcp-server/index.md to match this page, and reworded the two duplicate FAQ headings. Also fixed the AAIF citation to point at the specific Anthropic announcement.

@github-actions github-actions Bot added review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention and removed review:outstanding-issues Claude review completed; outstanding has author-actionable findings labels Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

domain:docs PR touches technical docs review:stale New commits since last Claude review; refresh on next ready-transition or @claude mention

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants