2001Yのプロフォール画像

2001Y@Y20010920T

現状(手元の検証)

  • LM Studio のAPIは正常稼働
    • GET http://localhost:1234/v1/models は一覧を返す
    • POST http://localhost:1234/completions で応答を返す(/v1/chat/completionsPOST専用
  • Cursor からの接続は失敗
    • http://localhost:1234 / http://127.0.0.1:1234 を指定すると 403: Access to private networks is forbidden
    • 192.0.0.2:1234 など到達不能アドレスでは i/o timeout

公式情報で分かったこと(要約)

  • Cursorは完全オフライン不可リクエストはローカル → Cursorのサーバー → LLM の順に処理され、最終的なプロンプト送信もCursorサーバー側で行われる。回避不可の設計。 oai_citation:0‡Cursor - Community Forum
  • ローカルホストLLMはそのままでは使えないCursorのサーバーが到達できる公開URLでLLM(やプロキシ)を提供する必要がある。 oai_citation:1‡Cursor - Community Forum
  • その結果、プライベートネットワーク宛(localhost/RFC1918)403で拒否され、公開到達かつ必要ドメインの許可が求められる。 oai_citation:2‡Cursor - Community Forum
  • CursorのAI機能はHTTP/2に依存し、Cursorサーバーとの接続診断(Settings → Network → Run Diagnostics)が案内されている。 oai_citation:3‡Cursor

なぜCursorサーバーを経由するのか(仕様の理由)

  1. 前処理/後処理(ルール適用・プロンプト整形・ルーティング等)
    公式フォーラムで、**「多くの前処理がCursorサーバー側で行われ、Cursorの“知能”の源になっている」**と明示。ローカル直叩きはこの工程を迂回できない。 oai_citation:4‡Cursor - Community Forum
  2. 安全性・ガードレール適用(Agentの行動制御)
    公式ドキュメントで、Agent Security(危険操作のブロック/許可フローなど)や LLM Steering(Rules/Commands等で文脈を注入)の仕組みが説明されている。これらの統一ガードを確実に適用するため、サーバー側での介在が前提になっていると考えるのが自然。 oai_citation:5‡Cursor
  3. ネットワーク品質・ストリーミング制御
    AI機能はHTTP/2前提でのストリーム配信最適化が言及されており、サーバー側での中継・最適化を前提とした設計であることが示唆される。 oai_citation:6‡Cursor

まとめ:機能(前処理・安全制御)と配信品質を標準化するため、Cursorサーバー経由の設計。そのため公開URLで到達可能なLLM/プロキシが必要になる。


課題

  • LM Studio は手元で動作しているが、Cursorはローカル宛の接続を拒否
  • 公開URL・認証・許可ドメイン整備など、社内運用のガードを確保しつつ外部到達を実現する必要がある

解決策(ワークアラウンド)

A. Cursorを使い続ける(推奨ルート)

  1. トンネル/公開プロキシを用意(ngrok / Cloudflare Tunnel 等)
    • 例:ngrok http 1234 または cloudflared tunnel --url http://localhost:1234
    • 公開URL(HTTPS)を取得
  2. CursorのBase URLを公開URLに変更
    • https://<公開URL>/v1 を指定
    • モデルIDは /v1/models の応答に合わせる
  3. セキュリティ
    • Basic認証やBearerトークンで保護、必要ならIP/ドメイン許可
    • 公式でも「Cursorサーバーが到達できる公開プロキシ」を推奨し、必要ドメインの許可を案内している。 oai_citation:7‡Cursor - Community Forum
  4. (補助情報)

B. 完全ローカル志向(インターネットに出したくない)

  • エディタを VS Code + Continue など、ローカル直結型のクライアントに切替える(Cursorはサーバー経由が前提のため完全ローカルは非対応)。

動作確認コマンド(LM Studio 側)

# モデル一覧
curl http://localhost:1234/v1/models

# Chat Completions(POSTのみ)
curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-oss-20b",
    "messages": [{ "role": "user", "content": "Hello!" }]
  }'