ローカルモデルサービスプロトコル(LMSP)

LMSP が解決すること

LMSP(Local Model Service Protocol)は、ユーザー自身のデバイスやローカルネットワーク上で言語モデルを動かすソフトウェアと、それを利用するクライアントのためのオープンなプロトコルです。

常駐するローカルサービスは、既知のアドレスで自身を記述し、モデルを一覧します。生成リクエストには JSON またはサーバー送信イベントで応答し、長時間の生成は永続化されたタスクとして実行します。タスクはキャンセルでき、接続が切れた後でも再び追跡できます。同じサービスが OpenAI API も話すため、今あるクライアントはそのまま動作します。

LMSP は OpenAI API、Ollama、MCP を置き換えるものではありません。それぞれの長所を、常駐するローカルサービス向けのプロトコル層としてまとめたものです。

概要

項目 概要
既定のアドレス http://127.0.0.1:17832
サービス記述 GET /.well-known/lmsp.json
コアインターフェース /lmsp/v1。HTTP 上の JSON で、ストリーミングはサーバー送信イベント
互換インターフェース OpenAI クライアント向けの /v1、Ollama クライアント向けの任意の /api
発見 手動アドレス、ローカルアドレスのプローブ、任意の mDNS と DNS-SD(_lmsp._tcp.local.)
認証 ローカルでのペアリングで得るベアラートークン
永続化 組み込みの SQLite。タスクは再起動後も残る
契約 OpenAPI 3.2

試してみる

お使いのマシンで LMSP サービスが動いているなら、流れはこれだけです。まず 10.2 節の手順でペアリングしてトークンを取得し、LMSP_TOKEN に入れておいてください。

# 1. サービスを発見する
curl http://127.0.0.1:17832/.well-known/lmsp.json

# 2. ローカルモデルを一覧する
curl http://127.0.0.1:17832/lmsp/v1/models \
  -H "Authorization: Bearer $LMSP_TOKEN"

# 3. レスポンスを生成する
curl http://127.0.0.1:17832/lmsp/v1/responses \
  -H "Authorization: Bearer $LMSP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3:14b-q4_k_m","input":[{"type":"message","role":"user","content":[{"type":"input_text","text":"Hello"}]}]}'
プロトコル 対象範囲 LMSP との関係
OpenAI API ホスト型のモデル。Responses API が最新のインターフェース。 LMSP はコアインターフェースで Responses の構造に従い、サービスはその隣に OpenAI 互換インターフェースを提供する。
Ollama すでに OpenAI 互換エンドポイントを提供しているローカルランタイム。 LMSP サービスの背後にアダプターとして置ける。LMSP は任意の Ollama 互換エンドポイントも定義している。
MCP エージェントをツールとコンテキストに接続する。 LMSP はエージェントをモデルに接続する。どちらも、必須のセッションよりステートレスな発見を好む。
A2A エージェント間の協調。 LMSP はサービス記述とタスクに、サービスカードと明示的なタスク状態を取り入れている。

リソース

仕様 1.0

  1. 概要

    LMSP 1.0 ドラフトの概要。ローカルモデルサービスプロトコルとは何か、土台とした設計、階層型アーキテクチャ、仕様の読み方、全体で使う用語を説明します。

  2. トランスポートとデプロイ

    LMSP サービスの既定の待ち受けアドレス、トランスポート、ストリーミング形式、URL の構成と、モデルプロセスとは別の OS サービスとして常時稼働させる方法を定めます。

  3. サービス発見

    LMSP クライアントが、手動設定、ループバックのプローブ、任意の mDNS/DNS-SD によってローカルサービスを見つける方法と、well-known のサービス記述ドキュメントの読み方を説明します。

  4. エンドポイント

    LMSP 1.0 のエンドポイント一覧。メソッド、パス、要件レベル、用途に加え、パス、認証、任意エンドポイントに関する規約を示します。

  5. モデルカタログ

    LMSP サービスがローカルモデルを一覧する方法、モデルオブジェクトとその機能フラグ、モデルのライフサイクル状態、安定したモデル ID、カタログのリビジョンを説明します。

  6. レスポンスとストリーミング

    LMSP のコア会話インターフェース。Responses 形式のリクエストと出力アイテム、同期生成とストリーミング生成、サーバー送信イベントの種類、イベント ID、再接続、ツール呼び出しを定めます。

  7. 非同期タスク

    LMSP が長時間の生成を永続化されたタスクとして実行する方法。タスクの作成、状態遷移、冪等なキャンセル、イベントストリーム、未完了タスクの再起動ポリシーを定めます。

  8. OpenAI と Ollama の互換性

    LMSP サービスが、1 つの実行コアの上に置いた薄いデータ変換層によって、既存の OpenAI クライアントと Ollama クライアントとの互換性を保つ方法と、その互換性の限界を説明します。

  9. 共通ルール

    すべての LMSP エンドポイントに共通するルール。バージョンヘッダーと拡張、冪等キー、エラーコードを伴う problem+json のエラー形式、ヘルスチェックを定めます。

  10. ローカルセキュリティ

    LMSP サービスのセキュリティ要件。ループバックへのバインド、ペアリングとベアラートークン、スコープ、悪意ある Web ページに対する Origin と Host の検査、LAN モード、ログの規則を定めます。

  11. 永続化

    LMSP サービスが状態を保存する方法。組み込みの SQLite データベース、保持すべきテーブル、タスクとイベントのトランザクション規則、保持期間、起動時の復旧を定めます。

  12. 最小実用範囲

    最初の LMSP 実装に向けて推奨する範囲。実用的な閉ループを成す 10 項目と、仕様のうち後のリリースに回せる部分を示します。

よくある質問

LMSP とは何ですか?

LMSP(Local Model Service Protocol)は、ユーザー自身のデバイスやローカルネットワーク上で動作する言語モデルサービスのためのオープンなプロトコルです。クライアントがサービスを発見し、モデルを一覧し、レスポンスを要求し、出力をストリーミングし、長時間のタスクを実行する方法を定義します。

LMSP は OpenAI API、Ollama、MCP を置き換えるものですか?

いいえ。LMSP はそれらの上に成り立っています。コアインターフェースは OpenAI Responses の構造に従い、サービスは OpenAI 互換と Ollama 互換のエンドポイントを併せて提供でき、MCP のステートレスな発見と A2A のタスク状態を取り入れています。

既存の OpenAI クライアントは LMSP サービスを使えますか?

通常は使えます。ベース URL を変更し、LMSP のトークンを API キーとして設定するだけです。ただし、サービスの発見には LMSP に対応したクライアントが必要なため、自動では見つかりません。

クライアントはローカルの LMSP サービスをどうやって見つけますか?

次の 3 つを順に試します。まず手動で入力されたアドレス、次に慣例のローカルアドレスで /.well-known/lmsp.json を要求する方法、最後にローカルネットワーク上で mDNS と DNS-SD により _lmsp._tcp.local. を探す方法(任意)です。

localhost で動くモデルサービスは安全ですか?

自動的に安全になるわけではありません。Web ページがローカルのポートへの接続を試みることがあるためです。LMSP サービスは既定でループバックにバインドし、ローカルでのペアリングで得たベアラートークンを必須とし、Origin ヘッダーと Host ヘッダーを検査し、LAN モードでは認証を要求します。

仕様の現在の状態はどうなっていますか?

バージョン 1.0 は最初の公開ドラフトで、今後も互換性のない変更が入る可能性があります。英語版が規範であり、翻訳は利便性のために提供されています。