Claude Code と LM Studio をローカルモデルで使う方法
はじめに
本稿では、Claude Code のリクエストを claude2openai‑proxy で OpenAI 互換 API に変換し、ローカルで起動した gpt‑oss‑120b / gpt‑oss‑20b と LM Studio を接続する手順をまとめます。
localでホストしているgpt-oss-120bを使ってコーディングをするならcodexを使っても良いのですが、ところどころ使い勝手が異なるので使い慣れているclaude codeを動かしてみたいという背景になります
前提条件
- macOS (Linux/WSL でも同様)
- Python 3.10+ がインストール済み
- Git が利用できる環境
- LM Studio(最新版)と Claude Code の UI が手元にあること
- ローカルで動作させるモデル (
gpt‑oss‑120bまたはgpt‑oss‑20b) と、そのモデルを OpenAI 互換エンドポイントとして公開できるサーバ(例: LM Studio) - ハードウェア要件:VRAM 80 GB (Unified Memoryの場合100GBぐらい) が推奨されます
1. ローカルモデルサーバの起動
手順
-
LM Studio アプリを起動。
-
探索でgpt‑oss‑120bとgpt‑oss‑20b(GGUF 形式など)のモデルをダウンロードします -
開発者タブで、モデルを選択します。先ほどダウンロードしたモデルを二つとも起動します。Server Portは適当に1234などで設定し、CORSは無効としておきます
-
起動後、
http://127.0.0.1:1234/v1/chat/completionsにリクエストすれば LM Studio 経由でローカルモデルを利用できます。
2. claude2openai‑proxy のセットアップ
LM Studioは OpenAIのAPI互換のサーバーは建てられるのですが、Claude CodeはAnthropicの仕様のAPIリクエストを行います。そのため、Anthropicの仕様のリクエスト/レスポンスをOpenAIの仕様のリクエスト/レスポンスに変換する仕組みが必要になります。
それらを実現するライブラリはいくつか見つけたのですが、今回はclaude2openai‑proxyを使います。こちらを採用した理由は、ファイル一つで動く、機能が必要最小限のシンプルな構成だったためです。利用する際は、セキュリティチェックは忘れないようにしてください。
リポジトリをクローンし、ローカルモデルサーバへリバースプロキシするよう設定します。
# リポジトリの取得
git clone https://github.com/ziozzang/claude2openai-proxy.git
cd claude2openai-proxy
export OPENAI_BASE_URL="http://localhost:1234/v1"
export OPENAI_API_KEY="dummy"
プロキシを起動します(デフォルトは 8080 番ポート)。
uv run uvicorn server:app --host 0.0.0.0 --port 8082 --reload
起動後、http://127.0.0.1:8082/ が Claude Code 用の エンドポイント として機能します。
3. Claude Code 側の設定
Claude Code 側は LLM ゲートウェイの機能を使って以下のように設定します
export ANTHROPIC_BASE_URL="http://localhost:8082" # proxyのURL
export ANTHROPIC_AUTH_TOKEN="lm-studio" # 任意の値で問題ない
export ANTHROPIC_MODEL="openai/openai/gpt-oss-120b" # lm studioのモデル名にopenai/のprefixをつける
export ANTHROPIC_SMALL_FAST_MODEL="openai/openai/gpt-oss-20b"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
- prefixに
openaiが二つ入っているのは誤りではなく、一つ目のprefixは proxy用のもので、二つ目のprefixはLM Studioのモデル名にopenaiのprefixが入っているためです。 - claude codeは、小さくて速いモデルと賢いモデルを使い分ける仕組みがあるので、小さくて速いに20bを使い、賢いモデルに120bを使うようにしています
設定ファイル (~/.claude/setting.json) の使用
環境変数ではなく、以下のように ~/.claude/setting.json に設定を書き込むことでも同様に構成できます。ファイルが存在しない場合は作成してください。
{
"permissions": {
"allow": [
"Read(~/.zshrc)"
],
"deny": [
"Bash(curl:*)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
},
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "0",
"ANTHROPIC_BASE_URL": "http://localhost:8082",
"ANTHROPIC_AUTH_TOKEN": "lm-studio",
"ANTHROPIC_MODEL":"openai/openai/gpt-oss-120b",
"ANTHROPIC_SMALL_FAST_MODEL": "openai/openai/gpt-oss-20b",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
設定を保存したら、通常通り claude コマンドで Claude Code を起動できます。
4. Claude Code の起動
$ claude
デフォルトで openai/gpt‑oss‑120b が設定されており、上記コマンドで起動します。
で起動する。デフォルトでopenai/gpt-oss-120bが設定されている
5. コーディング
hello worldを表示するindex.htmlを作って というプロンプトを実行してみた結果
6. まとめ
今回はgpt-oss-120bを使ってLocalでclaude codeを動かす事例を紹介しました。
APIを使う時ほど速度は出ないものの Mac Studio (M3 Ultra)だと、50 ~ 80 tpsぐらいの速度で生成されるので、コーディング用のエージェントとしてはそこそこ使い物になる印象です。
参考になれば幸いです。



