TalkO11yToMe: Learning MCP Servers with Dynatrace Integration について
TalkO11yToMeは、MCPとDynatraceの可観測性ワークフローを学ぶ開発者向けのプロジェクトです。GrailとClassic環境用のコマンドラインツールを提供し、独自のMCPサーバーは開発予定です。
主な機能
- 01Grailのログとビジネス分析のクエリ
- 02Classic環境のログクエリ
- 03OAuthとAPIトークンの設定
- 04非同期DQLクエリのポーリング
- 05共通設定と環境判定
活用シーン
- 01本番ログと問題の確認
- 02Lambdaのエラーやタイムアウトの調査
- 03環境の日次ヘルスチェック
MCP 対応
DynatraceとのMCP連携を学ぶためのプロジェクトで、MCPサーバーの設計資料を含みます。独自サーバーの構築はREADMEで開発予定とされています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
TalkO11yToMe:Dynatrace 統合で学ぶ MCP サーバー
MCP(Model Context Protocol)の学習の旅へようこそ!このプロジェクトでは、MCP サーバーとそのユースケースについて理解し、特に Dynatrace テナントと統合して、オブザーバビリティを活用した強力な AI ワークフローを実現する方法を学べます。
🎉 プロジェクトの状態:完全稼働中
6 つすべての Dynatrace ツールが本番環境で利用できる状態になりました:
- ✅ 設定の標準化:共通の
dotenvベース設定により、200 行以上の重複コードを解消 - ✅ DQL クエリのポーリング:非同期クエリ実行(202 → ポーリング → 結果)を適切に処理
- ✅ OAuth 認証:5 分間有効なベアラートークンを使用し、すべてのツールで動作
- ✅ 実データの取得:本番環境の問題、ログ、メトリクスを検出できることを確認
- ✅ クリーンなアーキテクチャ:保守性を高める
lib/とtools/の分離
📊 コード品質の改善:
- 改善前:ツールごとに環境変数を解析するコードが 40 行以上 × 6 ツール = 240 行以上
- 改善後:共通設定を使った 6 行 × 6 ツール = 36 行
- 削減:重複コードを 204 行以上削除し、検証も強化
🚨 重要:Grail と Classic の環境サポート
Dynatrace の環境タイプによって、必要なツールと設定が異なります:
🆕 Grail 環境(推奨 — モダンプラットフォーム)
- URL パターン:
https://xxx.apps.dynatrace.com - 認証:OAuth ベアラートークンが必須
- API エンドポイント:
/platform/classic/environment-api/v2/ - 主要ツール:
grail-log-query.js✅ 本番環境で利用可能 - MCP サーバー:✅ 構築準備完了 — 設計の詳細
🏛️ Classic 環境(レガシープラットフォーム)
- URL パターン:
https://xxx.live.dynatrace.com - 認証:API トークンまたは OAuth
- API エンドポイント:
/api/v2/ - 主要ツール:
classic-log-query.js✅ 本番環境で利用可能 - MCP サーバー:✅ 構築準備完了 — 設計の詳細
📖 設定の詳細については、以下の環境の検出を参照してください。
📁 プロジェクト構成
TalkO11yToMe/
├── lib/ # 🔧 Shared Infrastructure
│ ├── config.js # → Standardized dotenv configuration
│ └── demo-dotenv.js # → Configuration demonstration
├── tools/ # 🚀 Production Tools (6 tools)
│ ├── grail-log-query.js # → Primary tool for Grail environments
│ ├── grail-business-analytics.js # → DQL and business events (Grail)
│ ├── classic-log-query.js # → Primary tool for Classic environments
│ ├── classic-api-client.js # → Comprehensive API client (both)
│ ├── dynatrace-oauth-tool.js # → Authentication testing
│ └── dynatrace-monitor.js # → Visual monitoring dashboard
├── tests/ # 🧪 Comprehensive Test Suite
│ ├── test-suite.js # → Main test runner with 8 validation tests
│ ├── test-config.js # → Test configuration and scenarios
│ ├── test-history.js # → Test history tracking and analysis
│ ├── results/ # → Organized timestamped test results
│ └── README.md # → Complete testing documentation
├── docs/ # 📚 Documentation
│ ├── FIXES_SUMMARY.md # → Complete technical solution summary
│ ├── TOOLS_GUIDE.md # → Detailed tool usage and examples
│ ├── DYNATRACE_LOGS_SOLUTION.md # → Environment setup guide
│ └── [additional guides...]
└── env/ # 🔐 Environment Configuration
└── .env.dev # → Your Dynatrace credentials
📚 ドキュメント
クイックリファレンス
- 🚀 ツールガイド - ツールの詳細なドキュメントと使用例
- 🔧 技術的な解決策 - 環境設定とトラブルシューティングの詳細
- 📊 実装の概要 - プロジェクトの変革に関する詳細
- 🎯 AI 統合のデモ - AI 分析の手順を追った例
- ⚡ Cursor IDE との統合 - 実践的なワークフローと AI を活用した開発パターン
- 🤖 MCP サーバーの設計 - 公式 TypeScript SDK を使用した、アーキテクチャと実装計画の詳細
主なセクション
🤖 MCP とは?
Model Context Protocol(MCP)は、AI システム(Claude、Cursor、VS Code Copilot など)が、ビジネスですでに使用しているツールやデータに安全に接続できるようにするオープン標準です。AI の「ユニバーサルアダプター」と考えることができます。
主なメリット:
- 統合の標準化:AI ツールごとにカスタム統合を作成する必要がなくなります
- 安全なデータアクセス:システムへのアクセスを制御できます
- リアルタイムのコンテキスト:AI は本番システムから最新の情報を取得できます
- 拡張性:新しい機能やデータソースを簡単に追加できます
🏗️ MCP アーキテクチャの理解
MCP は 3 つの主要なコンポーネントで構成されています。
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Host │◄───┤ Client │◄───┤ Server │
│ (AI Agent) │ │(Translator) │ │ (Data/Tool) │
└─────────────┘ └─────────────┘ └─────────────┘
- ホスト:AI アプリケーション(Claude Desktop、VS Code など)
- クライアント:通信を処理し、リクエストを変換します
- サーバー:特定の機能(Dynatrace のデータ、ファイルアクセス、API など)を提供します
MCP の機能:
- ツール:AI が呼び出せる関数(メトリクスのクエリ、アラートの作成など)
- リソース:AI が読み取れるデータソース(ログ、ダッシュボード、設定)
- プロンプト:一般的な AI とのやり取りのテンプレート
🔍 Dynatrace MCP サーバー
公式の Dynatrace MCP サーバーを使用すると、AI アシスタントが Dynatrace 環境とやり取りし、リアルタイムのオブザーバビリティに関する知見を得られます。
機能:
- 問題管理:本番環境の問題を一覧表示して分析します
- セキュリティの問題:脆弱性やセキュリティ上の問題の詳細にアクセスします
- DQL クエリ:Dynatrace Query Language を実行して、ログやイベントを検索します
- Slack 連携:Slack コネクターを介してアラートを送信します
- ワークフローの自動化:通知ワークフローを設定します
- エンティティの所有者情報:サービスの所有者情報を取得します
ユースケース:
- リアルタイムのデバッグ:コーディング中に本番環境のコンテキストを取得します
- インシデント対応:ライブデータを使って AI 支援によるトラブルシューティングを行います
- セキュリティ分析:コードの脆弱性と本番環境の問題を関連付けます
- パフォーマンスの最適化:自然言語でメトリクスやログをクエリします
🚀 セットアップ手順
前提条件
- Node.js 18+(v20.19.2 LTS を使用しています)
- Dynatrace テナントへのアクセス
- Dynatrace API トークン、または OAuth クライアント認証情報
- AI クライアント(Cursor IDE を推奨)
環境設定
- 環境テンプレートをコピーします:
cp env/env.template env/.env.dev
env/.env.devを認証情報に合わせて編集します:
# Dynatrace Environment
DT_ENVIRONMENT=https://your-environment-id.live.dynatrace.com
# API Token (simpler setup)
API_TOKEN=dt0c01.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
# OAuth (optional - for official MCP server)
OAUTH_CLIENT_ID=dt0s02.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
OAUTH_CLIENT_SECRET=dt0s02.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.YYYYYYYYYYYYYYYYYYYYYYYYYYYY
OAUTH_RESOURCE_URN=urn:dynatrace:environment:your-environment-id
- 設定をテストします:
# Test shared configuration
node lib/demo-dotenv.js
# Verify tools work
node tools/dynatrace-monitor.js
# Run comprehensive test suite
node tests/test-suite.js
🔍 環境の判定
Dynatrace URL を確認して、環境の種類を判定します。
Grail 環境の判定
https://xxx.apps.dynatrace.com ← Contains ".apps."
→ 使用: grail-log-query.js(OAuth が必要です)
Classic 環境の判定
https://xxx.live.dynatrace.com ← Contains ".live."
→ 使用: classic-log-query.js(API トークンをサポートします)
🎯 クイックスタートデモ
Grail 環境の場合:
# Run primary tool for modern Dynatrace platforms
node tools/grail-log-query.js "error" now-2h
# Business analytics with DQL polling
node tools/grail-business-analytics.js query "fetch logs | limit 5"
# Visual monitoring dashboard
node tools/dynatrace-monitor.js
Classic 環境の場合:
# Run primary tool for legacy Dynatrace platforms
node tools/classic-log-query.js search "error" now-2h
# Comprehensive API client with auto-detection
node tools/classic-api-client.js problems 10
# Visual monitoring dashboard
node tools/dynatrace-monitor.js
🎯 最近のテスト結果:
- メタデータを含む 5 件のログレコードを取得(16 ms で 418,085 件のレコードをスキャン)
- Lambda の問題を 17 件検出(高いエラー率やタイムアウトを含む)
- OAuth トークンが動作(ベアラートークンの有効期間は 5 分)
- DQL ポーリングが機能(適切な 202 → ポーリング → 結果のワークフロー)
📖 ツールの詳しい使い方については、ツールガイドを参照してください。
🎯 実際のユースケース
1. AI を活用したインシデント対応
AI 連携デモを使用して、以下を行えます。
- Lambda 関数のエラーを自動的に分析する
- インシデント対応の優先順位を作成する
- セキュリティ評価を作成する
- モニタリングダッシュボードを設計する
2. 本番環境のデバッグコンテキスト
# Get context for coding session
node tools/dynatrace-monitor.js
# Search for specific errors with polling
node tools/grail-log-query.js "timeout" now-1h
3. 日次のヘルスモニタリング
# Morning standup dashboard
node tools/dynatrace-monitor.js
# Lambda function health check
node tools/classic-api-client.js lambda-problems now-24h
📊 アーキテクチャの改善
共有設定(lib/config.js)
変更前:各ツールで環境設定の解析処理が 40 行以上重複していました 変更後:dotenv を標準化した共有設定を 1 つにまとめました
// All tools now use this simple pattern:
const config = require('../lib/config');
const dt = await config.getDynatraceConfig();
// 6 lines replace 40+ lines of custom parsing
実現したメリット:
- ✅ 204 行以上を削減 — 大幅なコード削減
- ✅ エラー処理を標準化 — すべてのツールで一貫性を確保
- ✅ 環境を検証 — Grail と Classic を自動判定
- ✅ セキュリティを強化 — ログ内の認証情報を適切にマスキング
- ✅ 保守性を向上 — 設定情報の信頼できる単一の情報源
📚 リソース
MCP の公式リソース:
Dynatrace MCP 統合:
- Dynatrace 公式 MCP サーバー(Classic 環境のみ)
- Dynatrace API ドキュメント
- Dynatrace DQL ドキュメント
プロジェクトドキュメント:
- ツール完全ガイド - すべてのツール、使用例、ベストプラクティス
- 技術的な実装 - 環境のセットアップ、トラブルシューティング、アーキテクチャの詳細
- AI 統合の例 - AI 分析ワークフローの手順
- Cursor IDE 統合 - 開発ワークフローと実践的な AI パターン
🎉 さっそく始めませんか? 包括的な使用例とベストプラクティスについては、ツールガイドをご覧ください!
🧪 テストスイート
すべてのツールとインフラストラクチャを検証するための包括的なテストスイートが含まれています。
クイックテストの実行
# Run all tests (takes ~8 seconds)
node tests/test-suite.js
テスト対象
- ✅ ファイル構成:想定される9個のファイルがすべて存在すること
- ✅ 共有設定:Dotenv 統合が機能していること
- ✅ 認証:OAuth トークンの生成(有効期間5分)
- ✅ 6つのすべてのツール:Grail、Classic、Universal の各ツール
- ✅ 実データへのアクセス:本番環境の問題とログ
- ✅ DQL ポーリング:非同期クエリの実行(202 → ポーリング → 結果)
期待される結果
📊 TEST RESULTS SUMMARY
Total Tests: 8
✅ Passed: 8
❌ Failed: 0
📈 Success Rate: 100.0%
📋 詳細な使用方法とトラブルシューティングについては、テストスイートのドキュメントをご覧ください。
🚀 プロジェクトロードマップ
🎯 現在の状況:本番環境で使用可能
すべてのツールが包括的なテストを経て、整理された構成で動作しています。次のフェーズの拡張に進む準備が整っています。
📋 今後の優先事項
- 🌐 HTTP の改善:エラー処理とリクエストインターセプターを強化するため、
fetchからaxiosに移行 - 🤖 MCP サーバーの開発:ツールを AI が利用できる機能として公開するカスタム MCP サーバーを構築
- ⚡ パフォーマンスの最適化:並列テスト、パフォーマンスベンチマーク、負荷テスト
📚 計画ドキュメント
- プロジェクトロードマップの全容 - 包括的な機能ロードマップと実装スケジュール
- Axios 移行計画 - HTTP 改善の詳細な計画
- MCP サーバー設計 - 公式 TypeScript SDK を使用した、アーキテクチャと実装の全容
💡 アイデアと貢献
ロードマップには、次のような高度な機能が含まれています。
- 自然言語によるクエリ(「過去1時間の Lambda エラーを表示」)
- 複数環境のサポートと比較
- 予測分析と異常検知
- 他のオブザーバビリティプラットフォームとの統合
📝 貢献:今後の開発に貢献する方法については、TODO.mdをご確認ください。
🎯 注力分野:HTTP の改善と MCP サーバーの開発が、当面の優先事項です**
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。