About Go Dd MCP
Go Dd MCP is an MCP server published by kmesiab in the Analytics category: basic Datadog MCP Server written in Golang.
The repository has 1 stars and 1 forks, with the last commit 9 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/kmesiab/go-dd-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Go Dd MCP
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository yesterday. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- !License declaredNo license file. Legally you have no right to use it in a product.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
Datadog MCP Server
A Model Context Protocol (MCP) server that provides access to Datadog's API, starting with logs querying functionality.
Features
- Query Datadog logs using natural language
- Support for time ranges and filters
- Built on official Datadog Go API client
- Simple MCP protocol integration
Prerequisites
- Go 1.25 or higher
- Datadog API key and Application key
- Access to a Datadog account with logs
Installation
# Clone the repository
git clone https://github.com/kmesiab/go-dd-mcp.git
cd go-dd-mcp
# Build the server
go build -o datadog-mcp-server
Configuration
Environment Variables
Set your Datadog credentials as environment variables:
export DD_API_KEY="your-api-key"
export DD_APP_KEY="your-application-key"
export DD_SITE="datadoghq.com" # Optional: defaults to datadoghq.com if not set
Obtaining Credentials: You can obtain these keys from your Datadog account:
- API Key: Organization Settings > API Keys
- Application Key: Organization Settings > Application Keys
Regional Sites:
If your organization uses a different Datadog region, set DD_SITE to the appropriate value:
| Region | DD_SITE Value | Example URL |
|---|---|---|
| US1 (default) | datadoghq.com |
https://app.datadoghq.com |
| US3 | us3.datadoghq.com |
https://us3.datadoghq.com |
| US5 | us5.datadoghq.com |
https://us5.datadoghq.com |
| EU | datadoghq.eu |
https://app.datadoghq.eu |
| AP1 | ap1.datadoghq.com |
https://ap1.datadoghq.com |
| Government | ddog-gov.com |
https://app.ddog-gov.com |
To identify your site, check the URL you use to access Datadog in your browser.
Note for SSO Users: If your company uses SSO, you still use the same API and Application keys. SSO only affects UI login, not API authentication.
Usage
Running the Server
./datadog-mcp-server
The server communicates via JSON-RPC 2.0 over stdin/stdout.
MCP Configuration
Add this to your MCP client configuration (e.g., Claude Desktop config):
{
"mcpServers": {
"datadog": {
"command": "/path/to/datadog-mcp-server",
"env": {
"DD_API_KEY": "your-api-key",
"DD_APP_KEY": "your-application-key",
"DD_SITE": "datadoghq.com"
}
}
}
}
For EU region example:
{
"mcpServers": {
"datadog": {
"command": "/path/to/datadog-mcp-server",
"env": {
"DD_API_KEY": "your-api-key",
"DD_APP_KEY": "your-application-key",
"DD_SITE": "datadoghq.eu"
}
}
}
}
For Claude Desktop on macOS, the config file is located at:
~/Library/Application Support/Claude/claude_desktop_config.json
VSCode Configuration
Using with Cline Extension
If you're using the Cline extension for VSCode:
- Install the Cline extension from the VSCode marketplace
- Open VSCode settings (Cmd/Ctrl + ,)
- Search for "Cline: MCP Settings"
- Click "Edit in settings.json"
- Add the MCP server configuration:
{
"cline.mcpServers": {
"datadog": {
"command": "/absolute/path/to/datadog-mcp-server",
"env": {
"DD_API_KEY": "your-api-key",
"DD_APP_KEY": "your-application-key",
"DD_SITE": "datadoghq.com"
}
}
}
}
Using with Continue Extension
If you're using the Continue extension:
- Install the Continue extension
- Open the Continue configuration file (
~/.continue/config.json) - Add the MCP server under
mcpServers:
{
"mcpServers": [
{
"name": "datadog",
"command": "/absolute/path/to/datadog-mcp-server",
"env": {
"DD_API_KEY": "your-api-key",
"DD_APP_KEY": "your-application-key",
"DD_SITE": "datadoghq.com"
}
}
]
}
Alternative: Use .env file
Instead of hardcoding credentials in the config, you can create a .env file in the project directory:
# .env
DD_API_KEY=your-api-key
DD_APP_KEY=your-application-key
DD_SITE=datadoghq.com
Then source it before launching VSCode:
# Load environment variables
export $(cat .env | xargs)
# Launch VSCode
code .
Important: Make sure /absolute/path/to/datadog-mcp-server points to the actual binary location, for example:
/Users/yourusername/go/github.com/kmesiab/go-dd-mcp/datadog-mcp-server(macOS/Linux)C:\path\to\datadog-mcp-server.exe(Windows)
Available Tools
query_logs
Search and query Datadog logs with filters and time ranges.
Parameters:
query(required): Search query using Datadog query syntax- Examples:
service:web status:error,env:production @user.id:12345
- Examples:
from(optional): Start time in RFC3339 format or relative time (e.g.,1h,30m)- Default: 1 hour ago
to(optional): End time in RFC3339 format or relative time- Default: now
limit(optional): Maximum number of logs to return (max 1000)- Default: 50
Example queries:
Query all error logs in the last hour:
query: "status:error"
Query logs from specific service in last 30 minutes:
query: "service:api-gateway"
from: "30m"
Query logs with custom time range:
query: "env:production @http.status_code:500"
from: "2026-01-20T10:00:00Z"
to: "2026-01-20T12:00:00Z"
limit: 100
Datadog Query Syntax
The query parameter supports full Datadog log search syntax:
- Status:
status:error,status:warn,status:info - Service:
service:web-api,service:database - Environment:
env:production,env:staging - Tags:
version:1.2.3,region:us-east-1 - Attributes:
@user.id:123,@http.status_code:404 - Text search:
"error message"(quoted for exact match) - Wildcards:
service:web-*,@user.email:*@example.com - Boolean operators:
service:api AND status:error,status:error OR status:warn - Exclusion:
-status:info,NOT service:test
Troubleshooting
Custom Enterprise Subdomains
If your company uses a custom Datadog subdomain (e.g., yourcompany.datadoghq.com), you may encounter validation errors. The Go API client has a known limitation with custom enterprise domains.
Workaround:
If you need to use a custom subdomain, the code would need to be modified to use context variables instead of the DD_SITE parameter. Contact your Datadog administrator to determine if your organization uses a standard regional site (like datadoghq.eu or us3.datadoghq.com) instead of a custom subdomain.
Most enterprise SSO setups use standard regional sites, so this limitation typically doesn't affect API access.
Connection Issues
If you're getting connection errors:
-
Verify your site/region: Check the URL you use to access Datadog:
app.datadoghq.com→DD_SITE=datadoghq.comapp.datadoghq.eu→DD_SITE=datadoghq.euus3.datadoghq.com→DD_SITE=us3.datadoghq.com
-
Verify API keys: Ensure your API and App keys are valid and have the necessary permissions:
- Go to Organization Settings > API Keys
- Go to Organization Settings > Application Keys
-
Test manually: Try the test commands in the "Testing the Server" section below.
Development
Project Structure
.
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI workflow
├── main.go # MCP server implementation
├── main_test.go # Unit tests
├── go.mod # Go module dependencies
├── go.sum # Dependency checksums
├── Makefile # Build and development tasks
└── README.md # This file
Building and Testing
The project includes a Makefile for common development tasks:
# Build the binary
make build
# Run tests
make test
# Run tests with coverage report
make coverage
# Run linter
make lint
# Format code
make fmt
# Run all checks (fmt, vet, lint, test)
make check
# Install development tools (golangci-lint)
make install-tools
# Clean build artifacts
make clean
# See all available targets
make help
Running Tests
# Run all tests
go test -v ./...
# Run tests with coverage
go test -v -race -coverprofile=coverage.out ./...
# View coverage in browser
go tool cover -html=coverage.out
Manual Testing
You can test the server manually using stdin/stdout:
You can test the server manually using stdin/stdout:
# Initialize
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | ./datadog-mcp-server
# List available tools
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | ./datadog-mcp-server
# Query logs
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"query_logs","arguments":{"query":"status:error","limit":10}}}' | ./datadog-mcp-server
Architecture
This server:
- Uses the official Datadog Go API client
- Implements the MCP protocol for tool-based interactions
- Provides a simple bridge between LLMs and Datadog's Logs API
The implementation is straightforward:
main.go: ~250 lines of code- MCP protocol handling
- Single tool implementation (logs query)
- Authentication via environment variables
Future Extensions
Potential additions (PRs welcome):
- Metrics querying
- Event search
- Monitor management
- Dashboard access
- Incident tracking
- APM traces
- Additional log analysis tools
License
MIT
Contributing
Contributions are welcome. Please ensure code is well-tested and documented.
Resources
Build Stats
This project was built using Claude Code in a single session.
Code written:
- 670 lines of Go code (main.go + main_test.go)
- 107 lines of CI/CD configuration
- 60 lines of Makefile
- 385 lines of documentation
Development metrics:
- API tokens used: ~100,000
- Estimated API cost: ~$1.50 USD
- Session duration: ~1.5 hours
- Commits: 8
Notes: This is a straightforward project - a thin wrapper around the official Datadog Go client with MCP protocol implementation. The bulk of the work was setting up proper types, tests, and CI/CD infrastructure rather than complex business logic.
README fetched from the repository yesterday. The original is authoritative.