mcpField
I
IBM AS400 ISeries MCP Server

IBM AS400 ISeries MCP Server

ローカル
github.com/abstracta開発ツール2266 週間前に更新

IBM AS400 ISeries MCP Server について

IBM AS/400 ISeries MCP Server は、AS/400 および iSeries システムに対して RTE 端末フローを実行する Java ベースの MCP サーバーです。接続設定と手順は YAML で定義され、RteUtils クラスを使って独自のツールを追加できます。

主な機能

  1. 01TN5250、TN3270、VT420 プロトコルへの対応
  2. 02YAML による接続設定と操作手順の定義
  3. 03接続と手順実行のための RteUtils クラス
  4. 04SSE と STDIO の両方の実行モード
  5. 05端末タイプと SSL/TLS 設定の構成

活用シーン

  1. 01AS/400 端末フローを MCP ツールとして公開
  2. 02iSeries 画面のログインとトランザクションの自動化
  3. 03モックを用いた RTE フローの結合テスト

MCP 対応

本プロジェクトは MCP サーバーであり、RTE 端末トランザクションを MCP ツールとして MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

IBM AS/400 ISeries MCP サーバー

このプロジェクトは、RTE プロトコルを実行するためのカスタマイズ可能な MCP サーバーを実装します。

例

デモ

画面1

画面2

開発

要件
  • 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: 次の表に、各プロトコルでサポートされている端末タイプを示します。

    プロトコル端末タイプ
    TN5250IBM-3477-FC: 27x132
    IBM-3179-2: 24x80
    TN3270IBM-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
    VT420VT420-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 を使ってモックすることをお勧めします。

サーバーのテストおよびデバッグ方法の詳細については、こちらをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。