luaLLM-MCP
Enables safe model management via leases for luaLLM, allowing users to acquire, release, and manage model instances through MCP tools.
README
luaLLM-MCP
MCP Server for luaLLM - safe model management via leases.
Installation
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install the MCP server
make install
Configuration
Runtime state is stored in OS-appropriate application data directories:
- Linux/macOS:
~/.config/luaLLM-MCP/ - Windows:
%LOCALAPPDATA%\luaLLM-MCP\
Override with:
export LUALLM_MCP_STATE_DIR=/custom/path
export LUALLM_MCP_LEASE_TTL_SECONDS=7200 # 2 hours (default)
Usage
# Run the MCP server
make run
# Or directly with uv
uv run python mcp_server.py
The server uses stdio transport for MCP communication. It will print startup info and then wait for requests from an MCP client.
Manual Testing
Test that the server initializes correctly:
uv run python -c "
import asyncio
from mcp import StdioServerParameters
from mcp.client.stdio import stdio_client
from mcp import ClientSession
async def test():
params = StdioServerParameters(command='uv', args=['run', 'python', 'mcp_server.py'])
async with stdio_client(params) as (read_stream, write_stream):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
print(f'Found {len(tools.tools)} tools:')
for t in tools.tools:
print(f' - {t.name}')
asyncio.run(test())
"
Expected output:
Found 9 tools:
- list_models
- get_model_info
- get_server_status
- get_capabilities
- acquire_model
- release_model
- get_model_logs
- health_check
- list_leases
MCP Tools
| Tool | Description |
|---|---|
list_models() |
List all available models |
get_model_info(model_name) |
Get model metadata |
get_server_status() |
Get running servers |
get_capabilities() |
List MCP capabilities |
acquire_model(model_name, preset?, client_id?, purpose?) |
Acquire lease on model |
release_model(lease_id) |
Release lease |
get_model_logs(instance_id, lines=100) |
Get model logs |
health_check() |
Check luaLLM availability |
list_leases() |
List current leases |
Safety Features
- Allowlist only: Only approved tools exposed
- Lease-based lifecycle: Models only stopped when all leases released
- Instance isolation: Different presets = different instances
- Atomic state writes: State file updated safely
- Structured errors: All responses are JSON with success/error fields
Development
make check # Verify imports work
make test # Run tests
make clean # Clean build artifacts
Architecture
Lease Model
Models are "leased" when started via MCP. Workflows acquire leases via acquire_model() and release them with release_model(lease_id). A model is only stopped when the last lease is released.
State Schema
{
"schema_version": "1.0",
"instances": [
{
"instance_id": "uuid",
"model": "mistral-7b",
"preset": "throughput",
"managed_by_mcp": true,
"started_at": "2024-01-01T10:00:00Z",
"port": 8080
}
],
"leases": [
{
"lease_id": "uuid",
"instance_id": "uuid",
"client_id": "claude-3-5-sonnet",
"purpose": "chat-completion",
"acquired_at": "2024-01-01T10:01:00Z",
"renewed_at": "2024-01-01T10:30:00Z"
}
]
}
Instance Matching
acquire_model() only reuses an existing instance when both model and preset match exactly. Different presets create different instances.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.