mcpField
L
Local AI MCP

Local AI MCP

ローカル
tmhsdigital.github.ioAI・エージェント05 日前に更新

Local AI MCP について

Local AI MCPは、複数のローカルモデルランタイムをエージェントに接続し、ハードウェア適合確認、モデル管理、タスク振り分けを行います。

主な機能

  1. 01複数のローカルモデルランタイムに接続
  2. 02利用可能なメモリに対する適合確認
  3. 03モデルの取得、ロード、アンロード
  4. 04モデル速度の測定と比較
  5. 05適切なローカルモデルへのタスク振り分け

活用シーン

  1. 01GPUで実行可能なモデルの選定
  2. 02機密テキストタスクのローカル処理
  3. 03モデルのアンロードによるメモリ解放
  4. 04インストール済みモデルの速度比較

MCP 対応

ランタイムやモデルの検出、モデル管理、ハードウェア適合確認、推論実行のためのツール、リソース、プロンプトを提供するstdio MCP サーバーです。通常はローカルプロバイダーのみを使い、明示的な指定またはホスト利用へのフォールバック設定がない限り、ホスト型プロバイダーを使いません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"tmhsdigital-local-ai": {
"command": "npx",
"args": [
"-y",
"@tmhs/local-ai-mcp"
],
"env": {
"OLLAMA_HOST": "<OLLAMA_HOST>",
"LMSTUDIO_HOST": "<LMSTUDIO_HOST>",
"LLAMACPP_HOST": "<LLAMACPP_HOST>",
"DOCKER_MODEL_RUNNER_HOST": "<DOCKER_MODEL_RUNNER_HOST>",
"MLX_HOST": "<MLX_HOST>",
"VLLM_HOST": "<VLLM_HOST>",
"VLLM_API_KEY": "<VLLM_API_KEY>",
"FOUNDRY_LOCAL_HOST": "<FOUNDRY_LOCAL_HOST>",
"OPENAI_COMPAT_HOST": "<OPENAI_COMPAT_HOST>",
"OPENAI_COMPAT_API_KEY": "<OPENAI_COMPAT_API_KEY>",
"MOONSHOT_API_KEY": "<MOONSHOT_API_KEY>",
"LOCAL_AI_ALLOW_HOSTED_FALLBACK": "<LOCAL_AI_ALLOW_HOSTED_FALLBACK>",
"MOONSHOT_HOST": "<MOONSHOT_HOST>",
"LOCAL_AI_DISABLE": "<LOCAL_AI_DISABLE>",
"LOCAL_AI_PROVIDERS": "<LOCAL_AI_PROVIDERS>",
"LOCAL_AI_DISABLE_NETWORK_SEARCH": "<LOCAL_AI_DISABLE_NETWORK_SEARCH>",
"LOCAL_AI_BENCHMARK_CACHE": "<LOCAL_AI_BENCHMARK_CACHE>"
}
}
}
}
起動コマンドnpx -y @tmhs/local-ai-mcp
設定が必要な環境変数
OLLAMA_HOSTOllama base URL
LMSTUDIO_HOSTLM Studio server base URL
LLAMACPP_HOSTllama.cpp server (llama-server) base URL
DOCKER_MODEL_RUNNER_HOSTDocker Model Runner host TCP endpoint
MLX_HOSTmlx_lm.server base URL (opt-in; Apple Silicon)
VLLM_HOSTvLLM OpenAI server base URL (opt-in)
VLLM_API_KEYシークレットBearer token for VLLM_HOST (when vLLM runs with --api-key)
FOUNDRY_LOCAL_HOSTFoundry Local service URL (opt-in; port from `foundry service status`)
OPENAI_COMPAT_HOSTAny OpenAI-compatible /v1 server (opt-in)
OPENAI_COMPAT_API_KEYシークレットBearer token for OPENAI_COMPAT_HOST
MOONSHOT_API_KEYシークレットMoonshot AI (Kimi) key. Hosted: only used when named explicitly.
LOCAL_AI_ALLOW_HOSTED_FALLBACKAllow implicit routing to hosted providers (default: off)
MOONSHOT_HOSTMoonshot API base URL
LOCAL_AI_DISABLEComma-separated provider names to skip probing
LOCAL_AI_PROVIDERSJSON array of extra provider instances: {type, host, name?, apiKey?, kind?}
LOCAL_AI_DISABLE_NETWORK_SEARCHKeep search_models offline (catalog only)
LOCAL_AI_BENCHMARK_CACHEBenchmark results file used to rank delegate by measured speed (default: per-user cache dir; off disables)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@tmhs/local-ai-mcp0.6.1

