Datadog MCP客户端

一个Python客户端,用于通过Anthropic的官方MCP库连接Datadog的MCP服务器,完全符合MCP授权规范并提供持久化令牌缓存。

  • by jthomas-dd
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jthomas-dd/sample-python-datadog-mcp

使用说明

符合MCP标准的Datadog客户端

使用Anthropic的官方MCP库连接到Datadog的MCP服务器的Python客户端 完全符合MCP授权规范 和 持久令牌缓存.

该实施提供了:

  • ✅ 完成符合MCP的OAuth 2.1流程
  • ✅ 自动令牌缓存和刷新
  • ✅ 访问所有15个Datadog MCP工具
  • ✅ 动态客户端注册
  • ✅ 安全令牌管理

✅ MCP合规特性

此实施遵循 MCP授权规范 包括:

  • 🔍 OAuth 2.0受保护资源元数据(RFC 9728) -自动发现授权服务器
  • 🚀 动态客户端注册(RFC 7591) -无需手动注册客户端
  • 🎯 资源指示器(RFC 8707) -适当的令牌受众绑定以确保安全
  • 🔒 PKCE 与 S256 -授权码保护所需的安全性
  • 🔄 授权服务器元数据发现 -RFC 8414和OpenID连接发现1.0支持
  • ⚡ 状态参数验证 -CSRF保护
  • 💾 持久令牌缓存 -具有自动刷新功能的安全令牌存储

🚀 快速开始

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 运行客户端(第一次将打开OAuth浏览器):

    python main.py          # Basic demo with server info and tool listing
    python working_example.py  # Multiple tool call examples
    python test_caching.py     # Test token caching functionality
    
  3. 后续运行使用缓存令牌(无需浏览器!)

🏆 可用的数据狗工具

客户端提供对所有15个Datadog MCP工具的访问:

工具 说明
ask_docs 搜索Datadog文档
get_events 查询Datadog事件
get_incident 获取事件详细信息
get_metrics 检索度量数据
get_monitors 列表和查询监视器
get_synthetics_tests 获取Synthetics测试数据
get_trace 检索APM跟踪
list_dashboards 列出可用仪表板
list_hosts 获取主机库存
list_incidents 列出事件
list_metrics 发现可用指标
list_services 列出服务
list_spans 查询APM跨度
search_logs 搜索日志数据
search_rum_events 查询RUM事件

💾 令牌缓存和管理

客户端通过安全缓存自动处理OAuth令牌:

  • 🗄️ 永久存储:令牌缓存到 ~/.datadog-mcp/oauth_tokens.json
  • 🔒 安全权限:缓存受保护的文件 600 权限
  • 🔄 自动刷新:使用刷新令牌自动刷新过期令牌
  • ⚡ 快速启动:后续运行跳过OAuth流程(无需浏览器)
  • 🗑️ 智能清理:自动清除并重新验证无效令牌

令牌生命周期:

  1. 首次运行:完整的OAuth流程→ 浏览器打开→ 缓存令牌
  2. 后续运行:已使用缓存令牌→ 无需浏览器
  3. 令牌到期:使用刷新令牌自动刷新
  4. 刷新失败:使用新的OAuth流自动重新身份验证

🔧 MCP OAuth流程

客户端自动执行完整的符合MCP的OAuth流程:

  1. 服务器发现:通过受保护的资源元数据发现Datadog的授权服务器
  2. 元数据发现:获取授权服务器功能和端点
  3. 动态注册:自动注册为OAuth客户端(支持回退)
  4. 授权流程:使用资源指示器执行受PKCE保护的授权
  5. 许可证管理:通过适当的受众验证处理令牌刷新
  6. 会话管理:维护MCP会话ID,以便进行正确的工具调用

⚙️ 配置(可选)

对于动态客户端注册失败的环境,您可以提供回退凭据:

cp .env.example .env
# Edit .env with your credentials (optional)
  • DATADOG_CLIENT_ID:后备Datadog OAuth应用程序客户端ID
  • DATADOG_CLIENT_SECRET:后备Datadog OAuth应用程序客户端密钥
  • DATADOG_REDIRECT_URIOAuth 重定向 URI(默认: http://localhost:8080/callback)
  • DATADOG_SITE:您的Datadog站点(默认值: datadoghq.com)

🛡️ 安全功能

  • 🎯 令牌受众绑定:令牌绑定到特定的MCP服务器资源
  • 🔒 PKCE保护:防止拦截攻击的授权码保护
  • ⚡ 状态参数:OAuth流期间的CSRF保护
  • 🔄 自动令牌刷新:安全的令牌生命周期管理
  • 🚀 动态客户端注册:不需要硬编码凭据
  • 💾 安全缓存:存储在存储库外部具有限制权限的令牌
  • 🗑️ 自动清理:令牌无效,缓存自动管理

📖 使用示例

基本用法:

from datadog_mcp_client import DatadogMCPClient

async def example():
    client = DatadogMCPClient()
    await client.initialize()        # OAuth flow (browser on first run)
    await client.get_server_info()   # Establish MCP session
    
    # Query documentation
    docs = await client.call_tool("ask_docs", {
        "query": "How do I create a dashboard?"
    })
    
    # List dashboards
    dashboards = await client.call_tool("list_dashboards", {
        "query": "system"
    })
    
    await client.close()

高级用法:

# Search logs
logs = await client.call_tool("search_logs", {
    "query": "status:error service:web",
    "from": "now-1h"
})

# Get metrics
metrics = await client.call_tool("get_metrics", {
    "query": "system.cpu.user{*}",
    "from": "now-1h"
})

# List monitors
monitors = await client.call_tool("get_monitors", {
    "query": "status:alert"
})

🧪 测试

测试客户端的各个方面:

# Test basic functionality
python main.py

# Test multiple tool calls
python working_example.py

# Test token caching (run twice to see caching in action)
python test_caching.py

# Test token refresh functionality
python test_token_refresh.py

🗂️ 文件结构

sample-python-datadog-mcp/
├── datadog_mcp_client.py    # Main MCP client implementation
├── oauth_handler.py         # MCP-compliant OAuth handler with caching
├── main.py                  # Basic demo
├── working_example.py       # Multiple tool call examples  
├── test_caching.py         # Token caching tests
├── test_token_refresh.py   # Token refresh tests
├── examples.py             # Advanced usage examples
├── requirements.txt        # Python dependencies
├── .env.example           # Environment template
├── .gitignore            # Secure git ignore rules
└── README.md             # This file

🔗 OAuth应用程序设置(可选)

要为回退凭据创建Datadog OAuth应用程序,请执行以下操作:

  1. 访问:https://app.datadoghq.com/account/settings#api
  2. 点击“OAuth应用程序”并创建新应用程序
  3. 将重定向URI设置为: http://localhost:8080/callback
  4. 将客户端ID和密码复制到 .env 文件

备注:动态客户端注册通常有效,因此通常不需要手动设置。

🎯 后续步骤

你可以:

  • 将其集成到您的应用程序中
  • 使用Datadog MCP工具构建自定义工具
  • 为您的特定用例扩展功能
  • 自信地在生产环境中部署

所有MCP授权规范要求均已实施和测试! 🚀