Third-Party MCP Server Risk Management
Rapid adoption of third-party MCP servers outpaced security controls.

Third-party MCP servers now sit inside enterprise environments with access most vendors never had to earn. That's the actual risk: adoption ran way ahead of the vetting, scoping, and monitoring practices that normally gate what outside code gets to touch. I've spent enough time looking at how these deployments actually fail to say this plainly: the organizations doing well with MCP are the ones that treated governance as a prerequisite, not a patch they'd add later.
How fast the ecosystem grew and how far security lagged behind
The numbers on adoption alone tell you something. SDK downloads passed 97 million a month by early 2026. Something like 41% of technical leaders in the software industry said they already had MCP running in some form of production, limited or broad. Estimates put task-specific AI agents in 40% of enterprise apps by 2026. This is infrastructure now, and it got donated to the Linux Foundation's Agentic AI Foundation in late 2025 with OpenAI, Google, Microsoft, AWS, Salesforce, and Snowflake all backing it. That level of institutional backing is what a standard looks like.
Now pivot to what that speed did on the security side. Astrix Research looked at more than 5,200 unique open-source MCP server implementations and found that 88% require credentials to function. Access to sensitive systems is the baseline here, not the exception. Of those credential-bearing servers, 53% rely on long-lived static secrets, things like API keys and personal access tokens, instead of short-lived tokens that expire and rotate. Only 8.5% have adopted OAuth.
Sit with that authentication gap for a second. When more than half the ecosystem uses the least revocable form of credential, a compromised server doesn't stop being compromised when someone notices. It stays compromised until someone manually finds the key and rotates it, and that gap can run for weeks.
There's no package security standard across the MCP ecosystem. There's no signing requirement, and no shared vetting baseline that every registry enforces. This is what happens whenever adoption outpaces governance, and we've seen the exact pattern before in npm, in Docker Hub, in PyPI. The lesson from those ecosystems is that the fix never comes from the protocol layer. It comes from what individual organizations choose to require before they let outside code run.
Here's the part that matters for anyone actually deploying this stuff: every third-party server you add inherits the ecosystem's baseline security posture, not yours, unless you go build a wall around it yourself.
The attack vectors that make third-party servers a distinct threat surface
Four mechanisms explain most of what's gone wrong, and they all trace back to the same root cause: trusting code you didn't write and can't fully see.
Tool poisoning and rug-pull modification. An agent trusts a tool's description as gospel. There's no cryptographic tie between the description it approved during setup and the one it executes in the next session. A server can look completely clean during vetting, then quietly change its own tool definitions after deployment. The clearest case: September 2025, a Postmark email server on npm with roughly 1,500 weekly downloads got modified to add a single BCC field. Every email sent through it got silently copied to an attacker, with no visible change in behavior, no crash, no error. Astrix's dataset found tool poisoning indicators in 5.5% of the open-source servers they analyzed, which sounds small until you remember that's 5.5% of a population in the thousands.
Prompt injection through tool descriptions. When a third-party server registers itself, it hands over free-text descriptions that the model treats as instruction, not documentation. Attackers can bury directives inside that text using formatting that looks exactly like normal tool documentation. The model has no built-in way to tell the difference between "here's what this tool does" and "do this instead." That's baked into how the architecture works, and it isn't something a patch fixes. In November 2025, a WhatsApp MCP incident showed exactly this: a poisoned tool description redirected message-history data to an attacker's number during what looked like a completely routine user request.
Supply-chain compromise. Most MCP servers ship as npm packages, so they inherit npm's entire dependency-chain risk on top of whatever risk MCP adds. The Postmark backdoor was the first confirmed malicious MCP server found in the wild, and it moved this from a theoretical concern to something that had already happened. Then in 2026, a path traversal flaw in Smithery.ai's hosting pipeline let attackers read arbitrary files on the underlying VM, including a token that controlled thousands of hosted MCP servers. One misconfiguration, ecosystem-wide blast radius.
Confused deputy and privilege escalation in multi-agent chains. Put a compromised third-party server inside a chain of agents that trust each other's output, and you get escalation across the whole chain. The July 2025 Supabase-Cursor incident is the textbook version: a user submitted a support ticket with SQL directives buried in the text, and because the agent handling it had elevated service-role permissions, that injection turned into actual data exfiltration from the database. Over-permissioned tools don't just create their own risk, they amplify every other vulnerability downstream.
The thread running through all four: you didn't write this code, you don't control when it updates, and in most deployments, you have no real-time view of what it's actually doing once it's running.
What ungoverned third-party servers have already cost organizations
April 2025, Asana. An MCP-based integration went live, and within its launch window, a vulnerability could have exposed one organization's project data to a completely different tenant. Asana pulled the feature for close to two weeks and reset every user connection. Worth noting: this was a well-resourced vendor, not some solo developer's side project, and it still shipped a multi-tenant separation failure serious enough to require an emergency rollback.
May 2025, GitHub. A malicious issue in a public repository contained instructions that an agent picked up and followed. Because the MCP server it used had access to both public and private repos, private data ended up baked into a generated pull request. The trigger wasn't some elaborate targeted attack, it was a user asking the agent to review repository issues, about as routine as it gets. Scope was the whole problem: access that reached further than the task required.
November 2025, Anthropic's own Git MCP server. Researchers found a path validation bypass, argument injection, and unsafe repository initialization, in the official server. First-party origin isn't a security guarantee. If anything, this incident argues that "official" servers need the same scrutiny as anything else, because the label doesn't do the vetting for you.
April 2026, Microsoft Azure DevOps. A missing authentication layer on a server handling work items, repositories, and pipelines left configuration details, API keys, and auth tokens readable without any credentials at all. The vulnerability, CVE-2026-32211, scored a 9.1 on CVSS, about as severe as these ratings get. This is the Astrix authentication data made concrete: the exact failure mode researchers predicted at population scale showed up in a named piece of enterprise tooling.
What ties these together is quieter than the technical details: the data was sitting there, the agent had no built-in reason to hold back, and in most cases nothing alerted anyone in real time. Each organization found out after the fact, and that's the norm, not the exception, because only 24% of organizations have full visibility into which of their AI agents are even talking to each other. Everyone else would have found out the same way these companies did.
Vetting a third-party MCP server before it touches your environment
Vetting isn't a box you check once at intake. Tool definitions change. Packages get updated. Maintainers come and go. Treat it as a recurring discipline, not a gate you pass through one time.
Start with authentication and credential storage. Does the server use short-lived tokens, or is it sitting on long-lived static secrets? Given that 53% of the ecosystem defaults to the latter, treat any static-secret server as higher risk until proven otherwise. Check where credentials actually live, too. Configuration files stuffed with database credentials are one of the most common causes of cloud incidents generally, and MCP servers are no exception. Where you have a choice, pick the server that supports OAuth over one that's API-key-only.
Then read the tool definitions. Actually read them, every one. What data can this tool touch? What actions can it take? What external endpoints can it call out to? Flag anything where the described scope goes beyond what your use case needs. The GitHub incident happened precisely because a server had simultaneous access to public and private repos when the job only called for public access. A five-minute scope review would have caught that before it shipped.
Provenance matters more than people give it credit for. Who's behind this server: one developer working alone, a known vendor, or an active open-source project with a real disclosure process for vulnerabilities? Check it against known CVEs, and there are plenty to check against; between January and February 2026 alone, researchers filed more than 30 CVEs against MCP servers and related infrastructure. Trace the dependency chain, since npm packages carry the whole ecosystem's supply-chain risk with them. And pin your versions, since auto-update is exactly the mechanism the Postmark backdoor needed to reach live production without anyone reviewing the change.
Before any of this touches production credentials, run it in a sandbox against synthetic data first. Watch the actual network calls it makes during a normal interaction. Does what you observe match what the documentation claims? If not, that gap is your answer.
Scoping access so that a compromised server reaches only what it needs
Assume, going in, that any third-party server might eventually get compromised or start behaving in a way nobody predicted. Design your access model so that when it happens, and it will happen somewhere, the outcome is something you can absorb rather than something that takes down the business.
Least-privilege tool access comes first. Give each server only the specific tools and data it needs for its stated job, not a broader category granted for convenience because it was easier to configure. The Supabase-Cursor breach happened because a support workflow got handed service-role database access, and that elevated privilege is exactly what turned a text injection into a credential leak. Role-based access control for agents is about making "what this agent can do" a decision your organization made on purpose, instead of a default it inherited by accident.
Network and egress controls matter just as much. Restrict which external endpoints a third-party server can actually reach at runtime, because both tool poisoning and data exfiltration need an outbound channel to work at all. Allowlist the destinations you expect, and flag or block anything novel.
Credential isolation matters too: issue server-specific credentials scoped tightly, not shared service accounts or admin-level tokens handed out because it was faster. Short-lived credentials with automatic rotation shrink the window between a compromise happening and someone actually fixing it. Avoid bundling multiple service credentials into one configuration file; a single exposed config shouldn't be able to cascade into five different systems going down at once.
Last piece: multi-agent chain boundaries. If you're running orchestrated workflows, validate what a third-party server hands off before passing it along to the next agent in the chain. A compromised agent feeding bad instructions downstream is the confused-deputy problem playing out at scale, and access boundaries between chain participants are what keep it from spreading laterally.
Access scoping is the difference between "that server reached the one table it was supposed to query" and "that server reached our entire customer database." Every incident above proves it.
Why real-time observability is the control that makes the others matter
Here's the number that should worry you most: only 24% of organizations have full visibility into which of their AI agents are communicating with each other. More than half of all agents in production run with no security oversight or logging at all. Vetting and scoping set the rules going in; observability is what tells you whether those rules are still holding once the server is live.
An audit log you read after something breaks is a postmortem: it tells you what happened, days or weeks too late to change the outcome. A real-time feed of what a server is accessing and what actions it's taking, moment to moment, functions as a safety net instead. The distinction isn't academic; it's the entire difference between catching a breach in progress and reading about it in an incident report.
What actually needs instrumenting: every tool call a third-party server makes, including which tool, which data resource, what parameters went in, what came back out. Authentication events, credential use, rotation, failed attempts. Egress connections: destination, volume, timing, since anomalous outbound traffic is usually the first sign something's wrong, often before anything else lights up. And tool definition changes themselves, because that's the rug-pull vector closing in real time instead of getting discovered a session later.
Vetting tells you what a server is supposed to do. Scoping limits what it's able to do even if something goes wrong. Observability tells you, right now, whether it's doing either. Skip that third piece and the other two amount to documentation for an incident you'll read about after it's already over.


