
LWS
io.github.NKSTUDPublished by GitHub account NKSTUDv0.2.1Updated Oct 24, 2026
Manage LWS (lws.fr) domains, DNS zones, hosting and account from any MCP client.
Overview
Lets an assistant manage LWS (lws.fr) domains, DNS zones, hosting and account through the LWS Client API, including DNS propagation checks.
- What you can do
- Read, add, update and delete DNS records, and check propagation across the LWS zone, nameservers and public resolvers
- Look up domains, check availability, list TLDs, change nameservers, set transfer protection, request auth codes and manage domain redirects
- List hostings and prices, view renewal prices, toggle auto-renew, and optionally buy or renew hosting
- Read account balance, purchase history and contacts, and create or update contacts
- List requests, including pending background operations such as nameserver changes and purchases
- When to use it
- Useful when you want an assistant to make routine LWS domain and DNS changes, such as adding verification or mail records, or to check whether a DNS change has propagated, without opening the LWS panel.
- Requirements
- Runs locally via uvx (Python fetched by uv). Needs an LWS account ID in LWS_LOGIN and an API key in LWS_API_KEY, plus the machine's public IP allowed on the LWS Api page. Optional settings cover test mode, read-only mode, purchases, timeout and base URL.
Installation
In SourceWeft
- Open LWS in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
lws-mcp
[CI] [License: MIT] [PyPI] [Python 3.10+]
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
¹ 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).
[Install in Cursor] [Install in VS Code]
The buttons leave LWS_LOGIN and LWS_API_KEY empty: fill them in after installing.
Claude Code
Codex (CLI, IDE extension and app)
Or in ~/.codex/config.toml:
Cursor
Use the button above, or add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
VS Code (GitHub Copilot)
Or in .vscode/mcp.json:
Claude Desktop · Windsurf · Gemini CLI · others
Add this block to the client's MCP file:
Configuration
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
Try it against your account with the MCP Inspector, credentials in a local .env (see .env.example):
See CONTRIBUTING.md to add a tool or fix a bug.
License
Source: README.md at commit 522d902
Tools
0Version history
1- v0.2.1LatestOct 15, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts