# 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.