はじめに
DynatraceがGitHub上に公開しているMCPサーバーを使って、VSCode上からアクセスできるオブザーバビリティ環境を構築してみました。この記事では実際のセットアップ手順や活用方法について紹介します。
詳細は以下のGitHub リポジトリを参照してください。
MCP (Model Context Protocol)とは?
この記事をご覧になられている方にはすでにMCPについて承知の方も多いと思いますが、簡単に説明をすると
AIモデルがデータベース、API、ファイルシステムなどの外部ツールやデータソースと相互作用するための標準化されたプロトコルです。AIアプリケーションにとってUSB-Cのような存在と例えられるケースも多いです。
このMCPを使うことで、GitHub CopilotやClaude DesktopなどのMCPクライアントがDynatraceにアクセスし、Dynatraceが収集・分析したデータを得ることが可能になります。
セットアップ手順
前提条件
- DynatraceのMCPサーバーはNode.jsの実行環境 (npxコマンドの実行)が必要となります
VSCodeの設定
下記のjson形式の設定ファイルをワークスペース配下の.vscode/mcp.jsonファイルに追加します。
{
"servers": {
"npx-dynatrace-mcp-server": {
"command": "npx",
"cwd": "${workspaceFolder}",
"args": ["-y", "@dynatrace-oss/dynatrace-mcp-server@latest"],
"envFile": "${workspaceFolder}/.env"
}
}
}
認証に必要なOAuth Clientの情報はワークスペース直下の .env に保存します。
Dynatrace OAuth clientの取得
ここからはDynatrace側で認証に必要なOAuth clientの発行手順について説明していきます。
Account Management へアクセス
DynatraceのAccount Management 画面を開きます。
画面上部の Identity & access management から OAuth clients を開くことでOAuth clientの発行ができます。
Account Managementにアクセスできない、もしくは OAuth clients のメニューが表示されない場合は、必要な権限が付与されていない可能性があります。
View and manage users and groups 権限が付与されているユーザーでアクセスをしているか確認をしてください。
もし View and manage users and groups が付与されていない場合は次に紹介するService usersを使って、OAuth clientを発行することができます。
Service usersの追加
このOAuth clientですが、View and manage users and groups 権限が付与されていないユーザーに対しては発行することはできません。
ユーザーやグループの管理を行うプラットフォームチームのメンバーに対してのみ View and manage users and groups を付与し、利用者である運用チームや開発チームのメンバーには付与していないというケースも多いかと思います。
このようなケースで運用チームや開発チームのメンバーへOAuth clientを発行する方法として、Service usersを追加する方法があります。
次からの手順は View and manage users and groups 権限を持った管理者(プラットフォーム)チームの方が実施します。
Account Management 画面の上部にある Identity & access management から Service users を開きます。
画面右側の + Add service user ボタンをクリックします。
Name と Description を入力し、Save ボタンをクリックします。
Service users の一覧に今作成したユーザーが追加されていることを確認し、右側にある 縦3点リーダー をクリックし、View Service User をクリックします。
作成した段階では必要な Permissons が何もないため、MCPを使用するために必要な権限を付与する必要があります。+ Permission ボタンをクリックして必要なポリシーを割り当てていきます。
必要なポリシーについては、GitHub リポジトリ のOAuth Client Scopesに書いてあるものに一致するものが必要になります。専用のポリシーを作成して、それを割り当てても良いですが、今回はデフォルトで用意されているものを使用します。
具体的には以下のポリシーを割り当てます。
Standard UserRead BizEventsRead EventsRead LogsRead MetricsRead SpansRead EntitiesRead System EventsRead User EventsRead User Sessions
必要なPermissionを割り当て終わったら、Service user emailをコピーしておきます。このメールアドレスがOAuth Clientを作成する際に必要になります。
複数のEnvironments があるアカウントではセキュリティの観点からScope の範囲は特定のEnvironmentに制限をするのが良さそうです。
OAuth clients の作成
画面上部の Identity & access management から OAuth clients を開きます。
画面右側の + Create client ボタンをクリックします。
Subject user email に先ほど作成したService user email を入力し、Description にわかりやすい説明を入力します(対象のユーザー名やメールアドレスを記載すると良いかもしれません)。
Permissons にはGitHub リポジトリ のOAuth Client Scopesに記載のものにチェックを入れます(記事作成時点では以下になります)。
設定項目が多く大変ですが、ブラウザの検索機能等を使うと良さそうです。
-
app-engine:apps:run- needed for environmentInformationClient -
app-engine:functions:run- needed for environmentInformationClient -
hub:catalog:read- get details about installed Apps on Dynatrace Environment -
environment-api:security-problems:read- needed for reading security problems -
environment-api:entities:read- read monitored entities -
environment-api:problems:read- get problems -
environment-api:metrics:read- read metrics -
environment-api:slo:read- read SLOs -
storage:buckets:read- Read all system data stored on Grail -
storage:logs:read- Read logs for reliability guardian validations -
storage:metrics:read- Read metrics for reliability guardian validations -
storage:bizevents:read- Read bizevents for reliability guardian validations -
storage:spans:read- Read spans from Grail -
storage:entities:read- Read Entities from Grail -
storage:events:read- Read Events from Grail -
storage:system:read- Read System Data from Grail -
storage:user.events:read- Read User events from Grail -
storage:user.sessions:read- Read User sessions from Grail -
settings:objects:read- needed for reading ownership information and Guardians (SRG) from settings
注: settings:objects:readを設定します。似た名称のapp-settings:objects:readがありますが、そちらではないことに注意してください。
全てにチェックを入れ終えたら画面下部にある Create client ボタンをクリックします。
OAuth client created という画面が表示され、Client ID と Client sceret、Dynatrace account URN が表示されます。この Client ID と Client secret をVSCode の.env ファイルに保存するので、すぐにFinish を押さないでください
VSCodeへOAuthの認証情報の設定
下記の環境変数定義ファイルをワークスペース直下の.envファイルに追加します。
-
OAUTH_CLIENT_ID- 前ステップで作成したClient ID -
OAUTH_CLIENT_SECRET- 前ステップで作成したClient sceret -
DT_ENVIRONMENT- 実際のDynatraceのEnvironment。live.dynatrace.com ではなくapps.dynatrace.comであることに注意
OAUTH_CLIENT_ID=dt0s02.SAMPLE
OAUTH_CLIENT_SECRET=dt0s02.SAMPLE.ABCD1234
DT_ENVIRONMENT=https://abcd1234.apps.dynatrace.com
少し準備の説明が長くなりましたが、実際にはそこまで時間は掛からずに設定できるかと思います。
GitHub Copilot Chat を使ってDynatraceのデータを確認する
ということで今回はお試しなので、こんな感じのシンプルなフォルダ構成になっています。
MCPサーバーが実行中なことを確認したら早速試していきたいと思います。
サービスの一覧を取得
まずは サービスの一覧をDynatraceから取得してきてください とプロンプトに打ち込んでみました。
MCPサーバー(npx-dynatrace-mcp-server)が find_entity_by_nameを実行しようとしてくれていますね。
問題なさそうなので、続行をクリックします。正しくサービスの一覧を取得してくることができました。
何度か試したところ毎回同じ命令を実行してくれるわけではなかったです。この辺りはまだ学習が十分でない可能性が高そうです。
各サービスの応答時間を確認
さて、サービスの一覧は確認することができましたが、自分たちが開発もしくは運用しているサービスの応答時間が気になります。なので、次は サービス毎の応答時間をDynatraceから取得してきてください と命令してみたいと思います。
残念ながらちょっと上手くいってなさそうです。もう少し明確に サービス毎の応答時間をnpx-dynatrace-mcp-serverを使って取得してきてください としてみたいと思います。
今度は execute_dql を使ってくれそうですが、肝心のDQLが誤っています。
この辺りのDQLの組み立てはLLMのモデル(今回はGPT-4.1を使用)が実施しているのだと思います。なので、正しいDQLを README.md に記述してあげることで正しいDQLを実行してくれるか試したいと思います。
## サービス毎の応答時間を確認する方法
```
timeseries { median = median(dt.service.request.response_time), P90 = percentile(dt.service.request.response_time, 90) }, by:{dt.entity.service}
| fieldsAdd entityName(dt.entity.service)
```
上記を README.md に追加しました。コンテキストに README.md が含まれていることを確認して再度同じ命令を実行してみます。
今度は正しく組み立ててくれていそうです。
ちょっと見にくいですが、問題なく中央値と90パーセンタイルの応答時間を取得することができました。
Problemの取得
最後に現在のプロブレムの状況を確認したいと思います。プロブレムの一覧を取得して と命令してみます。list_problems を使ってプロブレムの一覧を取得するようです。
プロブレムの一覧とすべて「Failure rate increase」ということを知らせてくれていますね。
プロブレム番号をして詳細を教えてと聞いてみます。
get_problem_details を使って重大度や影響サービスを含めたプロブレムの詳細を確認することができました。また、該当プロブレムへのリンクも提供されているので、詳細にすぐに飛べるのも便利ですね。
まとめ
本記事ではDynatraceが提供しているMCPサーバーを使って、VSCodeからDynatraceにアクセスする方法を試してみました。
今回試したもの以外にも以下のようなコマンドが用意されているようなので、さまざまなケースで使うことができそうです。
現時点ではDQLなどはまとめておく必要があったりしますが、段アプリケーションを開発している方にとっては、使い慣れたツールからDynatraceの状況をチャットベースで確認することができるのは非常に便利そうですね。
こちらの記事が少しでも気になった方はDynatraceをぜひ試してみてください。






















