用語集 最終更新 2026.09.05

stdio

stdio は standard input / standard output の略で、標準入力と標準出力を使ってプロセス間でやり取りする方法です。
ローカルで起動したプログラム同士をつなぐときによく使われます。

まず押さえたいポイント

  • 同じマシン上のプロセス間通信でよく使う
  • ネットワーク越しではなく、直接起動したプログラム同士のやり取りに向く
  • MCP ではローカルサーバー接続の代表例

どんな場面で使うか

  • エディタやデスクトップアプリがローカルの MCP サーバーを起動するとき
  • CLI ツール同士を連携するとき
  • HTTP を使うほどではない近い通信をしたいとき

どんなふうに理解するとよいか

手元のアプリが、手元の別プログラムを起動して直接話す方式 と考えると分かりやすいです。
MCP では、クライアントがサーバープロセスを起動し、その標準入出力へ JSON-RPC メッセージを書いてやり取りします。

なぜ MCP のようなツール連携で選ばれるのか

外部プロセスと通信する方法は他にもあります(HTTPを立てる、ソケットを開く、ファイルを介す)。それでも標準入出力が選ばれるのは、接続の準備が要らないからです。

方式 事前に必要なもの 権限・到達範囲
標準入出力 相手を起動するだけ 起動した親子の間だけ
HTTP ポートを開く・URLを決める ネットワークから届きうる
Unixソケット パスを決める・後片付け 同じマシンのファイル権限に依存

ポートを開かないということは、そのプロセスが外から叩かれる心配が無いということです。ローカルで動かすツール連携では、この性質がそのまま安全側に働きます。逆に、別マシンから使いたい・複数から同時に使いたい場合は標準入出力では足りず、HTTP 側の仕組みが必要になります。

つまずきやすいのは「出力の混線」

標準入出力を通信路として使うとき、いちばん多い事故がログを標準出力に書いてしまうことです。相手はそこを構造化データの通り道として読んでいるので、デバッグ用の1行を混ぜただけで解析が壊れます。

  • ログや進捗は標準エラー出力(stderr)へ出す
  • ライブラリが勝手に標準出力へ出していないか確認する
  • バッファリングで送信が遅れることがある。行単位で流す設定にするか、明示的に流し切る

押さえておきたい注意点

stdout に余計な文字列を出すとプロトコルが壊れやすいです。
ログは stderr 側へ出す、標準出力には正しいメッセージだけを流す、という考え方が大事です。

実務で見るポイント

  • ローカル利用ではかなり扱いやすい
  • 余計なログ出力で通信を壊さないようにする
  • リモート公開や多人数利用には別方式の方が向くことが多い