ツール

19

掲載時のツール一覧 · 5 日前に更新

パラメーター型必須説明
providerenumいいえプロバイダーインスタンス名。省略するとサーバーが選択します(LOCAL_AI_ALLOW_HOSTED_FALLBACK が設定されていない限り、ローカルプロバイダーのみ)。ollama | lmstudio | llamacpp | dockermodelrunner

詳細

Local AI MCP

お使いのマシン上にあるあらゆるローカルモデルランタイムを扱う、1つの MCP サーバーです。GPU に適したモデルを判断し、指示がない限りプロンプトをクラウドに送信しません。

npm CI License: CC-BY-NC-ND-4.0 Type

Install in Cursor Install in VS Code Claude Desktop extension

Local AI MCP は、エージェント(Claude、Cursor、VS Code など)に Ollama、LM Studio、llama.cpp、Docker Model Runner、MLX、vLLM、Foundry Local を一元管理するコントロールプレーンを提供します。エージェントは、インストール済みおよびロード済みのモデルを確認し、VRAM に実際に収まるかを調べ、モデルを使える状態にし、単一の delegate 呼び出しで最適なローカルモデルに処理を委任できます。

# illustrative session
You:    Summarise these 40 pages of meeting notes locally, I don't want them in the cloud.
Agent:  → delegate { task: "summarize", prompt: "...", contextLength: 32768 }
        ← routing: ollama / qwen3:14b — already loaded (no load cost); general model; fits: gpu
          local: true · 412 tokens · 38 tok/s

選ぶ理由

  • ハードウェアを把握します。 fit_check はモデルの実際のレイヤー構造を基に KV キャッシュのサイズを算出し、GPU ごとの VRAM を合算して、GPU と CPU への部分オフロードをモデル化し、Apple Silicon のユニファイドメモリにも対応します。「このモデルは実行できるか、どこで実行するか?」に、推測ではなく数値で答えます。
  • 複数のランタイムに対応します。 Ollama と LM Studio の両方を使用している場合、各呼び出しはモデルが実際にあるランタイムに送られます。pull、load、unload などのライフサイクル操作は、対象のランタイム1つだけに作用します。
  • デフォルトでデータをローカルに保ちます。 Moonshot などのホステッドプロバイダーはオプトイン方式です。provider 引数を指定しない呼び出しでは、プロバイダーは使用されません。すべての結果に provider、host、local が含まれるため、推論がどこで実行されたかを確認できます。
  • チャットだけでなく運用にも対応します。 進捗を表示しながらの pull、コンテキストサイズを指定した load、空き容量を確保するための最終使用時刻が最も古いモデルの退避、Time to First Token とトークン毎秒のベンチマーク、マシンに適した GGUF 量子化モデルの Hugging Face 検索ができます。

エージェントへの質問例

  • 「このノート PC でコーディングに使えるモデルは?」→ suggest_model、続けて ensure_model
  • 「GPU の空き容量を増やして。」→ list_loaded、続けて unload_model(または free-vram プロンプトを使用)
  • 「インストール済みのコーダーモデルをベンチマークして、最速のものを教えて。」→ benchmark { models: [...] }
  • 「12 GB のカードに収まる、新しい Gemma ビルドを探して。」→ search_models { source: "huggingface" }
  • 「このテキストから請求書の項目をローカルで JSON として抽出して。」→ delegate { task: "extract", responseFormat: { type: "json_schema", ... } }
  • 「Llama 3.1 70B は、ここで 32K のコンテキストサイズで動く?」→ fit_check { model, contextLength: 32768 }

クイックスタート

ランタイム(Ollama、LM Studio、llama.cpp、Docker Model Runner、MLX、vLLM または Foundry Local)を少なくとも 1 つインストールし、サーバーをクライアントに追加します。デフォルトのポートを使用するランタイムでは、設定は不要です。

