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

AI-generated 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.
Before you install
An assistant with DNS access can take a site or mailbox down, and purchase tools can spend money; purchases are off unless LWS_ENABLE_PURCHASES is set, and LWS_READ_ONLY removes all changing tools. The API key is a secret sent only to the LWS API. Nameserver changes, transfers and purchases run in the background. Community project, not affiliated with LWS.

Installation

In SourceWeft

  1. Open LWS in the dashboard and add it to a workspace.
  2. 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

AreaTools
DNSget_dns_zone · add_dns_record · update_dns_record · delete_dns_record · check_dns_propagation
Domainsget_domain · check_domain_availability · list_tlds · update_nameservers · set_transfer_protection · request_transfer_authcode · create_domain_redirect · delete_domain_redirect
Hostinglist_hostings · get_hosting · list_hosting_prices · get_renewal_prices · set_auto_renew · buy_hosting¹ · renew_hosting¹
Accountget_account_balance · get_purchase_history · list_contacts · get_contact · create_contact · update_contact · add_test_credit_to_contact² · add_test_credit_to_account²
Requestslist_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_hosting and renew_hosting only exist when LWS_ENABLE_PURCHASES=true.
  • Read-only mode. LWS_READ_ONLY=true removes 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=true sends 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
bash
claude mcp add lws \  -e LWS_LOGIN=123456 \  -e LWS_API_KEY=your-api-key \  -- uvx lws-mcp
Codex (CLI, IDE extension and app)
bash
codex mcp add lws \  --env LWS_LOGIN=123456 \  --env LWS_API_KEY=your-api-key \  -- uvx lws-mcp

Or in ~/.codex/config.toml:

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):

json
{  "mcpServers": {    "lws": {      "command": "uvx",      "args": [        "lws-mcp"      ],      "env": {        "LWS_LOGIN": "123456",        "LWS_API_KEY": "your-api-key"      }    }  }}
VS Code (GitHub Copilot)
bash
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:

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:

ClientFile
Claude DesktopSettings → 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
json
{  "mcpServers": {    "lws": {      "command": "uvx",      "args": [        "lws-mcp"      ],      "env": {        "LWS_LOGIN": "123456",        "LWS_API_KEY": "your-api-key"      }    }  }}

Configuration

VariableDefaultDescription
LWS_LOGINrequiredYour LWS account ID (the digits of LWS-XXXXXX).
LWS_API_KEYrequiredProduction API key.
LWS_TEST_API_KEYTest key, used instead of LWS_API_KEY in test mode.
LWS_TEST_MODEfalseSend requests to the LWS test environment.
LWS_READ_ONLYfalseOnly expose tools that read.
LWS_ENABLE_PURCHASESfalseExpose buy_hosting and renew_hosting.
LWS_TIMEOUT30Request timeout, in seconds.
LWS_BASE_URLhttps://api.lws.net/v1API 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_propagation compares 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_record and update_dns_record return 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

bash
git clone https://github.com/NKSTUD/lws-mcp && cd lws-mcpuv syncuv run pytestuv 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):

bash
npx @modelcontextprotocol/inspector uv run --env-file .env lws-mcp

See CONTRIBUTING.md to add a tool or fix a bug.

License

MIT

Source: README.md at commit 522d902

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  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