MCP Server Setup
What This Does
webSlinger ships an MCP server that exposes the automation scripts on your account as tools an AI agent can call. Instead of an agent trying to drive a website by reasoning about the page on every step, it calls a script you demonstrated once — which runs deterministically, returns structured JSON, and costs no tokens to execute.
Any MCP client can connect: Claude Code, Claude Desktop, or a custom Claude Agent SDK session.
What It Is Not
This is not a hosted, zero-setup public server. It runs on your machine and drives your real, logged-in Chrome profile through taskSpinner, webSlinger's native messaging host. It can only run automations you have already recorded and generated. That is the point — your cookies, your sessions, your MFA, and no credentials leaving your computer.
When an Agent Has No Matching Script
Agents are instructed not to improvise the site interaction. Instead they call request_demonstration, which opens a pre-filled briefing page in your Chrome. You review what was requested, click Begin Recording, and demonstrate the task once with the goals already loaded into the recording session. After you generate the script, the agent picks it up on the next list_scripts call.
Requirements
Before You Begin
All of these come from the normal webSlinger installation. If you have already installed webSlinger and run an automation, you are most of the way there.
| Requirement | How to get it |
|---|---|
| webSlinger Chrome extension | Install from the Chrome Web Store |
| taskSpinner 1.3.0 or later | Run setup.bat from webSlinger_Setup.zip. Version 1.3.0 is the first build that includes the MCP server. |
| A webSlinger API key | Shown on your Account page after subscribing |
| At least one generated script | Record a session map and generate a script, or let an agent call request_demonstration |
| Automation permission granted | Launch any automation once and click Enable |
| A paid plan with executions available | Running a script consumes an automation execution; the free tier has none |
You Do Not Need Python
The installer bundles its own Python runtime and every dependency the MCP server needs, including the MCP SDK. There is nothing to pip install and nothing to clone.
setup.bat — that is the only upgrade path, because the MCP server ships with its own runtime and dependencies. Re-running it is safe: it never touches your mcp_config.json, credentials, or recorded session maps.
Where Things Live
Two directories are involved, and they are deliberately different. Program files are installed under Local AppData; everything that represents your state lives under your user profile.
Program files
%LOCALAPPDATA%\webSlinger\
taskSpinner\mcp_server.pytaskSpinner\mcp_server.battaskSpinner\mcp_config.example.jsonpython\andsite-packages\
Your state
%USERPROFILE%\webSlinger\taskSpinner\
mcp_config.json(you create this)profileRegistry.jsonlogs\outputData\mcpRuns\
Reinstalling or upgrading replaces the first directory and leaves the second alone.
Setup
Three Steps
-
Create your MCP config file
Create a file named
mcp_config.jsonin%USERPROFILE%\webSlinger\taskSpinner\. A template namedmcp_config.example.jsonships with the server under%LOCALAPPDATA%\webSlinger\taskSpinner\; copy it across and fill in your key.On a brand-new machine that folder does not exist yet — it is created the first time taskSpinner or the MCP server runs. Create it yourself, or do step 2 first and it will be waiting for you.
mcp_config.json{ "api_key": "wsk_your_webslinger_api_key_here" }The file must be strict JSON — no comments, no trailing commas. A malformed file stops the server from starting at all.
-
Grant automation permission
Open the Launch page, start any automation once, and click Enable when Chrome asks. This does two things: it grants webSlinger permission to drive automations, and it registers your Chrome profile and extension so the MCP server knows which browser copy to launch.
Skipping this produces
launch_failedwith reasonprofile_not_registeredon the first run. -
Register the server with your MCP client
Point your client at the installed wrapper, which invokes the bundled Python for you:
the path to register%LOCALAPPDATA%\webSlinger\taskSpinner\mcp_server.batMost MCP clients store this path literally and will not expand
%LOCALAPPDATA%, so use the fully written-out form, substituting your Windows username:C:\Users\YourName\AppData\Local\webSlinger\taskSpinner\mcp_server.batExact commands for each client are on the Client Configuration page.
Keeping the Key Out of a File
The config file stores your API key in plaintext. If that is a problem — a synced profile, a shared machine, a directory you might commit — set the WEBSLINGER_API_KEY environment variable instead. It overrides api_key in the file, so you can leave that field out, or skip the file entirely: every other setting has a working default.
Verifying It Works
Ask your agent to list your webSlinger scripts. A working server returns the automations on your account. If something is wrong, every tool returns a JSON object with "success": false and a status value naming the problem — check it against the Troubleshooting table.
not_configured along with setup instructions, so a misconfigured install reports itself clearly instead of failing silently.
Client Configuration
Claude Code
Run this once in a terminal. --scope user makes the server available in every project rather than just the current directory.
claude mcp add webslinger --scope user -- "C:\Users\YourName\AppData\Local\webSlinger\taskSpinner\mcp_server.bat"
Confirm it registered:
claude mcp list
To supply the API key through the environment instead of the config file:
claude mcp add webslinger --scope user --env WEBSLINGER_API_KEY=wsk_your_key_here -- "C:\Users\YourName\AppData\Local\webSlinger\taskSpinner\mcp_server.bat"
Claude Desktop
Edit %APPDATA%\Claude\claude_desktop_config.json and add a webslinger entry under mcpServers. Restart Claude Desktop afterward.
{
"mcpServers": {
"webslinger": {
"command": "C:\\Users\\YourName\\AppData\\Local\\webSlinger\\taskSpinner\\mcp_server.bat"
}
}
}
\U in a Windows path is read as an escape sequence and the file will fail to parse. Write \\ everywhere, as shown above.
If you already have other servers configured, add webslinger alongside them rather than replacing the mcpServers block.
Claude Agent SDK
Add an entry to ClaudeAgentOptions.mcp_servers:
"webslinger": {
"command": r"C:\Users\YourName\AppData\Local\webSlinger\taskSpinner\mcp_server.bat",
"env": {"WEBSLINGER_API_KEY": "wsk_your_key_here"}
}
Pointing at mcp_server.bat rather than your own interpreter keeps the server on its bundled Python and its own copy of the MCP SDK, so it cannot conflict with the package versions in your project's environment.
Available Tools
The Twelve Tools
Every tool returns a JSON object with a success flag. Expected failures come back as "success": false with a status value the agent can branch on, rather than as an error.
| Tool | What it does |
|---|---|
list_scripts |
Lists your automation scripts with descriptions and declared inputs and outputs. |
describe_script |
Returns the input/output schema and metadata for one script. |
run_script |
Runs a script and blocks until it finishes, returning output data and an execution report. |
start_run |
Starts a script asynchronously and returns a run id immediately. |
get_run_status |
Polls a run started with start_run. |
get_run_report |
Retrieves the full execution report for a completed run. |
list_runs |
Lists recent run records. |
cancel_run |
Cancels an in-progress asynchronous run. |
list_schedules |
Lists your configured scheduled automations. |
create_schedule |
Creates a new scheduled or recurring automation run. |
delete_schedule |
Removes a scheduled automation. |
request_demonstration |
Asks you to record a task no existing script covers. Opens a pre-filled briefing page in your Chrome. |
Status Values Worth Knowing
| Status | Meaning |
|---|---|
not_configured |
No API key found in mcp_config.json or WEBSLINGER_API_KEY. |
not_allowed |
Your tier has no executions, or the monthly limit is used up. Returned before Chrome is launched. |
throttled |
The same limit, but hit by the extension mid-run. Carries a remediation field pointing at a tier upgrade or booster pack. |
script_not_found |
No script by that name on your account. Call list_scripts first. |
busy |
Another run already holds the lock on that Chrome profile. |
launch_failed |
Chrome could not be launched, or the profile is not registered. |
timeout / failed |
The run started but did not complete successfully. Fetch the report with get_run_report. |
Troubleshooting
Common Symptoms
| Symptom | Cause and fix |
|---|---|
The client reports reconnect error -32000 |
The server exited at startup, almost always a malformed mcp_config.json. It must be strict JSON with no comments or trailing commas. |
Every tool returns not_configured |
No API key was found. Check that mcp_config.json is in %USERPROFILE%\webSlinger\taskSpinner\ — not next to mcp_server.py — or set WEBSLINGER_API_KEY. |
launch_failed, reason profile_not_registered |
Chrome has not registered a profile for this API key. Open Chrome with the extension active and that key configured, then retry. |
API_KEY_MISMATCH in the run status |
The key in mcp_config.json is not the one the extension is holding. Copy the key from your account page into both. |
| Chrome opens a blocked-page tab | The extension copy being launched is disabled or wrong. Remove any extension_id override from your config and reload the extension so it re-registers. |
Access to the specified native messaging host is forbidden |
The active extension is not listed in taskSpinner's manifest. The installer authorizes one extension id — the Web Store copy it detects, or the id you type in when it finds none. If you run a second copy, add its id to the allowed_origins array in %LOCALAPPDATA%\webSlinger\taskSpinner\com.webslinger.taskspinner.json and restart Chrome. |
not_allowed on every run |
A tier or monthly-limit gate. The returned message carries the server's explanation. |
| The server is not listed by the client at all | Check the registered path points at mcp_server.bat and that the file exists. If taskSpinner predates 1.3.0 it will not, and you need to re-run the installer. |
Where to Look
Logs are written to %USERPROFILE%\webSlinger\taskSpinner\logs\taskSpinner_YYYYMMDD.log, shared by the native messaging host, the scheduler, and the MCP server.
Per-run records, including the output data and execution report, are kept under %USERPROFILE%\webSlinger\taskSpinner\outputData\mcpRuns\. The 50 most recent are retained by default.
FAQ
Questions
Does running scripts through an agent cost extra?
Each run consumes one automation execution from your plan, exactly as if you had launched it from the website or run it on a schedule. There is no separate MCP charge and no per-step LLM cost during execution — the script runs deterministically without any AI in the loop.
Does this run in the cloud?
No. The server runs on your machine and drives your local Chrome. Your computer must be on and awake, and Chrome will visibly open while a script runs.
Can the agent see my passwords?
No. Credentials are handled by keyCocoon and keyBunker, which inject them directly into login forms. They are never part of a script's input or output data, so they never reach the agent or webSlinger's servers.
Which Chrome profile does it use?
The one registered against your API key. The extension writes that mapping itself whenever it starts up, so the profile launched is by construction the one holding the key you configured. Every launch carries the key's hash, and the extension refuses to run if it does not match its own — so a mix-up between accounts fails loudly instead of running under the wrong one.
Can an agent create automations on its own?
No, and that is deliberate. An agent can request one with request_demonstration, which opens a briefing page in your Chrome describing what it wants and why. You decide whether to record it. Scripts only ever come from a human demonstration.
Can I use this with an agent other than Claude?
Yes. It is a standard stdio MCP server, so any MCP-compatible client can connect. The configuration examples here cover Claude Code, Claude Desktop, and the Claude Agent SDK because those are what we test against.
Do I need to keep a terminal open?
No. The MCP client starts the server itself when it needs it and shuts it down afterward.
What happens if two things try to run at once?
Runs are locked per Chrome profile. A second run against a busy profile returns status busy rather than launching a conflicting browser session. Scheduled tasks and MCP runs share the same lock.
Will reinstalling wipe my configuration?
No. The installer replaces program files under Local AppData. Your mcp_config.json, run history, schedules, and profile registry live under your user profile and are left untouched.
Is macOS or Linux supported?
Not yet. taskSpinner is a Windows native messaging host, and the MCP server depends on it to launch Chrome and read run results. Installers for other platforms are planned.