openemr-wiki-mcp
A quick local-first MCP server for OpenEMR documentation.
I made this as a small practical implementation so I could get fast local access to OpenEMR wiki pages, the Users Guide, and selected API docs inside desktop AI apps, coding agents, and other MCP-capable tools.
This repository is intentionally focused on local usage. It does not try to be a full hosted platform or production-ready remote service.
Tools
| Tool | Description | Key Parameters | |------|-------------|----------------| | search_openemr_wiki | Search the OpenEMR wiki for any topic. Returns titles, summaries, and URLs. | query (string), limit (1–10, default 5) | | get_openemr_wiki_page | Fetch the plain-text content of a specific wiki page by title, optionally narrowed to a section. | title (string), section (optional string) | | get_users_guide_toc | Fetch the table of contents from the OpenEMR 8.0.0 Users Guide. | _(none)_ | | get_openemr_api_docs | Fetch selected OpenEMR API documentation from the OpenEMR GitHub repository. | doc (fhir, standard, smart_on_fhir) | | list_wiki_pages_by_category | List wiki pages in a given MediaWiki category. | category (string) |
Requirements
- Node 18+
- npm
Quick Start
This is a local stdio MCP server. That is the supported usage mode in this repo today.
Install And Build
git clone https://github.com/rucister/openemr-wiki-mcp.git
cd openemr-wiki-mcp
npm install
npm run build
npm install -g .
Verify the global binary if you want to use the npm-installed command directly:
which openemr-wiki-mcp
Install Inside WSL On A Local Windows Computer
If you want the MCP server to run inside WSL, do the install from your WSL shell, not from Windows PowerShell:
cd /path/to/openemr-wiki-mcp
npm install
npm run build
npm install -g .
which openemr-wiki-mcp
The last command should print a Linux path inside WSL, for example:
/home/ubuntu/.nvm/versions/node/v22.16.0/bin/openemr-wiki-mcp
Use It Locally
VS Code
Open the Command Palette and run MCP: Open User Configuration, then add:
{
"servers": {
"openemr-wiki": {
"type": "stdio",
"command": "openemr-wiki-mcp"
}
}
}
If VS Code cannot find the global binary, replace openemr-wiki-mcp with the absolute Linux or macOS path returned by which openemr-wiki-mcp.
Claude Code
Register the local stdio server:
claude mcp add --scope user --transport stdio openemr-wiki openemr-wiki-mcp
Verify:
claude mcp list
If the command is not found because the client does not load your shell profile, register the absolute binary path instead of openemr-wiki-mcp.
Claude Desktop
Config file:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux/WSL:
~/.config/Claude/claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
If Claude Desktop and the MCP server run in the same Linux or macOS environment, use this local stdio configuration:
{
"mcpServers": {
"openemr-wiki": {
"command": "openemr-wiki-mcp"
}
}
}
If Claude Desktop is running on Windows and the MCP server is installed inside WSL, use wsl.exe and the exact distro name:
{
"mcpServers": {
"openemr-wiki": {
"command": "wsl.exe",
"args": [
"-d",
"Ubuntu-22.04",
"-e",
"/home/your-user/.nvm/versions/node/v22.16.0/bin/node",
"/home/your-user/path/to/openemr-wiki-mcp/dist/index.js"
]
}
}
}
Notes:
- Replace
Ubuntu-22.04with the exact output ofwsl -l -qfrom Windows. - Using the built
dist/index.jspath is more reliable than depending on the global shim. - Restart Claude Desktop after saving the config.
If You Want To Host It
This repository does not include a remote HTTP MCP transport or deployment setup.
If you want to put this online, use this project as a starting point and add the pieces that a public or shared deployment needs:
- remote MCP transport
- authentication and access control
- rate limiting
- caching
- deployment and monitoring
If someone wants to take this local-first implementation and evolve it into a hosted version, that is a good next step for a fork or contribution.
Update
git pull && npm run build && npm install -g .
Common Gotchas
- If
openemr-wiki-mcpis not found afternpm install -g ., your npm global bin directory is probably not inPATH. - If Claude Code or Claude Desktop does not pick up your shell profile, use the absolute path from
which openemr-wiki-mcpinstead of the bare command name. - If Claude Desktop on Windows launches the server through WSL, the distro name after
-dmust exactly match the output ofwsl -l -q, for exampleUbuntu-22.04. - This is a stdio MCP server, so do not use
console.log()for debugging. Write diagnostics to stderr withconsole.error().
License
MIT. See LICENSE.












