lmstudio-agent-mcp
Allows web search via DuckDuckGo (no API key required), returning titles, URLs, and snippets.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lmstudio-agent-mcpsearch for Python web scraping tutorials"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agent MCP Server for LM Studio
Do not install 1.2.0 — it has an undeclared mcp>=1.0.0 dependency
that resolves to mcp 2.0.0, which renamed FastMCP to MCPServer
and broke every console script with
ModuleNotFoundError: No module named 'mcp.server.fastmcp'.
Use 1.2.1 or later (the mcp pin is now >=1.0.0,<2.0.0).
1.2.1 has been verified end-to-end in a fresh venv: install works,
all three console scripts start, and every tool responds correctly
over stdio MCP.
A lightweight MCP (Model Context Protocol) server that provides local agent capabilities for LM Studio: file I/O, terminal execution, multi-engine web search, persistent key/value memory, and a pluggable skill system.
📦 PyPI 1.2.1 —
pip install lmstudio-agent-mcp🔌 Auto-registers with LM Studio — no manual config editing required
🛠 11 tools, ~14 kB wheel, no heavy dependencies
Features
Tool | Description |
| Read text files with offset/limit pagination and encoding support |
| Write or append to files, with optional parent directory creation |
| Execute shell commands with pipes, redirections, custom working directory, environment variables, and configurable timeout |
| Search the web via DuckDuckGo, Bing, Google, or Baidu (switchable), returning titles, URLs, and snippets |
| Persist a key/value memory entry with category and tags |
| Load a single memory entry by key |
| List memory entries, optionally filtered by category/tag |
| Delete a single memory entry |
| Full-text search across key, value, and tags (substring or regex) |
| Discover skills available in the configured skills directory |
| Invoke a discovered skill (Python, shell, or markdown) |
Related MCP server: MCP Server Toolkit
Requirements
Python 3.10+
Dependencies listed in
requirements.txt
Installation
pip install lmstudio-agent-mcpAfter installation, three console scripts are available:
Script | Purpose |
| Start the MCP server ( |
| Register this server with LM Studio's |
| Print or write the LM Studio MCP config snippet |
Auto-registration with LM Studio
The package registers itself with LM Studio automatically — no copy/paste required.
Editable / source install — a setuptools
cmdclasshook appends anagent_mcpentry to~/.lmstudio/mcp.jsonimmediately after install.Wheel install (e.g. from PyPI) — the first time
lmstudio-agent-mcpstarts it writes the entry silently. To trigger the registration right after install run:lmstudio-mcp-setup
The function is idempotent: re-running it is a no-op. Pass --force to
overwrite an existing entry. To opt out, set the environment variable
LMSTUDIO_AGENT_NO_AUTOREGISTER=1 before starting the server.
A marker file ~/.lmstudio/.lmstudio_agent_mcp_installed is written next to
mcp.json so the registration is not repeated unnecessarily. The generated
snippet uses the installed lmstudio-agent-mcp console script as the command
so no Python interpreter path is baked in:
{
"mcpServers": {
"agent_mcp": {
"command": "/home/<you>/.local/bin/lmstudio-agent-mcp"
}
}
}To print or write the config snippet manually:
lmstudio-mcp-config
# with overrides:
lmstudio-mcp-config --python /path/to/python --skills-dir ~/my_skills --memory-file ~/my_memory.json
# write directly (merges into existing mcp.json if present):
lmstudio-mcp-config --write ~/.lmstudio/mcp.json
# use the python module form instead of the console script:
lmstudio-mcp-config --no-console-scriptOther install methods
# editable install (development)
git clone https://github.com/oemoem12/lmstudio-agent-mcp.git
cd lmstudio-agent-mcp
pip install -e .
# npm wrapper (thin shell around the Python package)
npm install -g lmstudio-agent-mcpUsage with LM Studio
Restart LM Studio after running lmstudio-mcp-setup. The server will appear in
the MCP list as agent_mcp. The CLI also generates a JSON snippet for
mcp.json automatically; if you prefer to add it by hand:
{
"mcpServers": {
"agent_mcp": {
"command": "/usr/bin/python3",
"args": ["-m", "lmstudio_agent_mcp"]
}
}
}The CLI automatically detects the current Python interpreter. Use --python to
override it (e.g. for a virtualenv) and --skills-dir / --memory-file to
customize where the server looks for skills and where it stores memory.
Usage with Other MCP Clients
The server uses stdio transport by default. Start it directly:
python3 -m lmstudio_agent_mcpFor remote access, switch to streamable HTTP:
import lmstudio_agent_mcp
lmstudio_agent_mcp.mcp.run(transport="streamable_http", port=8000)Configuration
The server reads the following environment variables on startup:
Variable | Default | Purpose |
|
| Path to the persistent memory store |
|
| Directory scanned for user-defined skills |
|
| Set to |
The skills directory also accepts SKILL.md (with optional scripts/,
reference/, etc. siblings) in addition to main.py / run.py directories.
Tool Reference
agent_read_file
Read the contents of a text file.
Parameter | Type | Default | Description |
| string | (required) | Absolute or relative path to the file |
| int |
| Number of lines to skip from the beginning |
| int | null |
| Maximum number of lines to return ( |
| string |
| Text encoding |
agent_write_file
Write text content to a file.
Parameter | Type | Default | Description |
| string | (required) | Absolute or relative path to the file |
| string | (required) | Text content to write |
| string |
| Text encoding |
| bool |
| If |
| bool |
| If |
agent_execute_command
Execute a terminal command.
Parameter | Type | Default | Description |
| string | (required) | Shell command to execute |
| string | null |
| Working directory (defaults to server cwd) |
| float |
| Maximum execution time in seconds (1-600) |
| object | null |
| Additional environment variables to set |
| bool |
| Execute through system shell (required for pipes/redirects) |
agent_web_search
Search the web using multiple search engines.
Parameter | Type | Default | Description |
| string | (required) | Search query (1-500 chars) |
| string |
| Search engine: |
| int |
| Maximum results to return (1-20) |
| string | null |
| Region/locale code (e.g. |
agent_memory_save
Persist a key/value memory entry to disk for cross-session recall.
Parameter | Type | Default | Description |
| string | (required) | Unique identifier (1-200 chars) |
| string | (required) | Content to remember |
| string |
| Logical bucket for filtering |
| string[] |
| Tags for retrieval filtering |
| bool |
| If |
agent_memory_load
Load a single memory entry by key.
Parameter | Type | Default | Description |
| string | (required) | Key of the entry to load |
agent_memory_list
List memory entries, optionally filtered by category and/or tag.
Parameter | Type | Default | Description |
| string | null |
| Restrict to one category |
| string | null |
| Restrict to entries carrying this tag |
| int |
| Maximum entries to return (1-1000) |
agent_memory_delete
Delete a single memory entry.
Parameter | Type | Default | Description |
| string | (required) | Key of the entry to delete |
agent_memory_search
Full-text search across key, value, and tags.
Parameter | Type | Default | Description |
| string | (required) | Substring or regex to search for (1-500 chars) |
| bool |
| Treat the query as a regular expression |
| string | null |
| Restrict the search to one category |
| int |
| Maximum matches to return (1-200) |
agent_list_skills
Discover skills available in the configured skills directory.
Parameter | Type | Default | Description |
| string | null |
| Override the skills directory |
| string | null |
| Glob pattern to filter skill names (e.g. |
agent_run_skill
Invoke a discovered skill by name.
Parameter | Type | Default | Description |
| string | (required) | Skill name (subdirectory or filename without extension) |
| string |
| Primary input passed as the first argument |
| object |
| Additional keyword arguments forwarded to the skill |
| string | null |
| Override the skills directory |
| float |
| Maximum execution time in seconds (1-600) |
Writing Skills
Place skills under the directory pointed to by LMSTUDIO_AGENT_SKILLS_DIR (default ~/.agents/skills/). Three skill types are supported:
Python skill (subdirectory)
skills/
└── summarize/
├── SKILL.md # optional description (first paragraph is used)
└── main.py # must define `def run(input, **kwargs)`# skills/summarize/main.py
def run(input: str, **kwargs) -> str:
max_words = int(kwargs.get("max_words", 50))
words = input.split()
return " ".join(words[:max_words])Python skill (single file)
# skills/translate.py
def run(input: str, **kwargs) -> str:
target = kwargs.get("target", "zh")
return f"[{target}] {input}"Shell skill
# skills/count_lines.sh (must be executable)
#!/usr/bin/env bash
echo "Lines: $(wc -l < "$1")"The input parameter becomes $1; args become additional positional arguments.
Markdown skill
<!-- skills/cheatsheet.md -->
# Cheatsheet
Useful commands ...A markdown skill simply returns the file contents when invoked.
Example: Memory + Skill Workflow
# 1) Save user preferences
agent_memory_save(key="user.lang", value="zh-CN", category="user", tags=["lang"])
# 2) Later, recall them
agent_memory_load(key="user.lang")
# 3) Run a custom skill
agent_run_skill(name="summarize", input="long text ...", args={"max_words": 20})Security Notes
File paths are resolved to absolute paths;
~expansion is supportedLarge files (>10 MiB) are rejected to prevent memory exhaustion
Command execution has a configurable timeout (max 600s)
The memory file is rewritten atomically (temp file + rename) to prevent corruption
Do not expose this server to untrusted clients —
agent_execute_commandandagent_run_skill(Python/shell) can run arbitrary code
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityBmaintenanceProvides coding agent capabilities including file operations, terminal commands, search functionality, and utility operations.27125MIT
- AlicenseAqualityCmaintenanceProvides filesystem, web search, SQLite, and system tools for AI assistants like Claude, enabling secure access to local resources and the web.6MIT
- AlicenseAqualityBmaintenanceProvides LLMs with local filesystem operations (read/write files, list directories) and command execution via MCP, enabling file management and task automation within AI clients.713ISC
- FlicenseCqualityDmaintenanceEnables MCP clients to interact with local LLMs via LM Studio, supporting dynamic chat, vision, RAG, file interaction, and model orchestration.28
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oemoem12/lmstudio-agent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server