Skip to content

Connecting to MCP Servers

DeepIntShield can connect to any MCP-compatible server to discover and execute tools. Each connection is called an MCP Client in DeepIntShield terminology.

DeepIntShield supports three connection protocols, each with different authentication options:

TypeDescriptionBest ForAuth Support
STDIOSpawns a subprocess and communicates via stdin/stdoutLocal tools, CLI utilities, scriptsNone
HTTPSends requests to an HTTP endpointRemote APIs, microservices, cloud functionsHeaders, strict OAuth 2.1, OAuth 2.0 compatibility
SSEServer-Sent Events for persistent connectionsReal-time data, streaming toolsHeaders, strict OAuth 2.1, OAuth 2.0 compatibility

STDIO connections launch external processes and communicate via standard input/output. Best for local tools and scripts.

{
"name": "filesystem",
"connection_type": "stdio",
"stdio_config": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem"],
"envs": ["HOME", "PATH"]
},
"tools_to_execute": ["*"]
}

Use Cases:

  • Local filesystem operations
  • Python/Node.js MCP servers
  • CLI utilities and scripts
  • Database tools with local credentials

HTTP connections communicate with MCP servers via HTTP requests. Ideal for remote services and microservices.

HTTP connections support two authentication methods:

  • Header-based authentication: Static headers (API keys, custom tokens)
  • OAuth 2.1 (MCP 2026-07-28): Strict protected-resource discovery, issuer-bound authorization code with PKCE S256, live refresh, reauthorization, and revocation
  • OAuth 2.0: Compatibility mode for older providers

Use static headers for API keys and custom authentication tokens:

{
"name": "web-search",
"connection_type": "http",
"connection_string": "https://mcp-server.example.com/mcp",
"auth_type": "headers",
"headers": {
"Authorization": "Bearer your-api-key",
"X-Custom-Header": "value"
},
"tools_to_execute": ["*"]
}

Use Cases:

  • Static API keys
  • Bearer token authentication
  • Custom header-based auth schemes

Use strict OAuth 2.1 for a shared MCP connection that implements the current MCP authorization profile:

{
"name": "web-search",
"connection_type": "http",
"connection_string": "https://mcp-server.example.com/mcp",
"auth_type": "oauth2.1",
"oauth_config": {
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"expected_issuer": "https://auth.example.com"
},
"tools_to_execute": ["*"]
}

When a client ID is supplied, strict mode treats it as pre-registered and requires its exact expected issuer. When it is empty, DeepIntShield prefers its deployment-owned Client ID Metadata Document (CIMD) if the authorization server advertises support, then uses deprecated RFC 7591 dynamic registration only as the fallback. Authorization, token, registration, and scope fields are optional verification hints in strict mode and must match validated metadata. See registration priority and deployment requirements. Select OAuth 2.0 ("auth_type": "oauth") only for an older compatibility provider.

→ Learn more about OAuth authentication →

Use Cases:

  • Shared third-party service authorization and consent
  • Third-party service integrations
  • Secure credential management
  • Strict MCP OAuth 2.1 or older OAuth 2.0 compatibility

This OAuth configuration is shared by calls that use the connection. For a distinct caller credential and resource-bound Streamable HTTP session, use Delegated MCP authentication.

Overall HTTP Use Cases:

  • Remote API integrations
  • Cloud-hosted MCP services
  • Microservice architectures
  • Third-party tool providers

Server-Sent Events (SSE) connections provide real-time, persistent connections to MCP servers. Like HTTP connections, SSE supports both header-based and OAuth authentication.

{
"name": "live-data",
"connection_type": "sse",
"connection_string": "https://stream.example.com/mcp/sse",
"auth_type": "headers",
"headers": {
"Authorization": "Bearer your-api-key"
},
"tools_to_execute": ["*"]
}
{
"name": "live-data",
"connection_type": "sse",
"connection_string": "https://stream.example.com/mcp/sse",
"auth_type": "oauth2.1",
"oauth_config": {
"client_id": "your-client-id",
"expected_issuer": "https://auth.example.com"
},
"tools_to_execute": ["*"]
}

Use Cases:

  • Real-time market data
  • Live system monitoring
  • Event-driven workflows
  • User-authenticated streaming connections

→ Learn more about OAuth authentication →


  1. Navigate to Agentic → MCP Registry in the workspace sidebar - the page title is MCP Connections
MCP Servers Table
  1. Click New MCP Server button to open the creation form

  2. Fill in the connection details:

Add MCP Client Form

Fields:

  • Name: Unique identifier (no spaces or hyphens, ASCII only)
  • Connection Type: STDIO, HTTP, or SSE
  • For STDIO: Command, arguments, and environment variables
  • For HTTP/SSE: Connection URL
  1. Click Create to connect

