sn-mcp-bridge
sn-mcp-bridge
軽量なModel Context Protocol (MCP) サーバーで、AIコーディングアシスタントにServiceNow上での完全な開発機能を提供します — どこにもインストールは不要です。npx 経由でローカル実行し、Table APIを通じてServiceNowに接続します。
ServiceNowはレコードベースの開発プラットフォームです。スクリプトインクルード、ビジネスルール、クライアントスクリプト、UIアクション、ACL — すべての開発成果物はシステムテーブルのレコードです。独立した「コードレイヤー」は存在せず、Table API が 開発APIです。つまり、このサーバーを通じたCRUD操作は単なるデータの問い合わせではなく、以下のように構築するための手段です:
insert_recordをsys_script_includeに対して → 新しいスクリプトインクルードを作成update_recordをsys_scriptに対して → ビジネスルールを変更query_dataをsys_script_clientに対して → テーブルの全クライアントスクリプトを読み取りdelete_recordをsys_ui_actionに対して → UIアクションを削除
CRUDを超えたタスク — ロジックのテスト、複雑なGlideRecordクエリの実行、スクリプトインクルードの呼び出し、複数ステップのトランザクション — には、execute_script が完全なサーバーサイドJavaScriptランタイムを提供します。
このサーバーは、認証情報を提供したユーザーアカウントの権限で動作します — そのユーザーがアクセス権を持つテーブルとフィールドのみ読み取り/書き込みが可能です。execute_script ツールは、sys.scripts.do 経由でバックグラウンドスクリプトを実行するため、管理者認証情報が必要です。
認証は Basic認証 と OAuth 2.0(認可コード) の両方をサポートしています — 認証 を参照してください。
コミュニティでは、多数のオープンソースServiceNow MCPサーバーが共有されています。このサーバーは、シンプルで純粋、そして改善しやすい状態を保つために存在します — プレーンなJSでビルドステップなし(4つのソースファイル、ネイティブ fetch、Node.js 18+)、ツールの追加は server.registerTool() の呼び出し1つです。
ツール
CRUD
ツール | 説明 |
| エンコードされたクエリ、フィールド選択、ページネーションを使用して任意のテーブルからレコードをクエリ |
| sys_id で単一のレコードを取得 |
| 新しいレコードを作成 |
| 既存のレコードを更新 |
| sys_id でレコードを削除 |
スキーマとディスカバリ
ツール | 説明 |
| カラム、タイプ、選択肢、参照、階層を含むテーブルメタデータを取得 |
| インスタンス上のすべてのアプリケーションスコープを一覧表示 |
| 指定されたスコープに属するテーブルを一覧表示 |
| スコープのすべてのアプリケーションファイルをタイプ別にグループ化して一覧表示 |
分析
ツール | 説明 |
| オプションのグループ化を使用してCOUNT、AVG、MIN、MAX、SUMクエリを実行 |
| テーブルとクエリの単純なレコード数を取得 |
高度な機能
ツール | 説明 |
| ネイティブのコード検索APIを使用してスクリプトフィールドを横断検索(プラグインが利用できない場合はテーブルクエリにフォールバック) |
| インスタンスのテーブルとリレーションシップからDBMLスキーマ図定義を生成 |
| sys.scripts.do ¹ を介してインスタンス上でバックグラウンドスクリプトを実行 |
診断
ツール | 説明 |
| アプリケーションログ( |
| 単一トランザクションのすべてのログエントリをトレース ¹ |
| インスタンスのログファイルブラウザからノードレベルのログを読み取り ¹ |
¹ これら4つのツールにはユーザー名とパスワードが必要です — 認証 を参照してください。OAuth認証情報のみが設定されている場合、これらは登録されません。
Related MCP server: ServiceNow MCP Server
認証
ブリッジは2つのモードをサポートしています。CLIENT_ID、CLIENT_SECRET、GRANT_TYPE が設定されている場合はOAuthを選択し、それ以外の場合はBasic認証を使用します。
すべての変数は同じ命名規則に従います:<INSTANCE_NAME> は SN_INSTANCE のサブドメインで、大文字に変換されハイフンはアンダースコアに置き換えられます(例:https://mydev01.service-now.com → SN_MYDEV01_USERNAME)。プレフィックス付き変数が設定されていない場合、ブリッジはプレフィックスなしの形式(SN_USERNAME、SN_CLIENT_ID、…)にフォールバックします。
Basic認証
変数 | 必須 | 説明 |
| はい | インスタンスURL(例: |
| はい | Basic認証用のユーザー名 |
| はい | Basic認証用のパスワード |
警告: 以下の例では、すぐに使い始められるように平文の認証情報を使用しています。これは、パスワードがディスク上のファイルに保存され かつ、LLMプロバイダーへのすべてのAPI呼び出しでAIアシスタントに表示されることを意味します。接続が確認できたら、Secretless AIによる認証情報の保護 の手順に従って、設定ファイルから平文のシークレットを移動することを強くお勧めします!
OAuth 2.0(認可コード)
OAuthは、ServiceNowのパスワードを設定ファイルから完全に排除します。ブリッジはブラウザを通じて一度認証し、その後は短命のアクセストークンを自動的に更新します。
1. ServiceNowでOAuthアプリケーションを登録します。 システムOAuth → アプリケーション登録 に移動し、新規 をクリックして 外部クライアント用のOAuth APIエンドポイントを作成 を選択します。名前を付け、リダイレクトURL を http://localhost:33380/callback に設定し、保存します。生成された クライアントID と クライアントシークレット をコピーします。
2. ブリッジを設定します:
変数 | 必須 | 説明 |
| はい | インスタンスURL |
| はい | アプリケーション登録からのクライアントID |
| はい | アプリケーション登録からのクライアントシークレット |
| はい |
|
| いいえ | デフォルトは |
| いいえ | ブラウザステップを完全にスキップするために、別の場所で取得したリフレッシュトークンをシードします |
| いいえ | S256コードチャレンジを送信するには |
CLIENT_ID / CLIENT_SECRET / GRANT_TYPE のいずれか1つだけを設定することは、サイレントにBasic認証にフォールバックするのではなく、起動エラーとなります。
3. 初回実行。 ブリッジはブラウザでインスタンスの同意ページを開きます(URLは、開けない場合にstderrにも出力されます)。承認後、localhost:33380 でリダイレクトをキャプチャし、コードをトークンと交換します。
初回実行は、ブラウザで承認するまで最大3分間ブロックされます。MCPクライアントがタイムアウトしても、通常はトークンはすでに書き込まれています — 再接続するだけでサイレントに起動します。
トークンストレージ。 トークンは ~/.sn-mcp-bridge/tokens.json(ディレクトリ 0700、ファイル 0600)にキャッシュされ、インスタンスホストとクライアントIDでキー付けされるため、複数のインスタンスが1つのファイルに共存できます。以降の実行では、ブラウザ操作なしでキャッシュされたリフレッシュトークンを再利用します。リフレッシュトークンが期限切れになると(ServiceNowではデフォルトで100日)、ブラウザフローが自動的に再トリガーされます。ファイルを削除すると、新しい認証が強制されます。
両方の併用
OAuthはREST/Table APIのみをカバーします。execute_script、explore_syslog、explore_syslog_transaction、explore_node_logs は、ベアラートークンでは提供できないフォームログインセッションを必要とするServiceNow UIエンドポイント(sys.scripts.do、ui_page_process.do)にアクセスします。
OAuth変数 と一緒に USERNAME と PASSWORD を指定した場合、RESTトラフィックはOAuth経由で行われ、これら4つのツールはセッションログインに認証情報を使用します。指定しない場合、これら4つのツールは単に登録されません — アシスタントはそれらを認識しません。
クイックスタート
Claude Code
プロジェクトルートの .mcp.json(そのプロジェクトでのみ利用可能)または ~/.claude/claude_code_config.json(すべてのプロジェクトで利用可能)に追加します:
{
"mcpServers": {
"sn_mydev01": {
"command": "npx",
"args": ["-y", "sn-mcp-bridge"],
"env": {
"SN_INSTANCE": "https://mydev01.service-now.com",
"SN_MYDEV01_USERNAME": "your_username",
"SN_MYDEV01_PASSWORD": "your_password"
}
}
}
}OpenAI Codex
プロジェクトルートの .codex/config.toml(プロジェクトのみ、信頼されたプロジェクトが必要)または ~/.codex/config.toml(すべてのプロジェクトで利用可能)に追加します:
[mcp_servers.sn_mydev01]
command = "npx"
args = ["-y", "sn-mcp-bridge"]
[mcp_servers.sn_mydev01.env]
SN_INSTANCE = "https://mydev01.service-now.com"
SN_MYDEV01_USERNAME = "your_username"
SN_MYDEV01_PASSWORD = "your_password"VS Code(GitHub Copilot)
プロジェクトの .vscode/mcp.json に追加します:
{
"servers": {
"sn_mydev01": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sn-mcp-bridge"],
"env": {
"SN_INSTANCE": "https://mydev01.service-now.com",
"SN_MYDEV01_USERNAME": "your_username",
"SN_MYDEV01_PASSWORD": "your_password"
}
}
}
}Cursor
プロジェクトの .cursor/mcp.json に追加します:
{
"mcpServers": {
"sn_mydev01": {
"command": "npx",
"args": ["-y", "sn-mcp-bridge"],
"env": {
"SN_INSTANCE": "https://mydev01.service-now.com",
"SN_MYDEV01_USERNAME": "your_username",
"SN_MYDEV01_PASSWORD": "your_password"
}
}
}
}OAuthの使用
ユーザー名/パスワードのペアをOAuth変数に置き換えます。以下の env ブロックは上記のすべてのエディタに適用されます — 周囲の設定構文のみが異なります:
{
"mcpServers": {
"sn_mydev01": {
"command": "npx",
"args": ["-y", "sn-mcp-bridge"],
"env": {
"SN_INSTANCE": "https://mydev01.service-now.com",
"SN_MYDEV01_CLIENT_ID": "your_client_id",
"SN_MYDEV01_CLIENT_SECRET": "your_client_secret",
"SN_MYDEV01_GRANT_TYPE": "authorization_code"
}
}
}
}execute_script と診断ツールを利用可能にするには、同じブロックに SN_MYDEV01_USERNAME と SN_MYDEV01_PASSWORD を追加します — 両方の併用 を参照してください。
複数インスタンス
インスタンスごとに個別のサーバーエントリを追加します。設定形式は上記と同じです — 異なるサーバー名とインスタンス固有の認証情報でパターンを繰り返すだけです。
Secretless AI による認証情報の保護
Secretless AI は、認証情報を安全なバックエンドに保存し、secretless-ai run を介して実行時に注入します。
以下の例ではユーザー名とパスワードを保護していますが、OAuthを使用している場合は SN_MYDEV01_CLIENT_SECRET にも同じアプローチが機能します。
セットアップ
1. 認証情報を保存します:
npx secretless-ai secret set SN_MYDEV01_USERNAME=your_username
# Omit the value so it prompts interactively — keeps the password out of shell history
npx secretless-ai secret set SN_MYDEV01_PASSWORD2. MCP設定を更新 して、ラッパーとして secretless-ai run を使用します。--only フラグは、どのシークレットを注入するかを指定します。SN_INSTANCE はシークレットではないため、envブロックに残ります:
{
"mcpServers": {
"sn_mydev01": {
"command": "npx",
"args": ["-y", "secretless-ai", "run", "--only", "SN_MYDEV01_USERNAME,SN_MYDEV01_PASSWORD", "--", "npx", "-y", "sn-mcp-bridge"],
"env": {
"SN_INSTANCE": "https://mydev01.service-now.com"
}
}
}
}複数インスタンスの場合は、パターンを繰り返します — 各インスタンスの認証情報をプレフィックス付きの名前で保存し、対応する --only リストを持つサーバーエントリを追加します:
{
"mcpServers": {
"sn_mydev01": {
"command": "npx",
"args": ["-y", "secretless-ai", "run", "--only", "SN_MYDEV01_USERNAME,SN_MYDEV01_PASSWORD", "--", "npx", "-y", "sn-mcp-bridge"],
"env": {
"SN_INSTANCE": "https://mydev01.service-now.com"
}
},
"sn_myprod01": {
"command": "npx",
"args": ["-y", "secretless-ai", "run", "--only", "SN_MYPROD01_USERNAME,SN_MYPROD01_PASSWORD", "--", "npx", "-y", "sn-mcp-bridge"],
"env": {
"SN_INSTANCE": "https://myprod01.service-now.com"
}
}
}
}他のエディタの設定形式も、Quick Start で示したのと同じパターンに従います。command/args を secretless ラッパーに置き換えるだけです。
サポートされているバックエンド
バックエンド | フラグ | 最適な用途 |
OS Keychain |
| macOS(推奨) — 組み込みのキーチェーンを使用し、ログインパスワードとTouch IDで保護されます |
Local encrypted file |
| Windows(推奨) — AES-256-GCM暗号化ファイル、追加ソフトウェア不要 |
1Password |
| チームやCI/CD、または1Passwordが既にインストールされているWindowsユーザー向け |
HashiCorp Vault |
| エンタープライズおよびセルフホスト型デプロイメント向け |
GCP Secret Manager |
| GCPネイティブのワークロード向け |
代替手段: protect-mcp
MCP設定がグローバル設定パス(例:~/.vscode/mcp.json、~/.cursor/mcp.json)にある場合、protect-mcpを使用して一度に自動スキャンと保護を行うことができます:
npx secretless-ai protect-mcp --backend keychainmcp-status と mcp-unprotect でステータスを確認したり元に戻したりできます:
npx secretless-ai mcp-status
npx secretless-ai mcp-unprotect制限事項:
protect-mcp、mcp-status、mcp-unprotectはグローバル設定ファイルのみを検出します。プロジェクトディレクトリ内の.vscode/mcp.json、.mcp.json、.codex/config.tomlなどのワークスペースレベルの設定は検出しません。ワークスペース設定の場合は、上記のsecret set+runアプローチを使用してください。
Secretless AIの詳細については、完全なドキュメントを参照してください。
要件
Node.js 18+(ネイティブの
fetchを使用)REST APIアクセスが可能なServiceNowインスタンス
インスタンスの基本認証資格情報、または登録済みのOAuthアプリケーションのいずれか(Authenticationを参照)
ライセンス
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server enabling AI agents to access and manipulate ServiceNow data through natural language interactions, allowing users to search for records, update them, and manage scripts.47MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants and development tools to interact with ServiceNow instances, providing comprehensive API coverage for incident management, change management, CMDB, and other ServiceNow modules.3MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for ServiceNow that provides over 60 pre-built tools for ITSM, ITOM, and App Dev operations, enabling AI agents to manage incidents, changes, users, service catalog, and projects through a unified interface.6MIT
- AlicenseAqualityAmaintenanceAn MCP server that enables AI assistants to interact with ServiceNow instances, allowing script execution, data querying, ATF tests, and log tailing through natural language commands.8736413MIT
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for AI access to Swagger by SmartBear.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Reecepoulsen/sn-mcp-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server