Teramind について
Teramind は、従業員モニタリング基盤のメタデータを AI アシスタントや WYRE Conduit に提供する MCP サーバーです。対象をインベントリ、ルール、アラートに絞った読み取り専用設計で、収集したモニタリング内容は公開しません。
主な機能
- 01コンピューターとユーザーの一覧取得
- 02部門メタデータの確認
- 03期間や対象でアラートを絞り込み
- 04異常検知ルールと行動ポリシーの確認
- 05モニタリングプロファイルの確認
活用シーン
- 01モニタリング対象の端末とユーザーの確認
- 02期間を指定したアラートの調査
- 03設定済み行動ポリシーの確認
- 04収集対象データの設定内容の確認
MCP 対応
Teramind API の読み取り専用メタデータツールを MCP クライアントに提供します。接続にはアカウントのアクセストークンと対応するインスタンス URL が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e TERAMIND_ACCESS_TOKEN -e TERAMIND_INSTANCE_URL -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/teramind-mcp:v1.0.1TERAMIND_ACCESS_TOKENシークレットTeramind Access Token (JWT, generated in the dashboard's Access Tokens menu). See README's Credential scope section before minting one.TERAMIND_INSTANCE_URLPer-instance Teramind dashboard base URL, e.g. https://yourcompany.teramind.co.MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.AUTH_MODEシークレットCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.LOG_LEVELLog verbosity: debug, info, warn, errorローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/wyre-ai/teramind-mcp:v1.0.1stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Teramind MCP サーバー
Teramind の内部脅威・従業員モニタリング API(コンピューターのインベントリ、エージェント(ユーザー)のインベントリ、部門、アラート、異常ルールと行動ポリシーの設定、モニタリングプロファイルのメタデータ)を、AI アシスタントおよび WYRE Conduit ゲートウェイで利用するための MCP サーバーです。
このコネクターは、製品の性質上、個人を特定できる情報(PII)を大量に扱います(内部脅威・従業員モニタリング製品)。マージ前にセキュリティレビューが必要です。以下の対象範囲と認証情報のスコープを参照してください。
認証
Teramind の認証には JWT アクセス トークンを使用します。このトークンは、Teramind ダッシュボードのユーザーメニュー -> アクセストークンからアカウントごとに生成し、x-access-token ヘッダーで送信します。OAuth フローはありません。
Teramind の API は顧客インスタンスごと(クラウドまたはオンプレミス/プライベートクラウド)に提供されます。このカタログのほかの多くのコネクターのような、共有のマルチテナント型ベース URL はありません。各認証情報セットには、顧客自身のインスタンス URL(例:https://yourcompany.teramind.co)も含まれます。ゲートウェイモードでは、どちらもリクエストごとに X-Teramind-Access-Token/X-Teramind-Instance-Url ヘッダーで渡されます。ローカル/stdio モードでは、TERAMIND_ACCESS_TOKEN/TERAMIND_INSTANCE_URL から一度読み込まれます。
設定
| 環境変数 | 説明 |
|---|---|
TERAMIND_ACCESS_TOKEN | Teramind ダッシュボードのアクセストークンメニューから発行された JWT アクセストークンです。 |
TERAMIND_INSTANCE_URL | 顧客の Teramind インスタンスのベース URL(例:https://yourcompany.teramind.co)です。 |
MCP_TRANSPORT | stdio(デフォルト)または http です。 |
AUTH_MODE | env(デフォルト。上記の環境変数を読み込みます)または gateway(Conduit ゲートウェイが注入する X-Teramind-Access-Token/X-Teramind-Instance-Url を通じて、リクエストごとに認証情報を受け取ります)です。 |
CONDUIT_S2S_SECRET | 設定すると、HTTP トランスポートでは /mcp リクエストごとに有効な X-Gateway-S2S ヘッダー(Conduit サイドカー認証)が必要になります。 |
LOG_LEVEL | debug | info(デフォルト)| warn | error です。 |
ツール
コンピューター
teramind_list_computers- モニタリング対象のコンピューターを一覧表示します(ホスト名、FQDN、MAC/IP、OS、モニタリング状態)。teramind_get_computer- 1 台のコンピューターの詳細を取得します。
エージェント(ユーザー)
teramind_list_agents- モニタリング対象のエージェント(Teramind では、モニタリング対象の従業員/ユーザーの識別情報を指します)を一覧表示します。項目は ID、名前、メールアドレス、アバター、オンライン状態です。teramind_get_agent- 1 人のエージェントの詳細を取得します。
部門
teramind_list_departments- 部門を一覧表示します(組織構造のメタデータ)。teramind_get_department- 1 つの部門の詳細を取得します。
アラート
teramind_list_alerts- 指定した期間内に発生したルール違反イベントを一覧表示します。必要に応じて、エージェント/コンピューター/部門で絞り込めます。
異常ルール
teramind_list_anomaly_rules- 設定済みの機械学習ベースの異常検知ルールを一覧表示します(タイプ、リスク指数、トリガー条件)。teramind_get_anomaly_rule- 1 つの異常ルールの詳細を取得します。teramind_list_anomaly_rule_tags- 異常ルールの分類に使用できるタグを一覧表示します。
行動ポリシー
teramind_list_behavior_policies- 行動ポリシーを一覧表示します(各ポリシーが監視するアクティビティの種類と、その一致条件)。teramind_get_behavior_policy- 1 つの行動ポリシーの詳細を取得します。teramind_list_behavior_policy_groups- 行動ポリシーグループを一覧表示します(行動ポリシーを整理するコンテナー)。teramind_get_behavior_policy_group- 1 つの行動ポリシーグループの詳細を取得します。
モニタリング
teramind_list_monitoring_profiles- モニタリングプロファイルを一覧表示します(取得対象として設定されているデータの種類と対象者)。
アカウント
teramind_get_account- 認証済みアカウント自身の設定を取得します(認証情報の正常性確認)。
対象範囲
内部脅威/従業員監視製品の機微性を考慮し、このカタログの通常の基準よりもさらに保守的な範囲に限定した、意図的に狭い読み取り専用の v1 機能です。 Teramind の公開済み Postman コレクション(apidoc.dev.teramind.co)から直接取得したドキュメント記載の API には、数十の製品領域(監視、BI レポート、時間追跡、スケジュール管理、生産性分類、LDAP、タスク管理、スケジュール管理)にわたり 239 個の操作があります。このコネクターが実装するのは 16 個で、コンピューター/ユーザー/セッションのインベントリ、部門メタデータ、ルール/アラート設定のみを対象とする、文字どおりの HTTP GET 読み取りです。従業員監視データの機微性を考慮し、動詞にかかわらず、Conduit ゲートウェイではすべてのツールが isAdmin: true に分類されます。
セッションインベントリに対応する文字どおりの GET エンドポイントはありません。 Teramind のセッションデータ(Sessions report、Login session BI グリッド)にアクセスできるのは、単純なリソース GET ではなく、POST のクエリー/グリッド形式のエンドポイントのみです。ここではこれを調査結果として記載しており、ツールとして捏造してはいません。そのため、セッションデータはコネクターの v1 の対象範囲外であり、別途除外を決定したものではありません。
除外対象:実際に監視されたコンテンツを返すもの、または認証情報を生成・開示するもの。動詞が GET であっても、名前に基づいて判断します
このコネクターの対象範囲の境界に従い、次のように区別します。監視に関するメタデータ(誰が監視されているか、いつ監視されたか、どのルールが発動したか)は対象範囲内ですが、監視対象の実際に取得されたコンテンツ、または有効な認証情報を取得する仕組みは、読み取り/書き込みの動詞にかかわらず対象外です。
| エンドポイント | 理由 |
|---|---|
GET /tm-api/agent/:id/avatar/:scale | エージェントのアバター/顔写真を返します。生体情報に関連する写真コンテンツです。 |
GET /tm-api/activity/email/:id/info | メールアクティビティのメタデータ(参加者/件名)で、コンテンツに近接する情報です。以下の関連する2つのエンドポイントと併せて対象外とし、個別には判断しません。 |
GET /tm-api/activity/email/:id/body-html-document | 取得されたメール本文全体を、レンダリング済みHTMLとして返します。生の取得コンテンツです。 |
GET /tm-api/activity/email/:id/body | 取得されたメール本文全体を返します。生の取得コンテンツです。 |
GET /tm-api/player/settings | 特定のエージェントとコンピューターに関するセッション録画プレーヤー/再生設定です。 |
GET /tm-api/player-tags | 録画セッションのタイムラインに紐付いた注釈/ブックマークです。 |
GET /tm-api/player-tags/timeline | 特定のエージェント/コンピューターの録画セッションについて、一定期間のタイムラインタグを返します。 |
GET /tm-api/player/export-video/status/:id | 画面録画ビデオのエクスポートジョブのステータスです。 |
GET /tm-api/player/available-video-data | コンピューター/期間について、存在する録画ビデオセグメントを列挙します。利用可能な画面録画の一覧です。 |
GET /tm-api/report/export/download/:id | 汎用のレポートエクスポートのダウンロードです。このエクスポートは、このAPIがサポートする任意の種類のレポート(キーストローク、メール、インスタントメッセージ、ビデオなど)である可能性があるため、エクスポートごとに判断するのではなく、種類全体を対象外とします。 |
GET /tm-api/report/export/status | レポートエクスポートジョブのステータスです。上記のダウンロードエンドポイントと同じく、コンテンツを含み得る懸念があります。 |
GET /tm-api/short-token | 新しい短期間有効のアクセストークンを生成します。コンテンツではなく認証情報の発行に当たるため、このカタログ内の他のすべてのコネクターにおける認証情報を返すエンドポイントと同じ基準で対象外とします。 |
GET /tm-api/token | アカウントの有効なJWTトークンIDを一覧表示します。認証情報/セッション管理データです。 |
Teramindのドキュメントに記載されたAPIには、生のキーストロークログ、チャット/IMコンテンツ、印刷文書のコンテンツ、ソーシャルメディアアクティビティのコンテンツを返すGETエンドポイントはありません。これらにアクセスできるのは、対象カテゴリとして後述するPOST /tm-api/report/*/gridおよびPOST /tm-api/wip/tma-query(BI)の各ファミリーのみです。そのため、このコネクターのGETのみの対象範囲では、上記のエンドポイントごとの個別判断だけでなく、設計上、キーストローク/スクリーンショット/チャットコンテンツの露出も排除されます。 この主張の対象となること、ならないことについては、認証情報の対象範囲をご覧ください。
カテゴリ別の除外対象(明示された範囲外:コンピューター/ユーザー/セッションのインベントリ、およびルール/アラートデータ)
| カテゴリ | 除外理由 |
|---|---|
| Activities(集計済みアクティビティ) | アクティビティ/生産性データであり、インベントリやルール/アラートのメタデータではありません。 |
| BI / BI Filter(37 ops) | すべて POST のクエリ/チャートエンドポイントです。いくつかは、取得したコンテンツ(キーストローク、メール、IM、ソーシャルメディア、印刷文書、ウェブ検索、コンソールコマンド)を返します。 |
| Reports / Report settings / Reports batch(約55 ops) | すべて POST のグリッド/設定エンドポイントです。いくつかは、取得したコンテンツ(キーストローク、メール、IM、印刷、ソーシャルメディア、コンソールコマンド、動画エクスポート)を返します。 |
| Video export(残り2 ops) | 画面録画コンテンツのエクスポートを生成する POST の書き込みアクションです。 |
| Time Tracking Reports, Time tracker tasks, Tasks, Schedule | 従業員の出退勤、タスク、シフトスケジュール機能であり、監視対象のインベントリやルール/アラートデータとは関係ありません。 |
| LDAP | ディレクトリサービスの接続設定です。対象範囲外であり、単純な読み取りであってもバインドアカウントの詳細が露出する可能性があるためです。 |
| SMTP, Ingestion | 単一の POST 書き込みアクション(テストメールの送信、VoIP イベントの作成)であり、読み取り対象がありません。 |
| Shared lists | ルールの入力データセット(例:ルールが参照するキーワード/URL の監視リスト)で、機密性が明確でないため、デフォルトで含めるのではなく判断により除外しています。 |
Productivity Profile, instance/tma-categories | 生産性分類のタクソノミーです。ルールに関連するとも考えられますが、このコネクターで明示された範囲には含まれないため、対象を広げて含めるのではなく、範囲を限定するために除外しています。 |
instance/tma-state, time, license/usage | 汎用ユーティリティ/ステータスエンドポイントであり、いずれもコンピューター/ユーザー/セッションのインベントリやルール/アラートデータには該当しません。 |
Agent, Computer, Department, Behavior Policy, Anomaly Rule, Authorization, Monitoring Profile に対するすべての POST/PUT/DELETE/PATCH | 書き込み、プロビジョニング、監視の有効化/無効化、またはアカウント変更の操作です。HTTP メソッドにかかわらず、実装しません。 |
| Anomaly-rule / behavior-policy templates, tags-and-misc bundle, demo policy | 新しいルールを作成するためのカタログであり、この組織で実際に設定されている監視ではないため、読み取り専用のインベントリコネクターの対象外です(teramind_list_anomaly_rule_tags は例外として維持しています。これは teramind_list_anomaly_rules の出力を解釈するのに直接役立つ、シンプルでリスクの低いタクソノミー検索です)。 |
需要があれば、意図的に範囲を決定したうえで、後から追加できます。デフォルトでは追加しません。
エンドポイント単位だけでなく、フィールド単位の制限
GET /tm-api/v1/agents[/:id] は、省略可能な fields クエリパラメーターにより、salary_type と default_wage(報酬データ)、および ldap_attrs(未加工のディレクトリ属性)を返すことができます。これらは「誰が監視されているか」を大きく超える人事/PII データです。このコネクターの client.ts はこのパラメーターを一切渡さないため、呼び出し元がツールの入力スキーマを通じて何を要求しても、デフォルトの識別フィールド(agent_id、name、email_address、avatar、online)だけが返されます(teramind_list_agents/teramind_get_agent には fields パラメーター自体が公開されていません)。
レビュアーによる確認が必要な判断事項:アラートの内容
teramind_list_alerts は、このコネクターで明示された範囲(「ルール/アラートデータ」)に明確に含まれます。また、Teramind のドキュメントによると、そのレスポンス形式には、ルールが発動した理由を説明する description/caption/values フィールドが含まれます。ルールの種類によっては、これらのフィールドに純粋なメタデータではなく、発動時のコンテキストの短い抜粋(例:一致したキーワードやアクセスした URL)が含まれる可能性があります。これらは Teramind が返した内容のまま、変更せずに受け渡されます。アラートはこのコネクターの範囲に明示されており、抜粋が含まれる場合も、人間がルールで検出するよう設定した内容に限定され、フィルタリングされていない生のアクティビティ記録ではないため、対象範囲内と判断しました。ただし、このタスクの指示に従い、これを独断で決着済みの問題とせず、ここで明示的に注意喚起しています。
認証情報のスコープ(実際のアカウントに接続する前にお読みください)
この README で最も重要な確認事項です。 確信度を意図的に分けた、次の2つの主張があります。
(1)構造上確認済み - このコネクター自身のコードが、コンテンツ取得、認証情報発行、書き込みの各エンドポイントを呼び出すことはありません。client.ts を確認したところ、関数はちょうど16個あり、各ツールに1つずつ対応しています。それぞれ、上記のツールセクションに記載されたエンドポイントのいずれかに対する、リテラルな GET です。src/ 内にワイルドカード、パススルー、汎用リクエスト関数は一切ありません。このコネクターは、設計上、読み取り専用であり、コンテンツを取得しません。
(2)ベンダーのドキュメントに記載あり、独立した検証なし - 基盤となるアクセストークン自体をメタデータ専用スコープに制限できるかどうかは、このコネクターのコードが呼び出す内容とは別の問題であり、単純な「はい/いいえ」では答えられません。
- Teramind のナレッジベース(「User Menu」「How to change a user's access level」―いずれも2026-09-20に直接取得)によると、アクセストークンは、作成したアカウントの全権限を継承し、その権限は作成時に固定されます。 Teramind では、アカウントのロールとは独立したトークンのスコープ設定はできません。
- 標準のケース、つまりフル権限の「Administrator」アカウントが1つだけある状態では、(新規のセルフサービス型クラウドトライアルへの登録で作成される構成です)制限は一切ありません。 そこで作成したトークンは、画面録画、キーストロークログ、メール/チャットのコンテンツ取得を含む、Teramind が文書化している239の操作すべてにアクセスできます。このコネクターのコードはそうしたエンドポイントを呼び出しませんが、顧客が、このコネクターや Conduit が制御または検証できる範囲を超えて、意図的に手動でベンダー側の操作を行わない限り、認証情報自体は制限されません。
- Teramind が文書化している制限付きロールに、**「Operational Administrator」**があります。このロールは独自のアクセストークンを作成でき、「録画を閲覧したり、監視データを表示したりすることはできない」ほか、「Alerts」も表示できないと明記されています(Teramind の「How to change a user's access level」記事から直接引用)。これはメタデータ専用トークンに最も近い、文書化された構成です。ただし、(a)これは顧客が手動でアカウントを設定する必要がある選択肢であり、このコネクターも Conduit の接続フローも、接続時に適用したり確認したりするものではありません。(b)Teramind のドキュメントはこれをメニュー/UIレベルのアクセス制限として説明していますが、Operational Administrator のスコープを持つトークンで、このコネクターが対象外とするエンドポイントにリクエストを送信し、実際にサーバー側で403が返されるのか、UI上の制限にすぎないのかを確認する独立したテストは実施されていません。(c)このロールでは、このコネクターが対象範囲内とみなしている「Alerts」も明確にブロックされます。そのため、制限付きロールであっても、このコネクター自身のスコープ境界にはうまく対応しません。
- さらに制限の厳しいロールとして、**「Infrastructure Administrator」**があります。ただし、(a)このロールは独自のアクセストークンを作成できず、Administrator がトークンを作成した後に割り当てる必要があります。(b)Teramind のドキュメントによると、「従業員またはコンピューターのアカウントを一覧表示できない」ため、このコネクター自身のコンピューター/エージェントのインベントリーツールも利用できなくなります。したがって、このコネクターの目的に適した構成ではありません。
結論:デフォルトでは、このコネクターが意図的に除外しているすべてのエンドポイントに、Teramind のアクセストークン認証情報がアクセスすることを妨げるものは何もありません。 実際の制御境界となるのは認証情報ではなく、このコネクター自身のコードです(上記の1を参照)。Gate 3 の審査を担当する方、またはこのベンダーへの接続を顧客に案内する方への推奨事項: 多層防御として、保存済みの同じトークンを異なる設定のクライアントが再利用する事態に備え、顧客にはフル権限の Administrator ではなく、専用の Operational Administrator アカウントでトークンを作成するよう案内することを検討してください。ただし、主要な検証済み制御は、コンテンツ取得エンドポイントを一切呼び出さないこのコネクター自身のコードとして扱ってください。
リクエスト制限
- HTTP リクエスト本文は 256 KiB(262144 バイト)に制限されています。
X-Gateway-S2Sチェックを通過した後、Content-Lengthが上限を超えている場合は、JSON-RPC エラーとともに 413 が返されます。Content-Lengthのない本文は、MCP SDK のトランスポートによって制限されます。認証されていないリクエストには、引き続き先に 401 が返されます。 tools/callの引数は 10,000 要素までに制限されています(すべての配列項目と、すべての階層のオブジェクトキーが対象です)。上限を超える入力はisErrorツール結果を返し、ディスパッチされません。
これらの制限は、CVE-2026-111768 / GHSA-46jr-4wx8-v453(検証中のメモリ枯渇)および GHSA-f897-62hf-6gxq(リクエスト本文/バッチの上限がない問題)に対処します。
開発
npm install
npm run build
npm test
npm run lint # tsc --noEmit
Docker
docker build -t teramind-mcp .
docker run -p 8080:8080 -e TERAMIND_ACCESS_TOKEN=... -e TERAMIND_INSTANCE_URL=https://yourcompany.teramind.co teramind-mcp
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。