mcp-o11y
Distributed tracing for tool executions and external API calls, enabling performance bottleneck identification through the Jaeger UI.
Provides distributed tracing and custom metrics collection with automatic instrumentation of Node.js libraries and custom spans for tool executions.
Exports custom performance metrics such as response times, memory usage, and success rates to Prometheus for monitoring.
Error tracking and performance monitoring for the MCP server, including automatic breadcrumb collection and transaction tracking.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-o11yShow me the current server status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Observability Server
A Model Context Protocol (MCP) server that demonstrates how to incorporate comprehensive observability into MCP servers using Sentry, OpenTelemetry, and Braintrust.
Features
🔧 Tools
File Operations: Read files, write files, list directories
Data Processing: JSON manipulation, data transformation
HTTP Client: URL fetching, webhooks, health checks
📊 Resources
Server Status: Real-time server metrics and performance data
Configuration: Server and observability configuration details
Health Check: Service health monitoring endpoint
📈 Observability Stack
Sentry
Error tracking and performance monitoring
Automatic breadcrumb collection
User context and custom tags
Transaction performance tracking
OpenTelemetry
Distributed tracing with Jaeger export
Custom metrics with Prometheus export
Automatic instrumentation of Node.js libraries
Custom spans for tool executions
Braintrust
AI/ML model evaluation and logging
Tool execution tracking
Performance analytics
Experiment management
Related MCP server: otel-mcp
Quick Start
1. Installation
npm install2. Configuration
Copy the example environment file:
cp .env.example .envEdit .env with your configuration:
# Sentry (optional)
SENTRY_DSN=your_sentry_dsn_here
SENTRY_ENVIRONMENT=development
# Braintrust (optional)
BRAINTRUST_API_KEY=your_braintrust_api_key_here
BRAINTRUST_PROJECT_NAME=mcp-observability
# OpenTelemetry (configured by default)
OTEL_SERVICE_NAME=mcp-observability-server
OTEL_EXPORTER_JAEGER_ENDPOINT=http://localhost:14268/api/traces3. Build and Run
# Development mode
npm run dev
# Production mode
npm run build
npm startUsing with Claude Desktop
Add to your Claude Desktop MCP configuration:
{
"mcpServers": {
"observability-server": {
"command": "node",
"args": ["/path/to/mcp-observability-server/dist/index.js"]
}
}
}Observability Setup
Sentry Setup
Create a Sentry project at sentry.io
Copy your DSN to the
SENTRY_DSNenvironment variableThe server will automatically track errors and performance
OpenTelemetry + Jaeger Setup
Run Jaeger locally:
docker run -d --name jaeger \
-p 16686:16686 \
-p 14268:14268 \
jaegertracing/all-in-one:latestAccess Jaeger UI at http://localhost:16686
Traces will be automatically exported
Braintrust Setup
Sign up at braintrust.dev
Get your API key and project name
Set the environment variables
Tool executions will be logged for analysis
Example Usage
Using Tools
// Read a file
{
"tool": "read_file",
"arguments": {
"path": "/path/to/file.txt",
"encoding": "utf8"
}
}
// Process JSON data
{
"tool": "process_json",
"arguments": {
"data": "{\"users\": [{\"name\": \"Alice\"}, {\"name\": \"Bob\"}]}",
"operation": "extract_keys",
"path": "users"
}
}
// Fetch URL
{
"tool": "fetch_url",
"arguments": {
"url": "https://api.github.com/users/octocat",
"method": "GET"
}
}Accessing Resources
// Get server status
{
"resource": "status://server"
}
// Health check
{
"resource": "status://health"
}
// Configuration
{
"resource": "config://server"
}Architecture
src/
├── observability/ # Observability integrations
│ ├── sentry.ts # Sentry error tracking
│ ├── opentelemetry.ts # OpenTelemetry tracing
│ ├── braintrust.ts # Braintrust logging
│ └── index.ts # Unified observability wrapper
├── tools/ # MCP tools
│ ├── fileOperations.ts # File I/O tools
│ ├── dataProcessing.ts # Data manipulation tools
│ ├── httpClient.ts # HTTP client tools
│ └── index.ts # Tool registry
├── resources/ # MCP resources
│ ├── status.ts # Server status resource
│ ├── config.ts # Configuration resource
│ └── index.ts # Resource registry
└── index.ts # Main server entry pointKey Observability Features
1. Automatic Tool Wrapping
All tools are automatically wrapped with the withObservability decorator that:
Creates OpenTelemetry spans
Starts Sentry transactions
Logs to Braintrust
Records performance metrics
2. Error Handling
Automatic error capture in Sentry with context
Error spans in OpenTelemetry traces
Failed execution logging in Braintrust
3. Performance Monitoring
Response time tracking
Memory usage monitoring
Request success/failure rates
Custom metrics via OpenTelemetry
4. Distributed Tracing
End-to-end request tracing
Tool execution spans
External API call tracing
Performance bottleneck identification
Development
# Type checking
npm run typecheck
# Linting
npm run lint
# Testing
npm testLicense
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/argotdev/mcp-o11y'
If you have feedback or need assistance with the MCP directory API, please join our Discord server