現状(手元の検証)
- LM Studio のAPIは正常稼働
GET http://localhost:1234/v1/modelsは一覧を返すPOST http://localhost:1234/completionsで応答を返す(/v1/chat/completionsは POST専用)
- Cursor からの接続は失敗
http://localhost:1234/http://127.0.0.1:1234を指定すると 403: Access to private networks is forbidden192.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サーバーを経由するのか(仕様の理由)
- 前処理/後処理(ルール適用・プロンプト整形・ルーティング等)
公式フォーラムで、**「多くの前処理がCursorサーバー側で行われ、Cursorの“知能”の源になっている」**と明示。ローカル直叩きはこの工程を迂回できない。 oai_citation:4‡Cursor - Community Forum - 安全性・ガードレール適用(Agentの行動制御)
公式ドキュメントで、Agent Security(危険操作のブロック/許可フローなど)や LLM Steering(Rules/Commands等で文脈を注入)の仕組みが説明されている。これらの統一ガードを確実に適用するため、サーバー側での介在が前提になっていると考えるのが自然。 oai_citation:5‡Cursor - ネットワーク品質・ストリーミング制御
AI機能はHTTP/2前提でのストリーム配信最適化が言及されており、サーバー側での中継・最適化を前提とした設計であることが示唆される。 oai_citation:6‡Cursor
まとめ:機能(前処理・安全制御)と配信品質を標準化するため、Cursorサーバー経由の設計。そのため公開URLで到達可能なLLM/プロキシが必要になる。
課題
- LM Studio は手元で動作しているが、Cursorはローカル宛の接続を拒否
- 公開URL・認証・許可ドメイン整備など、社内運用のガードを確保しつつ外部到達を実現する必要がある
解決策(ワークアラウンド)
A. Cursorを使い続ける(推奨ルート)
- トンネル/公開プロキシを用意(ngrok / Cloudflare Tunnel 等)
- 例:
ngrok http 1234またはcloudflared tunnel --url http://localhost:1234 - 公開URL(HTTPS)を取得
- 例:
- CursorのBase URLを公開URLに変更
https://<公開URL>/v1を指定- モデルIDは
/v1/modelsの応答に合わせる
- セキュリティ
- Basic認証やBearerトークンで保護、必要ならIP/ドメイン許可
- 公式でも「Cursorサーバーが到達できる公開プロキシ」を推奨し、必要ドメインの許可を案内している。 oai_citation:7‡Cursor - Community Forum
- (補助情報)
- ローカルLLMを使いたい場合は、ngrok等でトンネリングして使えたという実例もコミュニティで共有されている。 oai_citation:8‡Cursor - Community Forum
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!" }]
}'
