- Language
- Python
- Last commit
- 2h ago
- Forks
- 0
- Open issues
- 0
- Registry update
- Oct 15, 2026
Connect
pypi$claude mcp add lws-mcp \ -e LWS_LOGIN=<lws-login> \ -e LWS_API_KEY=<lws-api-key> \ -e LWS_READ_ONLY=<lws-read-only> \ -e LWS_ENABLE_PURCHASES=<lws-enable-purchases> \ -e LWS_TEST_MODE=<lws-test-mode> \ -e LWS_TEST_API_KEY=<lws-test-api-key> \ -- uvx lws-mcp==0.2.1
Environment variables
LWS_LOGINrequiredYour LWS account ID (the digits of LWS-XXXXXX)
LWS_API_KEYrequiredsecretLWS API key (LWS Panel > Api LWS)
LWS_READ_ONLYtrue to expose only read tools
LWS_ENABLE_PURCHASEStrue to expose the paid tools (buy, renew)
LWS_TEST_MODEtrue to use the LWS test environment
LWS_TEST_API_KEYsecretTest key, used instead of LWS_API_KEY in test mode
Security review
Review passedReviewed 1h ago.
- metadata
- scanned
- packages
- 1 checked
No findings.
Tools
This server runs on your machine, so its tool list is not fetched before install — the README below describes what it offers.
README
NKSTUD/lws-mcp/README.mdlws-mcp
English · Français
An MCP server for the LWS Client API. Manage your domains, DNS zones, hosting and account from Claude, Cursor or any MCP client:
"Add the CNAME records Stripe gave me to example.fr, then tell me when they are live."
It covers the whole LWS Client API (29 endpoints), plus a propagation check that compares your LWS zone, its nameservers and three public resolvers.
Community project, not affiliated with or endorsed by LWS.
Tools
| Area | Tools |
|---|---|
| DNS | get_dns_zone · add_dns_record · update_dns_record · delete_dns_record · check_dns_propagation |
| Domains | get_domain · check_domain_availability · list_tlds · update_nameservers · set_transfer_protection · request_transfer_authcode · create_domain_redirect · delete_domain_redirect |
| Hosting | list_hostings · get_hosting · list_hosting_prices · get_renewal_prices · set_auto_renew · buy_hosting¹ · renew_hosting¹ |
| Account | get_account_balance · get_purchase_history · list_contacts · get_contact · create_contact · update_contact · add_test_credit_to_contact² · add_test_credit_to_account² |
| Requests | list_requests · list_pending_requests |
¹ Paid: off unless LWS_ENABLE_PURCHASES=true. ² Only in test mode.
DNS record names can be written in full (_dmarc.example.fr): they are shortened to what the LWS zone expects (_dmarc, @).
Safety
An assistant with access to your DNS can take a site or a mailbox down, and one with access to purchases can spend money. So:
- Purchases are off by default.
buy_hostingandrenew_hostingonly exist whenLWS_ENABLE_PURCHASES=true. - Read-only mode.
LWS_READ_ONLY=trueremoves every tool that changes something. - Hints for your client. Every tool declares whether it reads, writes or destroys (tool annotations), so clients can ask before running it.
- Test environment.
LWS_TEST_MODE=truesends every request to the LWS sandbox. - Your key stays local. It goes only to
api.lws.net, and is never logged or returned to the model.
Requirements
- An LWS account and its API key: LWS Panel → your account number (LWS-XXXXXX, top right) → Api LWS → Clé API en mode PRODUCTION → voir. LWS guide.
- The public IP address of the machine running the server, allowed on the same Api LWS page. Otherwise every call fails with
bad source <your IP>. - uv (it fetches Python and the server for you).
Installation
Every client runs the same command, uvx lws-mcp, with LWS_LOGIN and LWS_API_KEY in its environment (see Configuration for the optional settings).
The buttons leave LWS_LOGIN and LWS_API_KEY empty: fill them in after installing.
Claude Code
claude mcp add lws \
-e LWS_LOGIN=123456 \
-e LWS_API_KEY=your-api-key \
-- uvx lws-mcp
Codex (CLI, IDE extension and app)
codex mcp add lws \
--env LWS_LOGIN=123456 \
--env LWS_API_KEY=your-api-key \
-- uvx lws-mcp
Or in ~/.codex/config.toml:
[mcp_servers.lws]
command = "uvx"
args = ["lws-mcp"]
env = { LWS_LOGIN = "123456", LWS_API_KEY = "your-api-key" }
Cursor
Use the button above, or add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"lws": {
"command": "uvx",
"args": [
"lws-mcp"
],
"env": {
"LWS_LOGIN": "123456",
"LWS_API_KEY": "your-api-key"
}
}
}
}
VS Code (GitHub Copilot)
code --add-mcp '{"name":"lws","command":"uvx","args":["lws-mcp"],"env":{"LWS_LOGIN":"123456","LWS_API_KEY":"your-api-key"}}'
Or in .vscode/mcp.json:
{
"servers": {
"lws": {
"type": "stdio",
"command": "uvx",
"args": [
"lws-mcp"
],
"env": {
"LWS_LOGIN": "123456",
"LWS_API_KEY": "your-api-key"
}
}
}
}
Claude Desktop · Windsurf · Gemini CLI · others
Add this block to the client's MCP file:
| Client | File |
|---|---|
| Claude Desktop | Settings → Developer → Edit Config (claude_desktop_config.json) |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Gemini CLI | ~/.gemini/settings.json |
| Cline, Roo Code, Zed… | their MCP settings, same format |
{
"mcpServers": {
"lws": {
"command": "uvx",
"args": [
"lws-mcp"
],
"env": {
"LWS_LOGIN": "123456",
"LWS_API_KEY": "your-api-key"
}
}
}
}
Configuration
| Variable | Default | Description |
|---|---|---|
LWS_LOGIN | required | Your LWS account ID (the digits of LWS-XXXXXX). |
LWS_API_KEY | required | Production API key. |
LWS_TEST_API_KEY | Test key, used instead of LWS_API_KEY in test mode. | |
LWS_TEST_MODE | false | Send requests to the LWS test environment. |
LWS_READ_ONLY | false | Only expose tools that read. |
LWS_ENABLE_PURCHASES | false | Expose buy_hosting and renew_hosting. |
LWS_TIMEOUT | 30 | Request timeout, in seconds. |
LWS_BASE_URL | https://api.lws.net/v1 | API base URL. |
Good to know
- Deferred actions. Nameserver changes, transfer protection, auth codes, purchases and renewals are processed in the background. Follow them with
list_pending_requests. - Propagation. A DNS change can take from minutes to a few hours to be seen everywhere: each resolver keeps the old answer until its TTL runs out.
check_dns_propagationcompares what is saved in the LWS zone, what the domain's nameservers answer (no cache) and what Cloudflare, Google and Quad9 answer, then says how long a stale answer can last. Some networks block direct DNS queries to nameservers; the resolvers are asked over HTTPS, so that part always works. - Record ids change. LWS replaces a record under a new id when it is updated.
add_dns_recordandupdate_dns_recordreturn the current id. - Rate limit. LWS refuses bursts of requests (about fifteen in a row) with
Invalid input (rate limit): wait a minute and retry. - Allowed TTLs. 900, 1800, 3600, 7200, 21600, 43200 or 86400 seconds.
Development
git clone https://github.com/NKSTUD/lws-mcp && cd lws-mcp
uv sync
uv run pytest
uv run ruff check . && uv run ruff format --check .
Try it against your account with the MCP Inspector, credentials in a local .env (see .env.example):
npx @modelcontextprotocol/inspector uv run --env-file .env lws-mcp
See CONTRIBUTING.md to add a tool or fix a bug.
License
From the server's repository — third-party content, read it before running anything it suggests.
More in DevOps
Fitatu
io.github.Jezue
Unofficial Fitatu calorie counter: read and log food, weight, water and workouts.
TerraVision
io.github.patrickchugh
Draw cloud architecture diagrams with official AWS, Azure and GCP icons from a prompt or Terraform.
Log10x MCP
io.github.log-10x
Rank log patterns by volume and cost, then compact, tier down or offload the excess over each cap
macwhisper-mcp-server
io.github.docdyhr
MacWhisper transcription for Claude Desktop. Fully local, no cloud, audio stays on your Mac.
hwcontract
io.github.MohibShaikh
Judge hardware timing/serial against a contract: pass/marginal/fail (WS2812, DShot, logs)
AgentSearch (agentsearchhq.com)
io.github.agentsearchhq-coder
Free web search (25/day), plus paid extract/render at $0.005/call (x402) and a free Review Board.
Listing from the official MCP Registry · repository facts from GitHub, 1h ago.