開発の背景 ServiceNow管理者向けにブラウザ認証を使うMCPがなかったので、自分で作りました。
ServiceNow Portalを開発していたことがきっかけです — ウィジェット、ページ、スクリプトインクルードが
絡み合った依存関係グラフ。
本当に難しいのはコードを直すことではなく、何が実際に壊れているのか、触る前に正確に診断することでした。
AIエージェントがその診断を確実にこなせると分かってから、次の疑問は自然に、テストとデプロイまで
安全に任せられるかということになりました。
その診断にはTable APIだけでは不十分でした。
Flow Designerの本当の構造 — トリガー、アクション、フローがなぜ実行された(されなかった)のか —
は、通常のREST認証では届かないセッション専用エンドポイントの奥にあります。
そのため、このツールは設定ファイルに埋め込まれたAPIキーではなく、本物のブラウザ認証へと拡張する
必要がありました。
管理者に本当に必要なのは、実際の管理者がすでに持っているもの — MFA/SSO/SAMLで保護された本物の
セッションです。
ServiceNowに対してそれをしてくれるMCPがなかったので、それがこのプロジェクトの核となる構造に
なりました — エージェントはキーを持つ代わりに、実際のブラウザセッションをそのまま引き継ぎます。
そこから、これは単なるAPIラッパーではなくなりました。
すべての書き込みは、熟練したエンジニアが手作業で行うのと同じ手順を踏みます — ローカルファースト、
プッシュ前にライブサーバーとdiff、競合する変更は静かに上書きされる代わりに検知されるようアンカリング、
そして証明可能であること — デプロイXMLは実際にライブインスタンスから来たことを示す証明書を伴います。
トークンコストも同じ扱いを受けました — すべてのスキーマは圧縮され、すべてのパッケージは
エージェントが実際に使える範囲だけに絞られています。
ここでの設計上の選択はすべて、仕様書からではなく、実際のServiceNow Portal業務で実戦検証を重ねて
生まれたものです。
🔎 正確な診断 どのウィジェット、どのスクリプトインクルード、どのフローか — スタックトレースから当てずっぽうで判断する代わりに、実際の依存関係チェーンを追跡します。
🔑 秘密情報ではなくセッション Flow Designerの本当の構造は、Table APIが届かないセッション専用エンドポイントの奥にあります。エージェントはAPIキーの代わりに、実際の管理者セッション — MFA、SSO、SAML — をそのまま引き継ぎます。
🧭 アンカー同期 すべてのプッシュは、まずライブレコードとdiffされアンカリングされます — 競合する変更は静かに上書きされず検知されます。
🪶 設計段階からトークンを意識 圧縮されたスキーマ、パッケージ単位のツール、必要なフィールドだけの読み取り — コストは後回しではなく設計上の制約です。
クイックスタート これを貼り付けるだけ。それで完了。
下の行を任意の AI コーディングアシスタントにコピーしてください。
uv、Playwright、MCP 設定、スキルまで — すべて自動でインストールします。
AI に貼り付ける
Install and configure mfa-servicenow-mcp by following the instructions here:
curl -s https://raw.githubusercontent.com/jshsakura/mfa-servicenow-mcp/main/docs/llm-setup.md
Claude Code、Cursor、Codex、OpenCode、Windsurf、VS Code Copilot、Antigravity、Zed などで動作します。
AI がクライアントと OS を検出し、対話的にセットアップへ導きます。
セットアップ後は、AI クライアントを再起動 して MCP サーバーを読み込んでください。
企業のセキュリティツールによって uvx がブロックされている場合は、下記の
uvx がブロックされる場合(pip) セクションへ進んでください。
手動 — インストール + 設定 インストールしてから、クライアント設定に追加する
ターミナル派ですか? uv + Chromium をインストールしてから、サーバーを MCP クライアントの設定ファイルに追加してください(下記スニペット)。インストーラーコマンドも、クライアントごとのフラグも不要です。
macOS / Linux Windows
# 1. uv をインストール(まだの場合)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. サーバー + Chromium を先に取得(初回のブラウザ認証呼び出しで
# ~150 MB のダウンロードによるタイムアウトを防ぐため)
uvx --refresh --with playwright --from mfa-servicenow-mcp servicenow-mcp --version
uvx --with playwright playwright install chromium
# 3. MCP クライアント設定にサーバーを追加 — 下記のスニペットをコピー # 1. uv をインストール(まだの場合)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 2. サーバー + Chromium を先に取得(初回のブラウザ認証呼び出しで
# ~150 MB のダウンロードによるタイムアウトを防ぐため)
uvx --refresh --with playwright --from mfa-servicenow-mcp servicenow-mcp --version
uvx --with playwright playwright install chromium
# 3. MCP クライアント設定にサーバーを追加 — 下記のスニペットをコピー uvx がブロックされる場合 pip でインストールする
Windows の Smart App Control は uvx をブロックします。uvx は実行のたびに署名のない一時実行ファイルを展開するためです。少し前まで動いていた uvx が Windows Update の直後に動かなくなったなら、原因はこれです。pip でインストールし、サーバーはモジュールとして起動してください — servicenow-mcp コンソールスクリプトは pip が生成する署名のない .exe ラッパーなので、同じ理由でブロックされます。
macOS / Linux Windows
# Homebrew やディストリ標準の Python はグローバルな pip インストールを拒否します (PEP 668)。
# python.org 版の Python を使うか、上の uvx のままでも構いません。
pip install mfa-servicenow-mcp playwright
python -m playwright install chromium
# 確認:
python -m servicenow_mcp --version
# 後で更新する場合:
pip install --upgrade mfa-servicenow-mcp playwright
python -m playwright install chromium# python.org の Python 3.10+ は署名済みで Smart App Control を通過します。
pip install mfa-servicenow-mcp playwright
python -m playwright install chromium
# 確認:
python -m servicenow_mcp --version
# 後で更新する場合:
pip install --upgrade mfa-servicenow-mcp playwright
python -m playwright install chromium
env ブロックはどちらでも同じで、変わるのは command と args だけです。下記の 手動フォールバック セクションのスニペットを貼り付け、command を python、args を [“-m”, “servicenow_mcp”] に設定してください。
手動フォールバック クライアント設定を手動で修復または検査する
インストーラーが推奨される方法です。下記の生の設定例は、クライアント設定を手作業で検査または修復する必要がある場合にのみ使用してください。
4 つの異なる形が、サポートされているすべてのクライアントをカバーします。env ブロックはどこでも同一です — 外側のラッパーだけが異なります。
Claude Desktop / Claude Code / AntiGravity / Cursor Zed Codex (TOML) OpenCode
{
"mcpServers": {
"servicenow": {
"command": "uvx",
"args": ["--with", "playwright", "--from", "mfa-servicenow-mcp", "servicenow-mcp"],
"env": {
"SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
"SERVICENOW_AUTH_TYPE": "browser",
"SERVICENOW_BROWSER_HEADLESS": "false",
"SERVICENOW_USERNAME": "your-username",
"SERVICENOW_PASSWORD": "your-password"
}
}
}
}{
"servicenow": {
"command": "uvx",
"args": ["--with", "playwright", "--from", "mfa-servicenow-mcp", "servicenow-mcp"],
"env": {
"SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
"SERVICENOW_AUTH_TYPE": "browser",
"SERVICENOW_BROWSER_HEADLESS": "false",
"SERVICENOW_USERNAME": "your-username",
"SERVICENOW_PASSWORD": "your-password"
}
}
}[mcp_servers.servicenow]
command = "uvx"
args = ["--with", "playwright", "--from", "mfa-servicenow-mcp", "servicenow-mcp"]
enabled = true
[mcp_servers.servicenow.env]
SERVICENOW_INSTANCE_URL = "https://your-instance.service-now.com"
SERVICENOW_AUTH_TYPE = "browser"
SERVICENOW_BROWSER_HEADLESS = "false"
SERVICENOW_USERNAME = "your-username"
SERVICENOW_PASSWORD = "your-password"{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"servicenow": {
"type": "local",
"command": [
"uvx", "--with", "playwright",
"--from", "mfa-servicenow-mcp", "servicenow-mcp"
],
"enabled": true,
"environment": {
"SERVICENOW_INSTANCE_URL": "https://your-instance.service-now.com",
"SERVICENOW_AUTH_TYPE": "browser",
"SERVICENOW_BROWSER_HEADLESS": "false",
"SERVICENOW_USERNAME": "your-username",
"SERVICENOW_PASSWORD": "your-password"
}
}
}
}
読み取り専用の standard パッケージがデフォルトで読み込まれます — MCP_TOOL_PACKAGE は不要です。
書き込みアクセスには、高度なパッケージ(service_desk、portal_developer、
platform_developer、または full)に設定してください —
ツールパッケージ(高度)ガイド を参照。
手動 — ステップ 3 LLM 最適化スキルを追加する
ツールだけでは生の API 呼び出しにすぎません。スキルこそが LLM を実際に役立つものにします —
安全ゲート、ロールバック、コンテキスト対応の委譲を備えた検証済みパイプライン。
今日は 4 スキル、リリースのたびに増えていきます。
Claude Code Codex OpenCode Antigravity
uvx --from mfa-servicenow-mcp servicenow-mcp-skills claudeuvx --from mfa-servicenow-mcp servicenow-mcp-skills codexuvx --from mfa-servicenow-mcp servicenow-mcp-skills opencodeuvx --from mfa-servicenow-mcp servicenow-mcp-skills antigravity🔍 analyze/ 1 スキル — ローカルソース監査: 相互参照、デッドコード、実行順序、HTML レポート
🧭 explore/ 1 スキル — フロートリガートレース: テーブル変更時にどのワークフロー/フローが発火するか
📦 manage/ 2 スキル — アプリソースダウンロード、ローカル同期(diff → 競合検出付きプッシュ)
最新の状態を保つ 常に最新バージョンを実行する
uvx は最後にダウンロードしたバージョンをキャッシュします — 自動更新は されません 。
uv 経由でアップグレードして最新リリースを取得してください:
ターミナル
uvx --refresh --from mfa-servicenow-mcp servicenow-mcp --version
その後、MCP クライアント(Claude Code、Cursor など)を再起動して新しいバージョンを読み込んでください。