Bring LPC development into 2025 with AI-powered code intelligence.
This MCP (Model Context Protocol) server wraps the jlchmura/lpc-language-server and exposes it to AI assistants, enabling natural language queries about your LPC codebase with real language server-powered understanding.
AI assistants can now:
- Understand your LPC code structure through the language server
- Get real documentation from hover information
- Jump to definitions and find references
- Answer natural language questions about your mudlib
- Trace inheritance chains and function calls
- Explain complex code patterns
All through conversation, powered by actual code intelligence instead of pattern matching.
lpc_hover: Get documentation/hover information for symbolslpc_definition: Jump to definition of symbolslpc_references: Find all references to a symbollpc_diagnostics: Get real-time errors, warnings, and hints from the language server- Workspace-aware: Reads your
lpc-config.jsonfor proper symbol resolution - Fast: Direct JSON-RPC communication with the language server
Node.js 20+ required:
node --version # Should be v20.0.0 or higherThe extension must be installed in VS Code (the server binary is bundled with it):
code --install-extension jlchmura.lpcVerify installation:
ls ~/.vscode/extensions/jlchmura.lpc-*/out/server/src/server.jscd /path/to/lpc-mcp
npm installThe language server needs this config file at your mudlib root to understand includes, simul_efuns, etc.
Example /path/to/your/mudlib/lpc-config.json:
{
"driver": {
"type": "fluffos"
},
"libFiles": {
"master": "adm/obj/master.c",
"simul_efun": "adm/obj/simul_efun.c",
"global_include": "include/global.h"
},
"libInclude": [
"include",
"include/driver",
"adm/include"
],
"exclude": [
".git/",
"tmp/"
]
}Add to your Warp MCP configuration:
Location: Settings → AI → Model Context Protocol
{
"lpc": {
"command": "node",
"args": ["/absolute/path/to/lpc-mcp/index.js"],
"env": {
"LPC_WORKSPACE_ROOT": "/path/to/your/mudlib"
}
}
}Important: Use absolute paths! Replace:
/absolute/path/to/lpc-mcp/index.jswith the actual path to this repo/path/to/your/mudlibwith the directory containing yourlpc-config.json
Restart Warp after adding the configuration.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or equivalent:
{
"mcpServers": {
"lpc": {
"command": "node",
"args": ["/absolute/path/to/lpc-mcp/index.js"],
"env": {
"LPC_WORKSPACE_ROOT": "/path/to/your/mudlib"
}
}
}
}Restart Claude Desktop after configuration.
Add to your Cline MCP settings:
{
"mcpServers": {
"lpc": {
"command": "node",
"args": ["/absolute/path/to/lpc-mcp/index.js"],
"env": {
"LPC_WORKSPACE_ROOT": "/path/to/your/mudlib"
}
}
}
}Prerequisites:
- Install the Copilot MCP extension:
code --install-extension automatalabs.copilot-mcp
Configuration:
Add to ~/Library/Application Support/Code/User/mcp.json (macOS) or equivalent:
{
"servers": {
"lpc": {
"type": "node",
"command": "node",
"args": ["/absolute/path/to/lpc-mcp/index.js"],
"env": {
"LPC_WORKSPACE_ROOT": "/path/to/your/mudlib"
}
}
},
"inputs": []
}The configuration is the same for any MCP-compatible tool:
- Add the server to your MCP configuration
- Provide the Node.js command and path to
index.js - Set
LPC_WORKSPACE_ROOTenvironment variable to your mudlib root
Once configured, you can ask your AI assistant natural language questions:
"What does the query_short() function do in room.c?"
→ AI uses lpc_hover to get documentation
"Where is STD_OBJECT defined?"
→ AI uses lpc_definition to find the file
"Find all places that call set_room_size()"
→ AI uses lpc_references to locate all callers
"Explain how the maze generation algorithm works" → AI reads code and uses hover info to understand functions
"What's the inheritance tree for rooms?"
→ AI traces inherit statements and jumps to definitions
"Check if this LPC file has any syntax errors"
→ AI uses lpc_diagnostics to validate the code
"Why won't this LPC code compile?" → AI checks diagnostics for errors like undeclared variables or type mismatches
To verify the server works:
# Set workspace root for testing
export LPC_WORKSPACE_ROOT=/path/to/your/mudlib
# Start the server (it will wait for MCP protocol messages)
node index.jsThe server should output:
Starting LPC Language Server...
Initializing LSP...
LPC Language Server started successfully
LPC MCP Server running on stdio
Check the LPC extension is installed:
code --list-extensions | grep jlchmura.lpcCheck logs (for Warp):
tail -f ~/.local/state/warp-terminal/mcp/*.logVerify workspace root:
- Make sure
LPC_WORKSPACE_ROOTpoints to the directory withlpc-config.json - Use absolute paths, not relative
Check your lpc-config.json:
cat $LPC_WORKSPACE_ROOT/lpc-config.jsonIf the extension path doesn't match, update line 40 in index.js:
const lspPath = path.join(
process.env.HOME,
".vscode/extensions/jlchmura.lpc-VERSION/out/server/src/server.js"
);Find your version:
ls ~/.vscode/extensions/ | grep jlchmura.lpcAI Assistant
↓ (natural language)
MCP Protocol
↓ (tool calls: lpc_hover, lpc_definition, lpc_references)
This Server
↓ (JSON-RPC: textDocument/hover, etc.)
LPC Language Server
↓ (parses LPC, reads lpc-config.json)
Your Mudlib
- AI assistant sends MCP tool requests
- Server reads the file and sends
textDocument/didOpento LSP - Server translates MCP → LSP JSON-RPC requests
- LSP analyzes code using your
lpc-config.json - Server returns LSP response as MCP result
- AI understands your code structure!
- Add completion support
- Add diagnostics (errors/warnings)
- Support signature help
- Cache opened documents
- Support multiple workspace roots
- Add rename symbol support
- Add document symbols (outline)
- Add workspace symbol search
PRs welcome! This is a proof-of-concept that can be extended with more LSP features.
- John (jlchmura) - The INCOMPARABLY SKILLED MASTER PROGRAMMER whose LPC language server rescued LPC development from 1995. Without his greatness, kindness, and all-around hunk demeanour, we would still be
grep-ing through mudlibs like cavemen. This MCP server is merely a humble wrapper around his genius. - Model Context Protocol - The protocol making this possible
- Built in an hour of inspired hacking in 2025
Unlicense - Public Domain. Do whatever you want with this code.
The LPC language server itself (jlchmura/lpc-language-server) is under its own license.