datadog

Datadog Model Context Protocol (MCP) 🔍

A Python-based tool to interact with Datadog API and fetch monitoring data from your infrastructure. This MCP provides easy access to monitor states and Kubernetes logs through a simple interface.

Datadog Features 🌟

  • Monitor State Tracking: Fetch and analyze specific monitor states
  • Kubernetes Log Analysis: Extract and format error logs from Kubernetes clusters

Prerequisites 📋

  • Python 3.11+
  • Datadog API and Application keys (with correct permissions)
  • Access to Datadog site

Installation 🔧

pip install -r requirements.txt

Required packages:

datadog-api-client fastmcp loguru icecream python-dotenv uv

Environment Setup 🔑

Create a .env file with your Datadog credentials:

DD_API_KEY=your_api_key DD_APP_KEY=your_app_key

Setup Claude Desktop Setup for MCP 🖥️

  1. Install Claude Desktop
# Assuming you're on macOS brew install claude-desktop # Or download from official website https://claude.ai/desktop
  1. Set up Datadog MCP config:
# on mac is ~/Library/Application\ Support/Claude/claude_desktop_config.json # Add this to your claude config json ```json "Datadog-MCP-Server": { "command": "uv", "args": [ "run", "--with", "datadog-api-client", "--with", "fastmcp", "--with", "icecream", "--with", "loguru", "--with", "python-dotenv", "fastmcp", "run", "/your-path/mcp-collection/datadog/main.py" ], "env": { "DD_API_KEY": "xxxx", "DD_APP_KEY": "xxx" } },

Usage 💻

Architecture 🏗

  • FastMCP Base: Utilizes FastMCP framework for tool management
  • Modular Design: Separate functions for monitors and logs
  • Type Safety: Full typing support with Python type hints
  • API Abstraction: Wrapped Datadog API calls with error handling

I'll add a section about MCP and Claude Desktop setup:

Model Context Protocol (MCP) Introduction 🤖

What is MCP?

Model Context Protocol (MCP) is a framework allowing AI models to interact with external tools and APIs in a standardized way. It enables models like Claude to:

  • Access external data
  • Execute commands
  • Interact with APIs
  • Maintain context across conversations

some examples of MCP servers

https://github.com/punkpeye/awesome-mcp-servers?tab=readme-ov-file

Tutorial for setup MCP

https://medium.com/@pedro.aquino.se/how-to-use-mcp-tools-on-claude-desktop-app-and-automate-your-daily-tasks-1c38e22bc4b0

How it works - Available Functions 🛠️

the LLM use provided function to get the data and use it

1. Get Monitor States

get_monitor_states( name: str, # Monitor name to search timeframe: int = 1 # Hours to look back )

Example:

response = get_monitor_states(name="traefik") # Sample Output { "id": "12345678", "name": "traefik", "status": "OK", "query": "avg(last_5m):avg:traefik.response_time{*} > 1000", "message": "Response time is too high", "type": "metric alert", "created": "2024-01-14T10:00:00Z", "modified": "2024-01-14T15:30:00Z" }

2. Get Kubernetes Logs

get_k8s_logs( cluster: str, # Kubernetes cluster name timeframe: int = 5, # Hours to look back namespace: str = None # Optional namespace filter )

Example:

logs = get_k8s_logs( cluster="prod-cluster", timeframe=3, namespace="default" ) # Sample Output { "timestamp": "2024-01-14T22:00:00Z", "host": "worker-1", "service": "nginx-ingress", "pod_name": "nginx-ingress-controller-abc123", "namespace": "default", "container_name": "controller", "message": "Connection refused", "status": "error" }
# Install as MCP extension cd datadog task install-mcp

4. Verify Installation

In Claude chat desktop

check datadog connection in claude

5. Use Datadog MCP Tools

Security Considerations 🔒

  • Store API keys in .env
  • MCP runs in isolated environment
  • Each tool has defined permissions
  • Rate limiting is implemented

Troubleshooting 🔧

Using MCP Inspector

# Launch MCP Inspector for debugging task run-mcp-inspector

The MCP Inspector provides:

  • Real-time view of MCP server status
  • Function call logs
  • Error tracing
  • API response monitoring

Common issues and solutions

  1. API Authentication Errors
    Error: (403) Forbidden
    ➡️ Check your DD_API_KEY and DD_APP_KEY in .env
  2. MCP Connection Issues
    Error: Failed to connect to MCP server
    ➡️ Verify your claude_desktop_config.json path and content
  3. Monitor Not Found
    Error: No monitor found with name 'xxx'
    ➡️ Check monitor name spelling and case sensitivity
  4. logs can be found here

Contributing 🤝

Feel free to:

  1. Open issues for bugs
  2. Submit PRs for improvements
  3. Add new features

Notes 📝

  • API calls are made to Datadog EU site
  • Default timeframe is 1 hour for monitor states
  • Page size limits are set to handle most use cases