Local AI MCP
Unified MCP server for managing local model runtimes (Ollama, LM Studio, etc.), enabling provider-agnostic discovery, lifecycle management, hardware-fit checks, and delegated inference.
README
Local AI MCP
Unified MCP server for managing local model runtimes (Ollama, LM Studio, and more): provider-agnostic discovery, lifecycle, hardware-fit, and delegated inference.
Local AI MCP is an MCP server that turns your local model runtimes into an agent-callable control plane. It is operations-first: its primary job is to discover, inspect, fit, and manage the models running on your own machine. It speaks to runtimes over their local HTTP APIs and exposes one consistent tool surface across them, so an agent does not need to know whether a model lives in Ollama or LM Studio.
The server communicates over stdio only. It is a client to your local runtimes and never opens a network listener of its own.
Why an ops-first local-model server
- Discovery and lifecycle, not just chat. List what is installed, what is loaded, pull and remove models, load and unload them, and check their fit against your hardware before you commit VRAM to them.
- Hardware-aware.
system_resourcesandfit_checkread your real RAM and GPU/VRAM so an agent can pick a model that will actually run, andsuggest_modelranks candidates by task and by what fits. - Provider-agnostic. Every tool takes an optional
providerargument. Omit it and the tool operates across all detected runtimes, aggregating results per provider.
Inference is delegation, not chat
The complete and embed tools exist to delegate (offload) inference to a local model for cost control and privacy: keep tokens and data on your own hardware instead of sending them to a hosted API. They are deliberately framed as delegated/offloaded inference primitives, not as a conversational chat surface.
The provider-adapter model
Each runtime is implemented as an adapter behind a single Provider interface (src/providers/types.ts) with a uniform method set: detect, health, listModels, listLoaded, modelInfo, pull, remove, load, unload, complete, embed, and capabilities. Adding a runtime means adding one adapter; the tool layer is unchanged.
| Adapter | Default host | Transport | Notes |
|---|---|---|---|
Ollama (src/providers/ollama.ts) |
http://localhost:11434 |
Native REST + OpenAI-compatible | load/unload map to Ollama keep_alive semantics (keep_alive to load, keep_alive: 0 to unload). complete/embed use the OpenAI-compatible /v1 routes. |
LM Studio (src/providers/lmstudio.ts) |
http://localhost:1234 |
REST (/api/v0) + OpenAI-compatible |
Uses the lms CLI for load/unload/pull/remove when present; falls back to REST for listModels/listLoaded/complete/embed. |
Auto-detection: on each call the server probes the configured local endpoints to determine which runtimes are live. Hardware probing is isolated in src/hardware/ and branches by platform (Windows / Linux); it exposes total/free RAM and, where detectable, GPU name and VRAM.
Tool surface (16 tools)
Discovery
| Tool | Description |
|---|---|
list_providers |
Configured runtimes, their host, live/detected status, and capabilities. |
list_models |
Installed models across detected providers (or one provider). |
list_loaded |
Models currently resident in memory. |
model_info |
Detailed metadata for a model. |
Lifecycle
| Tool | Description |
|---|---|
pull_model |
Download a model. Heavy: may transfer multiple GB. |
remove_model |
Delete a model from disk. Destructive: requires confirm: true and a provider (no fan-out); refuses without confirm: true. |
load_model |
Load a model into memory (Ollama keep_alive; LM Studio lms load). |
unload_model |
Evict a model from memory. |
Ops
| Tool | Description |
|---|---|
health_check |
Liveness and version per provider. |
system_resources |
Total/free RAM, CPU count, and GPU/VRAM. |
fit_check |
Whether a model fits in free VRAM (GPU) or RAM (CPU), with the numbers. |
benchmark |
Measure latency and tokens/sec with one small completion. Heavy: runs real inference. |
Registry
| Tool | Description |
|---|---|
search_available |
Search a curated catalog of well-known models (Ollama library oriented). |
suggest_model |
Recommend a model for a task, ranked by what fits your detected hardware. |
Delegation (offloaded inference)
| Tool | Description |
|---|---|
complete |
Delegate a completion to a local model (cost/privacy offload, not chat). |
embed |
Delegate embedding generation to a local model. |
Every tool except system_resources accepts an optional provider (ollama | lmstudio). Omit it to operate across all detected runtimes.
Install and run
npx @tmhs/local-ai-mcp
Claude Desktop / Cursor config
{
"mcpServers": {
"local-ai": {
"command": "npx",
"args": ["-y", "@tmhs/local-ai-mcp"],
"env": {
"OLLAMA_HOST": "http://localhost:11434",
"LMSTUDIO_HOST": "http://localhost:1234"
}
}
}
}
Configuration
All configuration is via environment variables with sane defaults:
| Variable | Default | Description |
|---|---|---|
OLLAMA_HOST |
http://localhost:11434 |
Ollama base URL (scheme optional; added if missing). |
LMSTUDIO_HOST |
http://localhost:1234 |
LM Studio base URL. |
LOCAL_AI_REQUEST_TIMEOUT_MS |
120000 |
Timeout for normal requests (inference, pull progress, etc.). |
LOCAL_AI_DETECT_TIMEOUT_MS |
1500 |
Timeout for provider auto-detection probes. |
LOCAL_AI_PULL_TIMEOUT_MS |
3600000 |
Timeout for model pulls (multi-GB downloads); set 0 to disable. |
Development
npm install
npm run build # tsc -> dist/
npm test # vitest; runs fully offline (mocked HTTP, stubbed hardware)
The test suite requires no running runtime and no downloaded model: every HTTP call is mocked and hardware probing is stubbed.
License
CC-BY-NC-ND-4.0 -- see LICENSE.
Built by TMHSDigital
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.