In our previous blog post about MCP, we introduced the core concepts behind this agentic technology. Today, we’ll explore how the Riptides Non-Human Identity (NHI) platform helps secure agentic applications that use the Model Context Protocol (MCP).
As a reminder, MCP servers can be either local or remote:
Riptides secures both scenarios using our kernel-based identity platform. It provides an OS-level enforcement layer that transparently controls how agents, MCP servers, and backends securely communicate with zero changes to application code.
Agent-to-MCP communication introduces a new security boundary that is vulnerable to:
MCP is designed to decouple agents from the implementation details of tools and services. Agents discover and invoke tools from MCP servers at runtime, sometimes across the network. While this enables powerful agentic workflows, it also introduces several risks:
Riptides transparently upgrades outbound traffic to mTLS. The agent remains unaware of handshakes, certificates, or trust anchors, Riptides seamlessly handles everything at the kernel level.
You can define policies that specify which MCP servers an agent is allowed to communicate with (based on SPIFFE IDs) and deny all others by default. This enables a zero-trust, default-deny network model.
Based on the above mentioned policies, Riptides can inject the necessary tokens and API keys and modify requests at the kernel level, as communication pass by. This way users space applications never have access to such sensitive values, yet the connection still work.
All identity assertions and network requests are traceable back to the specific agent and its runtime environment. This is essential for debugging, compliance, and forensic analysis. When both client and server use SPIFFE aware environments, mutual TLS provides a strong, verifiable handshake, ensuring trust on both sides before any tool call is made.
An agent running in a secure environment (e.g., a container in a Kubernetes cluster) needs to invoke a tool hosted on a third-party remote MCP server:
https://mcp.example.com/tools/send_email.
This MCP server might:
If both client and server use Riptides to secure their environments, then:
This provides zero-trust enforcement even across organizational or network boundaries.
In the local scenario, the MCP server is spawned as a subprocess by the agent and communicates via stdio. While this communication is considered safe within a trusted runtime, the security challenge lies in the MCP server’s outbound traffic to third-party services (e.g. APIs, cloud tools).
Traditional approach:
curl -H "Authorization: Bearer $API_KEY").This is risky because:
ps, /proc).With Riptides:
libcurl, requests, or fetch), Riptides intercepts the call at the socket level.Use SPIFFE based identities for all agents and MCP servers
Avoid relying on static API keys or long-lived secrets. Use ephemeral, cryptographically backed identities issued at runtime.
Enforce mTLS in remote scenarios
Prevent unauthorized access, impersonation, and data interception.
Hide secrets from servers in local scenarios
Inject secrets at the kernel level, rather than exposing them through environment variables.
Scope agent permissions with policy
Define exactly which MCP servers or tools an agent can communicate with.
Trust no MCP server by default
Only allow connections to explicitly whitelisted servers. Avoid dynamically connecting to unknown endpoints.
MCP unlocks powerful agentic capabilities but only if agent-to-server communication is secure. By combining MCP’s standardized tool interface with SPIFFE based identity using Riptides, teams can:
As AI agents grow more autonomous, identity becomes the root of security. Riptides delivers that identity without the complexity.