Once connected, click on any client row to open the configuration sheet:

MCP Client Configuration and Tools

Here you can:

  • View all discovered tools with their descriptions and parameters
  • Enable/disable individual tools via toggle switches
  • Configure autonomous-execution eligibility for specific tools
  • Edit custom headers for HTTP/SSE connections
  • View the full connection configuration as JSON

Controls which tools from the client are available:

ValueBehavior
["*"]All tools from this client are included
[] or omittedNo tools included (deny-by-default)
["tool1", "tool2"]Only specified tools are included

Controls which tools are eligible for automatic execution in Agent Mode:

ValueBehavior
["*"]Every executable tool is eligible for the autonomous loop
[] or omittedNo tools are eligible; calls are returned to the application
["tool1", "tool2"]Only the named tools are eligible

Eligibility does not replace authorization. When canonical GAF is enabled, the current Virtual-Key binding, governed agent, Registry action, OpenFGA relationships, client configuration, arguments, and any required Command Authority approval must still produce an exact Allow.

Example configuration:

{
"name": "filesystem",
"connection_type": "stdio",
"stdio_config": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-filesystem"]
},
"tools_to_execute": ["*"],
"tools_to_auto_execute": ["read_file", "list_directory"]
}

Connection strings and headers can contain secrets such as embedded API keys, bearer tokens, and custom authentication headers:

  • Stored encrypted at rest when one stable backend DEEPINTSHIELD_ENCRYPTION_KEY is configured
  • Redacted in API responses and the Web UI for security
  • Resolved automatically during client connection

Without DEEPINTSHIELD_ENCRYPTION_KEY, literal persisted values remain plaintext in the database. Configure the key before storing credentials and do not rotate it without a coordinated data migration. When you create or edit a client in the Web UI, enter the full connection URL or header value directly; DeepIntShield redacts it from later responses and encrypts it when the backend key is enabled. See OAuth encryption and workspace isolation.


StateDescription
connectedClient is active and tools are available
connectingClient is establishing connection
disconnectedClient lost connection but can be reconnected
errorClient configuration or connection failed

Manage connected clients from Agentic → MCP Registry in the Web UI:

  • Reconnect a client: open the client row and click Reconnect to re-establish the connection.
  • Edit client configuration: open the client’s configuration sheet to change the connection details, headers, or the set of tools in tools_to_execute, then click Save Changes.
  • Remove a client: open the client row and delete it to disconnect and remove it from the gateway.

DeepIntShield automatically monitors MCP client health with periodic checks every 10 seconds by default.

By default, DeepIntShield uses the lightweight ping method for health checks. However, you can configure the health check method based on your MCP server’s capabilities:

MethodWhen to UseOverheadFallback
Ping (default)Server supports MCP ping protocolMinimalBest for most servers
ListToolsServer doesn’t support ping, or you need heavier checksHigherMore resource-intensive

You can toggle the is_ping_available setting for each client from the Web UI:

  1. Navigate to Agentic → MCP Registry and select a server
  2. In the configuration panel, toggle “Ping Available for Health Check”
  3. Enable: Uses lightweight ping for health checks
  4. Disable: Uses listTools method for health checks instead
Ping Available Toggle

When a client disconnects:

  1. State changes to disconnected
  2. Tools from that client become unavailable
  3. You can reconnect from the Web UI

Note: Changing is_ping_available takes effect immediately without requiring a client reconnection.


A brief network hiccup won’t take your tools offline: DeepIntShield retries transient connection failures with exponential backoff (a few attempts over roughly 30 seconds) and automatically reconnects a client in the background once its health checks fail. You don’t need to configure anything for this to work.

What this means for you when debugging a connection:

  • Transient failures resolve on their own. Connection timeouts, refused connections, DNS hiccups, HTTP 5xx, and HTTP 429 are retried automatically - a client may briefly show connecting and recover without intervention.
  • Configuration mistakes fail fast. Auth failures (401/403), bad requests (400/405/422), invalid credentials, and a missing command (e.g. command not found: npx) are not retried. If a client lands in the error state immediately, check the connection URL, credentials/headers, and - for STDIO - that the command exists in the runtime environment.
  • Disconnected clients reconnect automatically. After repeated health-check failures a client is marked disconnected, its tools become unavailable, and DeepIntShield reconnects it in the background. Tools return automatically once it recovers.

You can also trigger a reconnection yourself at any time from Agentic → MCP Registry: open the client row and click Reconnect. Manual reconnection also uses the retry logic for robustness.


MCP client names have specific requirements:

Valid names: filesystem, web_search, myAPI, tool123

Invalid names: my-tools, web search, 123tools, datos-api


Tool Execution

Learn how to execute tools from connected MCP servers

Open →

Agent Mode

Enable autonomous tool execution with an eligibility allow-list

Open →