IBM AS400 ISeries MCP Server について
IBM AS/400 ISeries MCP Server は、AS/400 および iSeries システムに対して RTE 端末フローを実行する Java ベースの MCP サーバーです。接続設定と手順は YAML で定義され、RteUtils クラスを使って独自のツールを追加できます。
主な機能
- 01TN5250、TN3270、VT420 プロトコルへの対応
- 02YAML による接続設定と操作手順の定義
- 03接続と手順実行のための RteUtils クラス
- 04SSE と STDIO の両方の実行モード
- 05端末タイプと SSL/TLS 設定の構成
活用シーン
- 01AS/400 端末フローを MCP ツールとして公開
- 02iSeries 画面のログインとトランザクションの自動化
- 03モックを用いた RTE フローの結合テスト
MCP 対応
本プロジェクトは MCP サーバーであり、RTE 端末トランザクションを MCP ツールとして MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
IBM AS/400 ISeries MCP サーバー
このプロジェクトは、RTE プロトコルを実行するためのカスタマイズ可能な MCP サーバーを実装します。
例



開発
要件
- Java 21+*
実行
-
プロジェクトをコンパイルします:
./mvnw clean package -
サーバーを SSE モードで実行します
java -jar target/rte-mcp-server-0.0.1-SNAPSHOT.jar -
サーバーを STDIO モードで実行します
java -jar -Dspring.ai.mcp.server.stdio=true rte-mcp-server-0.0.1-SNAPSHOT.jar
RteUtils
このプロジェクトは、簡単に拡張できるように設計されています。RteUtils クラスを使用して、独自の MCP ツールを追加できます。
また、RTE 接続パラメーターと RTE フローを yaml 形式で定義する必要があります。
RteUtils には、次のメソッドが実装されています。
static RteProtocolClient connect(RteConfig config): 指定された yaml を使用して、RTE サーバーに接続します。static String executeSteps(RteProtocolClient client, List<RteStep> steps): 指定された yaml を使用して、RTE サーバー上で指定されたステップを実行し、画面の結果を文字列として返します。
MCP ツールとして公開するメソッドには @Tool アノテーションを付け、クラスには @Services アノテーションを付ける必要があります。次の例のように記述します。
@Service
public class RteServiceLoginTool implements RteTool {
private static final Logger logger = LoggerFactory.getLogger(RteServiceLoginTool.class);
@Tool(description = "Execute an RTE transaction in a given server", name = "TN5250 Login")
public String executeRteTransaction(String server, int port) {
try {
RteFlow flow = RteYamlLoader.load("/flow.yaml");
RteProtocolClient client = RteTool.connect(flow.getConfig(), server, port);
return RteTool.executeSteps(client, flow.getSteps());
} catch (IOException | RteIOException | InterruptedException | TimeoutException e) {
logger.error("Error executing RTE flow", e);
return "Error executing RTE flow: " + e.getMessage();
}
}
}
yaml では、接続パラメーターと、RTE サーバーで実行するステップを定義します。この yaml ファイルは、次の構造にする必要があります。
config:
server: localhost
port: 2324
protocol: TN5250
terminalType: 'IBM-3477-FC: 27x132'
sslType: None
steps:
- actions:
- label: User
input: TESTUSR
- label: Password
input: TESTPSW
attentionKey: ENTER
yaml ファイルでは、任意の数のステップを定義できます。
-
server: RTE サーバーに接続するためのサーバーアドレスです。
-
port: RTE サーバーに接続するためのポートです。
-
protocol: サポートされているプロトコルは TN5250、TN3270、VT420 です。
-
terminalType: 次の表に、各プロトコルでサポートされている端末タイプを示します。
プロトコル 端末タイプ TN5250 IBM-3477-FC: 27x132 IBM-3179-2: 24x80 TN3270 IBM-3278-M2: 24x80 IBM-3278-M2-E: 24x80 IBM-3278-M3: 32x80 IBM-3278-M3-E: 32x80 IBM-3278-M4: 43x80 IBM-3278-M4-E: 43x80 IBM-3278-M5: 27x132 IBM-3278-M5-E: 27x132 VT420 VT420-7: 24x80 -
sslType: サポートされている SSL タイプは None、TLS、SSLv3 です。
-
steps: RTE サーバーで実行するステップを表すアクションのリストです。
-
actions: 現在の画面で実行するすべてのアクションです。label/input のペアを任意の数だけ追加できます。
- label: RTE 画面で入力するフィールドのラベルです。
- input: フィールドに入力する値です。
- attentionKey: フィールドの入力後に押すキーです。ENTER、F1、F2、F3、F4、F5、F6、F7、F8、F9、F10、F11、F12、F13、F14、F15、F16、F17、F18、F19、F20、F21、F22、F23、F24、ATTN、CLEAR、SYSRQ、RESET、ROLL_UP、ROLL_DN、PA1、PA2、PA3 のいずれかを指定できます。
テスト
RteServiceLoginToolTest クラスには統合テストの例が用意されています。このテストでは MCPClient を使用してツールの一覧を検証し、実行します。
注:ツールの動作をテストするには、実行する RTE フローのダンプを生成し、wiresham を使ってモックすることをお勧めします。
サーバーのテストおよびデバッグ方法の詳細については、こちらをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。