Claude Code

claude mcp add local-ai -- npx -y @tmhs/local-ai-mcp

Claude Desktop。 最新リリースから.mcpbファイルをダウンロードして開きます。ホストの設定画面が表示され、JSON を編集する必要はありません。または、claude_desktop_config.jsonに次の内容を追加します。

{
  "mcpServers": {
    "local-ai": { "command": "npx", "args": ["-y", "@tmhs/local-ai-mcp"] }
  }
}

Cursor / VS Code。 上記のインストールボタンを使用するか、同じcommand/argsを.cursor/mcp.jsonまたは.vscode/mcp.jsonに追加します(VS Code では"mcpServers"ではなく、トップレベルの"servers"キーを使用します)。

Windsurf、Cline、Zed、その他のクライアント。 stdio MCP クライアントであれば使用できます。コマンドはnpx、引数は["-y", "@tmhs/local-ai-mcp"]です。

Windows: 一部のクライアントではnpxを直接起動できません。サーバーが起動しない場合は、"command": "cmd", "args": ["/c", "npx", "-y", "@tmhs/local-ai-mcp"]を使用してください。

ホステッドプロバイダーの追加(任意)。 サーバーのenvにMOONSHOT_API_KEYを設定します。これは、ツール呼び出しでprovider: "moonshot"が指定された場合にのみ使用されます。ただし、LOCAL_AI_ALLOW_HOSTED_FALLBACK=1も設定している場合は除きます。

対応ランタイム

ランタイム有効化条件デフォルトのホスト一覧表示 / 読み込み済みダウンロード読み込み / 解除削除埋め込み備考
Ollama常時localhost:11434✓ / ✓✓ 進捗表示✓ (keep_alive, num_ctx)✓✓ネイティブの/api/chat:contextLengthはnum_ctxを設定し、正確なタイミングと JSON スキーマのformatに対応
LM Studio常時localhost:1234✓ / ✓✓ lms経由✓ lms経由(TTL、コンテキスト)✓ lms経由✓ライフサイクル管理にはlms CLIが必要です。これがない場合、モデルは最初のリクエスト時に読み込まれます
llama.cpp(llama-server)常時localhost:8080✓ / ✓ (/slots)–––✓サーバーごとにモデルは 1 つです。embedを使うには--embeddingsを指定して起動します
Docker Model Runner常時localhost:12434✓ / –✓ 進捗表示最初のリクエスト時✓✓Docker Desktop でホスト側の TCP サポートを有効にしてください
MLX(mlx_lm.server)MLX_HOST–✓ / ––最初のリクエスト時––Apple Silicon 対応。リクエストごとにモデルを切り替えます
vLLMVLLM_HOST–✓ / ✓–––✓health_checkは/metricsから KV キャッシュの使用状況とキューの深さを報告します
Foundry LocalFOUNDRY_LOCAL_HOST動的ポート✓ / ✓✓ 進捗表示✓(TTL)––foundry service statusでポートを確認します
OpenAI 互換(Jan、LocalAI、…)OPENAI_COMPAT_HOST–✓ / ✓–––✓ホストからローカルかホステッドかを判別します
Moonshot AI(Kimi)MOONSHOT_API_KEYapi.moonshot.ai/v1✓ / –––––ホステッド: 暗黙的に選択されることはありません

LOCAL_AI_PROVIDERS='[{"type":"ollama","name":"ollama-gpu2","host":"http://192.168.1.20:11434"}]'を使うと、LAN 上の 2 台目の Ollama マシンなど、同じランタイムを複数起動できます。使用しないランタイムの検出をスキップするには、LOCAL_AI_DISABLE=lmstudio,dockermodelrunnerを使用します。

