Sapient Mcp について
Sapient Mcp は RoboSAPiens を通じて SAP GUI を操作する MCP サーバーで、SAP の画面タスクを実行する AI エージェント向けです。ローカルの stdio と SSE/HTTP 接続に対応し、スクリーンショット、スクリプト生成、画面スナップショットを追加できます。
主な機能
- 01SAP GUI のウィンドウとコントロールを操作
- 02トランザクション実行とテーブル入力
- 03フィールド、テーブル、ステータスの読み取り
- 04オプションのスクリーンショットと構造化スナップショット
- 05オプションの Robot Framework スクリプト生成
活用シーン
- 01GUI を通じて SAP トランザクションを実行
- 02購買発注の情報を入力して送信
- 03SAP の画面内容とステータス結果を読み取る
- 04リモート環境や CI から SAP GUI に接続
MCP 対応
SAP GUI の操作・読み取りツールを MCP クライアントに提供し、stdio または SSE/HTTP で接続します。スクリーンショット、スクリプト生成、高度なスナップショット機能は任意で有効化できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SAPient MCP
AI エージェント向けのインテリジェントな SAP GUI 自動化
RoboSAPiens ライブラリを使用して、LLM(Claude、Copilot、Cursor など)による SAP GUI の自動化を可能にする、本番環境対応の Model Context Protocol(MCP)サーバーです。
互換性のある MCP クライアント
| クライアント | モード | 備考 |
|---|---|---|
| Claude Desktop | stdio | 完全サポート |
| Claude Code | stdio | 完全サポート |
| Cursor | stdio または SSE | 完全サポート |
| VS Code(GitHub Copilot) | stdio または SSE | Copilot のエージェントモードが必要です |
| Windsurf | stdio または SSE | 完全サポート |
| 任意の MCP クライアント | SSE/HTTP | --port フラグを使用 |
前提条件
| 要件 | 詳細 |
|---|---|
| OS | Windows 10/11 のみ(SAP GUI は Windows 専用です) |
| Python | 3.10 以降 |
| SAP GUI | SAP GUI for Windows がインストールされていること |
| SAP Scripting | サーバー(RZ11:sapgui/user_scripting=TRUE)および SAP Logon クライアントの設定で有効になっていること |
SAP GUI Scripting を有効にする(初回のみ)
- SAP Logon を開きます →
Customize Local Layout (Alt+F12)→Options Accessibility & Scripting→Scriptingに移動します- ✅ スクリプトを有効にします
- ❌「スクリプトが実行中の SAP GUI セッションに接続するときに通知する」を無効にします
- ❌「スクリプトが接続を開くときに通知する」を無効にします
- BASIS 管理者にトランザクション
RZ11を実行し、sapgui/user_scripting=TRUEに設定するよう依頼します
インストール
# Clone the repo
git clone https://github.com/yourorg/sapient-mcp.git
cd sapient-mcp
# Install (using pip or uv)
pip install -e .
# Or with uv (recommended)
uv pip install -e .
クイックスタート
オプション A — stdio モード(ローカルクライアント)
SAPient MCP は任意の MCP 互換クライアントで動作します。以下からお使いのクライアントを選んでください。
Claude Desktop
%APPDATA%\Claude\claude_desktop_config.json を編集します。
{
"mcpServers": {
"sapient": {
"command": "python",
"args": ["-m", "sapient_mcp"],
"env": {
"SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
"SAPIENT_MCP_CAPS": "screenshot,codegen,advanced",
"SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
}
}
}
}
Claude Code(CLI)
claude mcp add sapient python -m sapient_mcp \
-- --caps screenshot,codegen,advanced
または、プロジェクトのルートにある ~/.claude/mcp.json / .claude/mcp.json を編集します。
{
"mcpServers": {
"sapient": {
"command": "python",
"args": ["-m", "sapient_mcp", "--caps", "screenshot,codegen,advanced"],
"env": {
"SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
"SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
}
}
}
}
Cursor
Cursor Settings → MCP → Add new MCP Server に移動し、command を入力してから、以下を入力します。
python -m sapient_mcp --caps screenshot,codegen,advanced
または、~/.cursor/mcp.json を編集します。
{
"mcpServers": {
"sapient": {
"command": "python",
"args": ["-m", "sapient_mcp", "--caps", "screenshot,codegen,advanced"],
"env": {
"SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
"SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
}
}
}
}
VS Code(GitHub Copilot)
VS Code CLI を使用して MCP サーバーをインストールします。
code --add-mcp '{"name":"sapient","command":"python","args":["-m","sapient_mcp","--caps","screenshot,codegen,advanced"]}'
または、ワークスペースの .vscode/mcp.json に追加します。
{
"servers": {
"sapient": {
"type": "stdio",
"command": "python",
"args": ["-m", "sapient_mcp", "--caps", "screenshot,codegen,advanced"],
"env": {
"SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
"SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
}
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json を編集します。
{
"mcpServers": {
"sapient": {
"command": "python",
"args": ["-m", "sapient_mcp", "--caps", "screenshot,codegen,advanced"],
"env": {
"SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
"SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
}
}
}
}
注: stdio モードでは、SAPient MCP は stdout にも stderr にも書き込みません。すべてのログはログファイルにのみ出力されます。これは、すべてのクライアントでクリーンな JSON-RPC 通信を行うために必要です。
オプション B — SSE/HTTP モード(リモート/CI/複数ユーザー)
SAP マシンと AI クライアントの実行場所が異なる場合や、複数の開発者で 1 つの SAPient インスタンスを共有する場合に最適です。
Windows の SAP マシンでサーバーを実行します。
python -m sapient_mcp --port 8765 --caps screenshot,codegen,advanced
次に、任意の MCP クライアントで HTTP エンドポイントを指定します。
{
"mcpServers": {
"sapient": {
"url": "http://sap-windows-machine:8765/mcp"
}
}
}
Claude Desktop、Claude Code、Cursor、VS Code、Windsurf、およびその他すべての MCP 互換クライアントで同じように動作します。
オプション C — 設定ファイル
python -m sapient_mcp --config C:\sap_config.json
環境変数
すべての設定は、ROBOSAP_MCP_ プレフィックスを付けた環境変数で指定できます。
| 変数 | デフォルト | 説明 |
|---|---|---|
ROBOSAP_MCP_SAPLOGON_PATH | C:\...\saplogon.exe | SAP Logon 実行ファイルへのパス |
ROBOSAP_MCP_SAP_SERVER | null | 自動接続用のサーバーの説明 |
ROBOSAP_MCP_SAP_CLIENT | null | 自動ログイン用の SAP クライアント |
ROBOSAP_MCP_SAP_USER | null | 自動ログイン用の SAP ユーザー |
ROBOSAP_MCP_SAP_PASSWORD | null | SAP パスワード(ログには記録されません) |
ROBOSAP_MCP_PORT | null(stdio) | SSE モード用のポート |
ROBOSAP_MCP_CAPS | "" | カンマ区切りの機能:screenshot,codegen,advanced |
ROBOSAP_MCP_OUTPUT_DIR | ./sap_output | スクリーンショットとログのディレクトリ |
ROBOSAP_MCP_SCREENSHOT_ON_ERROR | true | ツールの失敗時に自動でスクリーンショットを撮影 |
利用可能なツール
コア(常に読み込み)
| ツール | 説明 |
|---|---|
sap_open | SAP Logon を起動 |
sap_connect_to_server | SAP サーバーに接続 |
sap_connect_to_running | 実行中の SAP セッションに接続 |
sap_get_session_info | 読み取り専用:現在の状態とタイトル |
sap_close | SAP を終了 |
sap_execute_transaction | トランザクションコードを実行 |
sap_activate_tab | ラベルを指定してタブをクリック |
sap_get_window_title | 読み取り専用:現在のウィンドウタイトル |
sap_select_menu_item | メニューバーを操作 |
sap_send_key | キーを送信(Enter、F3 など) |
sap_fill_text_field | ラベルを指定してフィールドに入力 |
sap_clear_text_field | フィールドをクリア |
sap_set_checkbox | チェックボックスをオンにする |
sap_unset_checkbox | チェックボックスをオフにする |
sap_select_radio_button | ラジオボタンを選択 |
sap_push_button | ラベルを指定してボタンをクリック |
sap_button_exists | 読み取り専用:ボタンの有無を確認 |
sap_read_text_field | 読み取り専用:フィールドの値を読み取る |
sap_read_text | 読み取り専用:任意のテキスト要素を読み取る |
sap_read_status_bar | 読み取り専用:SAP ステータスバーのメッセージ |
sap_count_table_rows | 読み取り専用:テーブルの行数 |
sap_select_table_row | テーブルの行を選択 |
sap_read_table_cell | 読み取り専用:セルの値を読み取る |
sap_fill_cell | テーブルのセルに入力 |
sap_double_click_cell | テーブルのセルをダブルクリック |
sap_scroll_table | テーブルを上下にスクロール |
--caps screenshot
| ツール | 説明 |
|---|---|
sap_take_screenshot | SAP ウィンドウのスクリーンショットを撮影 |
--caps codegen
| ツール | 説明 |
|---|---|
sap_get_generated_script | 蓄積された Robot Framework スクリプトを取得 |
sap_clear_script | スクリプトバッファーをクリア |
--caps advanced
| ツール | 説明 |
|---|---|
sap_get_snapshot | 現在のウィンドウの構造化 JSON スナップショット |
LLM との会話例
あなた: 仕入先 100001、会社コード 1000 で、品目 ABC-001 を 50 個含む購買発注書を作成してください
SAPient は、LLM に次の操作を案内します。
sap_execute_transaction("/nME21N")を呼び出すsap_get_window_title()を呼び出す → "Create Purchase Order"sap_fill_text_field("Vendor", "100001")を呼び出すsap_fill_text_field("Company Code", "1000")を呼び出す- ヘッダーを確定するため
sap_send_key("Enter")を呼び出す sap_activate_tab("Item Overview")を呼び出すsap_fill_cell("1", "Material", "ABC-001")を呼び出すsap_fill_cell("1", "Quantity", "50")を呼び出すsap_push_button("Save")を呼び出すsap_read_status_bar()を呼び出す → "Purchase order 4500001234 created"
プロジェクト構成
sapient-mcp/
├── pyproject.toml
├── README.md
├── sap_config.json # Example config file
├── claude_desktop_config.json # Example Claude Desktop config
└── src/
└── sapient_mcp/
├── __init__.py
├── __main__.py # Entry point + CLI arg parsing
├── config.py # Pydantic settings (env/file/CLI)
├── session.py # SAPSessionManager singleton
└── server.py # FastMCP server + all 27 tool definitions
ログ
ログは {output_dir}/sapient_mcp.log に書き込まれます。
stdio モードでは、ログは stdout/stderr に出力されません(JSON-RPC が動作しなくなるためです)。 SSE モードでは、ログは stderr にも出力されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。