Get started with MCP Monitoring
This guide demonstrates production-ready MCP (Model Context Protocol) observability setup with OpenTelemetry-native auto-instrumentations. Get enterprise-grade AI monitoring with zero code changes using our CLI or minimal SDK integration for complete MCP performance tracking.
Learn how to implement real-time context tracking, tool usage monitoring, protocol performance analysis, and resource utilization optimization for your MCP applications with OpenTelemetry traces and metrics.
flowchart TB; subgraph " " direction LR; subgraph " " direction LR; Shield360_SDK[Shield360 SDK] -->|Sends Traces & Metrics| OTC[OpenTelemetry Collector]; OTC -->|Stores Data| ClickHouseDB[ClickHouse]; end subgraph " " direction RL; Shield360_UI[Shield360] -->|Pulls Data| ClickHouseDB; end endgit clone git@github.com:ThinkfleetAI/Shield360.gitFrom the root directory of the Shield360 distribution, Run the below command:
docker compose up -dpip install shield360npm install shield360# Install Shield360pip install shield360
# Start MCP monitoring instantlyshield360-instrument --service-name my-mcp-app python your_mcp_app.py
# With custom settings for MCP applicationsshield360-instrument \ --otlp-endpoint http://127.0.0.1:4318 \ --service-name my-mcp-app \ --environment production \ python your_mcp_app.py# Install Shield360pip install shield360
# Set environment variablesexport OTEL_EXPORTER_OTLP_ENDPOINT="http://127.0.0.1:4318"export OTEL_SERVICE_NAME=my-mcp-appexport OTEL_DEPLOYMENT_ENVIRONMENT=production
# Run your MCP applicationshield360-instrument python your_mcp_app.pyAdd the following two lines to your MCP application code:
import shield360
shield360.init( otlp_endpoint="http://127.0.0.1:4318", service_name="my-mcp-app", environment="production")
# Your existing MCP code works the same# MCP interactions are traced automaticallyConfigure your OTLP endpoint using environment variables:
export OTEL_EXPORTER_OTLP_ENDPOINT="http://127.0.0.1:4318"export OTEL_SERVICE_NAME=my-mcp-appexport OTEL_DEPLOYMENT_ENVIRONMENT=productionAdd the following two lines to your MCP application code:
import shield360
shield360.init()Add the following two lines to your MCP application code:
import { Shield360 } from 'shield360';
await Shield360.init({ otlpEndpoint: 'http://127.0.0.1:4318', serviceName: 'my-mcp-app', environment: 'production'});
// Your existing MCP code works the same// MCP interactions are traced automaticallyConfigure your OTLP endpoint using environment variables:
export OTEL_EXPORTER_OTLP_ENDPOINT="http://127.0.0.1:4318"export OTEL_SERVICE_NAME=my-mcp-appexport OTEL_DEPLOYMENT_ENVIRONMENT=productionAdd the following two lines to your MCP application code:
import { Shield360 } from 'shield360';
await Shield360.init();Navigate to Shield360 at 127.0.0.1:3000 to start monitoring your MCP applications.

You should see MCP-specific traces and metrics including:
- Context Protocol Interactions: Track context loading, management, and utilization
- Tool Usage Metrics: Monitor tool calls and their performance within MCP workflows
- Protocol Performance: Analyze MCP handshakes and communication efficiency
- Resource Utilization: Monitor context window usage and memory consumption
- Error Tracking: Identify and debug MCP protocol errors and failures
Send Observability telemetry to other OpenTelemetry backends
flowchart TB; subgraph " " direction LR; ApplicationCode[Application Code] -->|Instrumented with| Shield360_SDK[Shield360 SDK]; Shield360_SDK -->|Sends Traces & Metrics| OT_Backend[OpenTelemetry Backend]; endIf you wish to send telemetry directly from the SDK to another backend, you can stop the current Docker services by using the command below. For more details on sending the data to your existing OpenTelemetry backends, checkout our Supported Destinations guide.
docker compose downIf you have any questions or need support, reach out to our community.