プライバシーモデル

  • 各プロバイダーは ローカル または ホステッド のいずれかです。種別はホストから推定されます。ループバック、プライベート LAN の範囲、*.local、Tailscale CGNAT、host.docker.internal はローカルとして扱われます。LOCAL_AI_PROVIDERS でインスタンスごとに上書きできます。
  • provider 引数を指定しない場合、complete、embed、delegate、benchmark、load_model およびその他のモデル単位のツールは、そのモデルを持つ 稼働中のローカル プロバイダーのみを対象とします。モデルがホステッドプロバイダーにしか存在しない場合、呼び出しは失敗し、オプトインの方法が通知されます。
  • ホステッドプロバイダーは、通常の呼び出しではプローブされません。接続するのは health_check と diagnostics のみです。
  • source: "huggingface" を指定した search_models は Hugging Face Hub に問い合わせます。問い合わせは明示的に要求した場合に限られます。禁止するには LOCAL_AI_DISABLE_NETWORK_SEARCH=1 を設定します。
  • サーバーは stdio のみ を使用します。ネットワークリスナーを開くことはありません。

ツール(19)

すべてのツールは MCP アノテーション(読み取り専用、破壊的、オープンワールド)と出力スキーマを宣言し、構造化コンテンツを返します。

グループツール機能
検出list_providers設定済みランタイム:種別(ローカル/ホステッド)、稼働状況、機能
list_models稼働中の各プロバイダーにインストールされているモデル
list_loadedメモリ上に常駐するモデル。VRAM 使用量とコンテキスト長も表示
model_infoファミリー、サイズ、量子化、コンテキスト長、レイヤーアーキテクチャ
ライフサイクルpull_model負荷大。 1 つのプロバイダーにダウンロードし、進行状況の通知をストリーミングします。background: true を指定すると、代わりにジョブ ID を返します
pull_status / pull_cancelバックグラウンドでのダウンロード状況の確認/停止
remove_model破壊的。 provider は必須です。クライアントが対応している場合は MCP のエリシテーションを通じて直接確認を求め、それ以外の場合は confirm: true が必要です
load_model / unload_model1 つのプロバイダーに対して実行します。keepAlive と contextLength は任意です
ensure_modelダウンロード(許可されている場合)、適合性チェック、他のモデルの退避(lru/all)、読み込み、検証を行います。dryRun は計画のみを返します
運用health_check到達可能性、バージョン、ランタイムメトリクス
diagnostics有効な設定(キーは伏字)、レイテンシとエラーを含むプロバイダーごとの検出結果、速度キャッシュ、ハードウェアの検出元。バグ報告に貼り付けてください
system_resourcesRAM と GPU(NVIDIA、AMD、Intel、Apple Silicon)。それぞれのデータソースも表示
fit_check指定したコンテキスト長と KV キャッシュ精度におけるモデルの状態として、gpu/partial/cpu/none を返します
benchmark負荷大。 ウォームアップ後に N 回実行し、最初のトークンまでの時間、生成速度、プロンプトのトークン数/秒を測定します。比較するには models: [...] を指定します
レジストリsearch_available組み込みのオフラインカタログ
suggest_modelこのマシンでタスクに最適なモデルを提案します。まず GPU に収まる最大のモデルを選び、インストール済みのモデルにはフラグを付けます
search_modelsHugging Face の GGUF をライブ検索し、量子化ごとの適合性とダウンロード参照(hf.co/<repo>:<quant>)を表示します
委任complete選択したモデルで補完を実行します。システムプロンプト、JSON/JSON スキーマ出力(検証済み)、シード、サンプリング、画像、contextLength に対応
embed埋め込みを生成します。入力ごとに常に 1 つのベクトルを返します
delegate1 回の呼び出し: タスクに最適なローカルモデルを選び(読み込み済み、次にインストール済みかつ適合するもの、必要に応じてダウンロード。大きいサイズのティアを優先し、同じティア内ではこのマシン上の benchmark で測定した速度で順位を決めます)、実行して選択理由を説明します

リソース: local-ai://system、local-ai://loaded(サブスクライブ可能。モデルの読み込みまたはアンロード時に更新)、local-ai://models/{provider}。 プロンプト: setup、free-vram、benchmark-my-models、pick-model。

設定

すべての設定は環境変数で指定し、空欄の場合はデフォルト値が使われます。注釈付きの全項目については、.env.example を参照してください。

