Skip to main content
Glama
abhi276k

Datadog MCP Server

by abhi276k
README.md

# Datadog MCP Server

A generic Model Context Protocol (MCP) server for Datadog integration. This project enables Datadog API access via MCP for monitoring, metrics, dashboards, logs, events, and incidents.

## Features

- **Monitors**: List and filter Datadog monitors by status, tags, etc.
- **Metrics**: Search and retrieve metric information
- **Dashboards**: List and get dashboard details  
- **Logs**: Search logs with advanced filtering
- **Events**: Retrieve events within time ranges
- **Incidents**: List and search incidents

## Setup

### 1. Install Dependencies

```bash
npm install
```

### 2. Configure Datadog Credentials

1. Copy the environment template:
  ```bash
  cp .env.template .env
  ```

2. Get your Datadog API credentials from your Datadog account settings:
  - **API Key**: https://app.datadoghq.com/organization-settings/api-keys
  - **Application Key**: https://app.datadoghq.com/organization-settings/application-keys

3. Edit `.env` and fill in your credentials:
  ```bash
  DD_API_KEY=your_datadog_api_key_here
  DD_APP_KEY=your_datadog_app_key_here
  DD_SITE=datadoghq.com  # or your specific site (datadoghq.eu, us3.datadoghq.com, etc.)
  ```

### 3. Test Configuration
## License

This project is licensed under the MIT License. See the LICENSE file for details.

```bash
npm test
```

This will validate your credentials and test the Datadog API connection.

## Usage

### VS Code MCP Integration

Add to your VS Code MCP configuration (`~/.config/Code/User/mcp.json`):

```json
{
  "mcpServers": {
    "datadog": {
      "command": "node",
      "args": ["/absolute/path/to/datadog/index.js"],
      "env": {
        "DD_API_KEY": "your_api_key",
        "DD_APP_KEY": "your_app_key",
        "DD_SITE": "datadoghq.com"
      }
    }
  }
}
```

### Standalone Testing

```bash
# List available tools
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | node index.js

# Test monitors tool
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "get_monitors", "arguments": {"limit": 5}}}' | node index.js
```

## Available Tools

### get_monitors
- **Description**: Retrieve Datadog monitors with filtering options
- **Parameters**:
  - `limit` (optional): Number of monitors to return (default: 10)
  - `groupStates` (optional): Filter by monitor states (e.g., ["Alert", "Warn"])
  - `tags` (optional): Filter by tags

### get_metrics  
- **Description**: Search for metrics in your Datadog account
- **Parameters**:
  - `query` (optional): Search query for metric names
  - `limit` (optional): Number of metrics to return (default: 100)

### get_dashboards
- **Description**: List Datadog dashboards
- **Parameters**:
  - `limit` (optional): Number of dashboards to return (default: 10)
  - `author` (optional): Filter by author
  - `filterDeleted` (optional): Filter out deleted dashboards

### search_logs
- **Description**: Search logs with advanced filtering
- **Parameters**:
  - `query` (optional): Log search query
  - `from` (optional): Start time (e.g., "now-1h")
  - `to` (optional): End time (e.g., "now")
  - `limit` (optional): Number of logs to return (default: 100)

### get_events
- **Description**: Retrieve events within a time range
- **Parameters**:
  - `start` (required): Start timestamp (Unix timestamp)
  - `end` (required): End timestamp (Unix timestamp)
  - `priority` (optional): Event priority filter
  - `tags` (optional): Tag filter

### get_incidents
- **Description**: List incidents from Datadog incident management
- **Parameters**:
  - `query` (optional): Search query for incidents
  - `limit` (optional): Number of incidents to return (default: 100)

## Troubleshooting

### Common Issues

1. **"spawn datadog-mcp-server ENOENT"**: This means the official server isn't available. Use this custom server instead.

2. **API Authentication Errors**: 
   - Verify your `DD_API_KEY` and `DD_APP_KEY` are correct
   - Check that your API keys have the necessary permissions
   - Ensure you're using the correct `DD_SITE` for your Datadog instance

3. **Network/Timeout Errors**:
   - Check your internet connection
   - Verify firewall settings allow HTTPS to Datadog APIs
   - Try increasing timeout values if on a slow connection

### Debug Mode

Run with debug logging:
```bash
DEBUG=1 node index.js
```

## Development

### Testing Changes

```bash
# Install dependencies
npm install

# Test the server
npm test

# Start in development mode with auto-reload
npm run dev
```

### Adding New Tools

1. Define the Zod schema for input validation
2. Add the tool to the `listTools` handler
3. Implement the tool logic in the `callTool` handler
4. Update this README with documentation

## License

MIT License - See LICENSE file for details.

Maintenance

ActivityInactive
ResponsivenessNo issues