Skip to main content

A Python-based tool to interact with Datadog API and fetch monitoring data

Project description

Datadog Model Context Protocol (MCP) 🔍

smithery badge

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 🔧

Installing via Smithery

To install Datadog for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @didlawowo/mcp-collection --client claude

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 💻

get logs

get monitor

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

setup 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

alt text

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_didlawowo_datadog_mcp-1.0.0.tar.gz (17.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_didlawowo_datadog_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_didlawowo_datadog_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 17.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_didlawowo_datadog_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c67c09e137b086b042e4e1a038dbd68018b1b6473fb51425b547a5258f2cec0a
MD5 1ff10c050cb4d7fcbdc50d9b58e4fef0
BLAKE2b-256 b749209faba2f6960d8713db879de629896e379e1759ace9653b22fe8435179a

See more details on using hashes here.

File details

Details for the file iflow_mcp_didlawowo_datadog_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_didlawowo_datadog_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_didlawowo_datadog_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1756345f832eca4bec6426c5d1830ef4705c67643b65d19821d36371b1f32d58
MD5 f6e4c205fbb967826e48e553de80e970
BLAKE2b-256 2759339959320c280a816a3f3481c10e8e3f66c3792b51d4c438c29f25180760

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page