変数デフォルト用途
OLLAMA_HOST、LMSTUDIO_HOST、LLAMACPP_HOST、DOCKER_MODEL_RUNNER_HOST標準のローカルポート常時稼働するランタイム
MLX_HOST、VLLM_HOST(VLLM_API_KEY と併用)、FOUNDRY_LOCAL_HOST、OPENAI_COMPAT_HOST(OPENAI_COMPAT_API_KEY と併用)未設定オプトイン方式のランタイム
LOCAL_AI_PROVIDERS未設定追加インスタンスの JSON 配列 {type, host, name?, apiKey?, kind?}
LOCAL_AI_DISABLE未設定スキップするタイプまたは名前をカンマ区切りで指定
MOONSHOT_API_KEY、MOONSHOT_HOST未設定、https://api.moonshot.ai/v1ホスト型 Moonshot プロバイダー
LOCAL_AI_ALLOW_HOSTED_FALLBACKオフprovider を指定しない呼び出しで、ホスト型プロバイダーの使用を許可
LOCAL_AI_DISABLE_NETWORK_SEARCHオフHugging Face の検索を禁止
LOCAL_AI_BENCHMARK_CACHEユーザーごとのキャッシュディレクトリdelegate のランキングに使う benchmark の結果の保存先(14 日後に期限切れ)。off で無効化
LOCAL_AI_REQUEST_TIMEOUT_MS120000ストリーミング以外のリクエスト
LOCAL_AI_DETECT_TIMEOUT_MS1500検出プローブ
LOCAL_AI_PULL_TIMEOUT_MS3600000ダウンロード(0 = 制限なし)
LOCAL_AI_STREAM_IDLE_TIMEOUT_MS60000指定時間トークンが届かない場合にのみストリームを中止
LOCAL_AI_STREAM_MAX_MS1800000ストリーミング生成の最大時間(0 = なし)
LOCAL_AI_CACHE_TTL_MS10000検出とモデル一覧のキャッシュ

トラブルシューティング

  • プロバイダーが検出されません。 diagnostics(または health_check)を実行してください。ホストとポートを確認してください。WSL からは Windows ホストの IP アドレスを使います。コンテナーからは host.docker.internal を使います。Docker Model Runner の場合は、ホスト側の TCP サポートを有効にしてください。
  • LM Studio のプル/読み込みが「requires the lms CLI」で失敗します。 LM Studio CLI docs の説明に従って lms CLI をインストールし、PATH に通してから、MCP クライアントを再起動してください。
  • llama.cpp の embed が失敗します。 --embeddings と埋め込みに対応したモデルを指定して llama-server を起動してください。
  • 長い入力に対する回答が途中で切れているように見えます(Ollama)。 contextLength を渡してください(num_ctx が設定されます)。切り詰められている可能性が高い場合、結果に警告が含まれます。
  • 「was not found on any live local provider」と表示されます。 モデルがインストールされていないか(list_models で確認してください)、ホスト型プロバイダーでのみ利用できます。使用するには、そのプロバイダーを明示的に指定してください。
  • macOS のメモリ値が低く見えます。 system_resources が報告するのは、使用可能なメモリ(空き、非アクティブ、および消去可能なページ)と Metal のワーキングセット上限であり、RAM の合計ではありません。

開発

npm install
npm run build       # tsc -> dist/
npm test            # vitest, fully offline (mocked HTTP, stubbed hardware)
npm run lint        # Biome
npm run typecheck   # src and tests
npm run gen:tools   # regenerate mcp-tools.json after changing tools
npm run smoke       # boot the built server over stdio

CI は、サポートされる最小バージョンの Node 22 と Node 24 を使い、Linux、Windows、macOS で実行されます。毎晩実行されるワークフローでは、実際の Ollama および llama.cpp に対してアダプターをテストします。ランタイムアダプターの追加を含む CONTRIBUTING.md を参照してください。

サポート

質問やアイデアは Discussions に投稿してください。バグは issue テンプレートを使って報告し、セキュリティ上の問題は非公開の報告手段から報告してください。このツールが時間の節約に役立った場合は、スポンサーになることをご検討ください。

ライセンス

CC-BY-NC-ND-4.0。LICENSE を参照してください。コントリビューションは、DCO および CONTRIBUTING.md に記載された受領者への許諾条件に基づいて受け付けています。


TMHSDigital が開発

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。