xamp
MCP-XAMP
MCP server that gives Claude Code and OpenCode direct access to your XAMPP MariaDB/MySQL databases. Five tools: list databases, list tables, describe table, read query, write query.
Quick Start
Clone the repo
Configure your AI agent (Claude Code or OpenCode)
Start querying —
list_databases,read_query, etc.
No global install needed — runs directly with uv run.
Requirements
Python 3.13+
XAMPP with MariaDB/MySQL running on
localhost:3306
Installation
git clone https://github.com/<user>/mcp-xamp.git
cd mcp-xamp
uv syncVerify it works:
uv run mcp-xampOptional: install globally
If you prefer mcp-xamp available as a command anywhere:
uv tool install --python 3.13 .Then use "command": "mcp-xamp" instead of uv run --directory ... in the
configs below.
Claude Code Setup
Option A: global install (recomendado)
Instala mcp-xamp como comando global y registralo en Claude Code:
uv tool install --python 3.13 .Luego agregá el server MCP. Elegí el scope que prefieras:
# Scope project (crea .mcp.json en el directorio actual)
claude mcp add xamp \
-e MCP_XAMP_HOST=localhost \
-e MCP_XAMP_PORT=3306 \
-e MCP_XAMP_USER=root \
-e MCP_XAMP_PASSWORD= \
-e MCP_XAMP_ALLOW_WRITE=true \
-- mcp-xamp
# Scope user (disponible en todos tus proyectos)
claude mcp add --scope user xamp \
-e MCP_XAMP_HOST=localhost \
-e MCP_XAMP_PORT=3306 \
-e MCP_XAMP_USER=root \
-e MCP_XAMP_PASSWORD= \
-e MCP_XAMP_ALLOW_WRITE=true \
-- mcp-xampAjusta los valores de las variables según tu instalacion de XAMPP.
Option B: sin instalar (usando uv run)
Si preferis no instalar globalmente, apunta al directorio del repo:
claude mcp add xamp \
-e MCP_XAMP_HOST=localhost \
-e MCP_XAMP_PORT=3306 \
-e MCP_XAMP_USER=root \
-e MCP_XAMP_PASSWORD= \
-e MCP_XAMP_ALLOW_WRITE=true \
-- uv run --directory /ruta/a/mcp-xamp mcp-xampReemplaza /ruta/a/mcp-xamp con la ruta real donde clonaste el repo.
Config manual (archivo .mcp.json)
Si preferis editar el archivo a mano, tambien funciona:
{
"mcpServers": {
"xamp": {
"command": "mcp-xamp",
"args": [],
"env": {
"MCP_XAMP_HOST": "localhost",
"MCP_XAMP_PORT": "3306",
"MCP_XAMP_USER": "root",
"MCP_XAMP_PASSWORD": "",
"MCP_XAMP_ALLOW_WRITE": "true"
}
}
}
}Si no instalaste globalmente, usa "command": "uv" con los args correspondientes
(ver el .mcp.json de este repo como referencia).
Verify
Dentro de Claude Code, corre /mcp para confirmar que xamp aparece como
conectado. Despues proba:
List all databases on my XAMPP server.OpenCode Setup
Config location
OpenCode reads MCP config from opencode.json or opencode.jsonc. The file
can be in:
Location | Scope |
| Project-specific |
| Project-specific (alt) |
| Global (all projects) |
Add the MCP server
Add this block to your opencode.json or opencode.jsonc:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"xamp": {
"type": "local",
"command": ["uv", "run", "--directory", "/path/to/mcp-xamp", "mcp-xamp"],
"enabled": true,
"environment": {
"MCP_XAMP_ALLOW_WRITE": "true"
}
}
}
}Replace /path/to/mcp-xamp with your actual clone path.
If you used uv tool install, simplify to:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"xamp": {
"type": "local",
"command": ["mcp-xamp"],
"enabled": true,
"environment": {
"MCP_XAMP_ALLOW_WRITE": "true"
}
}
}
}Verify
Restart OpenCode, then try:
Show me all databases on the xamp server. use xamp toolsEnvironment Variables
All configuration goes through environment variables. Sensible defaults for a standard XAMPP installation.
Variable | Default | Description |
|
| MariaDB/MySQL host |
|
| MariaDB/MySQL port |
|
| Database user |
| (empty) | Database password |
|
| Set to |
Credentials are read from environment variables only. They never appear in tool arguments, log output, or error messages.
Tools
Tool | Description | Requires |
| Show all accessible databases | — |
| Show tables in a database |
|
| Show columns, types, and keys |
|
| Execute SELECT / SHOW / DESCRIBE / EXPLAIN |
|
| Execute INSERT / UPDATE / DELETE / DDL |
|
Security
Read-only by default. Write operations require
MCP_XAMP_ALLOW_WRITE=true.Credentials never logged. Host, port, user, and password are stripped from error messages.
Credentials only from env vars. No tool parameters, no config files, no CLI args.
Connection-per-query. Each tool invocation opens and closes its own connection — no shared state, no stale connections.
XAMPP default is root with no password. Create a dedicated user for production use:
CREATE USER 'mcp_agent'@'127.0.0.1' IDENTIFIED BY 'secure_password'; GRANT SELECT ON *.* TO 'mcp_agent'@'127.0.0.1';
Development
# Install dev dependencies
uv sync --group dev
# Run tests
uv run pytest -v --cov=src/mcp_xamp
# Lint
uv run ruff check src/ tests/
# Format
uv run ruff format src/ tests/License
MIT — see LICENSE.
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/yeyorg/mcp-xamp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server