Skip to content

Connectors: MCP

Preview

MCP connectors are in preview and are not enabled on every environment. When the MCP server is not enabled for you, Connectors has no MCP tab. Ask your Quadified contact whether it can be enabled.

An MCP connector lets an LLM agent, such as Claude Code or Codex CLI, author and run tests on the platform through its MCP server. The agent works as the person who created the connector, with that person's permissions and nothing administrative. Each connector has its own token, so you can see when it was last used and switch it off without affecting anything else.

What an agent can do

You ask in plain language and the agent calls the right TEO tools (see Tools).

Area What you can ask for
Test lab Which Test Nodes and devices are online, busy or faulty, and which tests use a device
Test cases Find a test case by name, read its steps, devices and trace filters
Test suites Find a suite, see which test cases it runs and what is scheduled next
Running Start a test case or a whole suite on your real devices, follow it, and re-run only the failures
Results Read the results of any run, including scheduled ones, and save them to a file
Files and analysis Get TEO's analysis of a failed run, step logs, screenshots, SIP logs and packet captures
Changing tests Create, copy or change test cases and suites, and check them before saving
AI authoring Describe a scenario in words, let TEO generate a draft test case, then approve or reject it (see AI Authoring)
Organising Projects, tags, trace filters and the change history of a test, device or node

The agent cannot do administrative work: it cannot manage users, set up Test Nodes or change platform settings. It cannot stop a running execution either; stop it from the Executions page.

Before you start

  • Your own TEO account. The connector acts as the person who creates it, so each person creates their own. Do not share one connector between people.
  • An MCP client: Claude Code or Codex CLI, installed and signed in.
  • A terminal on the machine where the client runs (macOS, Linux or Windows).

The MCP tab

Open Connectors in the menu and select the MCP tab.

The MCP tab with its list of connectors

Column Meaning
Label What the connector is for.
Owner The user the agent works as.
Token The first characters of the token, to tell connectors apart. The full token is shown only once, when it is issued.
Created / Expires When the connector was created and when its token stops working.
Last activity The last time an agent used the connector, accurate to a few minutes.
Status Active, Expired (past its expiry date) or Revoked.
Actions Issue a new token, Revoke and Delete (see below).

Standard users see and manage the connectors they created. Admins see every connector of the tenant and can revoke or delete any of them, for example when a laptop is lost. Guest users cannot use connectors.

Creating a connector

  1. Click New connector.
  2. Enter a Label that says what the connector is for, for example the machine it is used on.
  3. Set Expires after (days): between 1 and 365, 90 by default. Every connector expires.
  4. Click Create.

The New MCP connector dialog

The Connector created window shows the token and a ready-made command for Claude Code and for Codex CLI, with a copy button beside each. This is the only time the token is shown: only its hash is stored, so it cannot be recovered. Copy what you need, then close the window with I have copied it. If you lose the token, issue a new one.

The Connector created window with the token and the commands (token masked)

You can hold up to two active connectors (your environment may allow more); one connector can serve all your machines and both clients. At the limit, issue a new token for a connector you already use, or revoke or delete one you no longer need.

Connecting a client

The client connects to the MCP server at https://app-<environment>.quadified.com/mcp; the Connector created window (or New token issued, after a new token) shows the exact address for your environment. Run the command for your client with the token in place of <token>.

Claude Code

claude mcp remove atf 2>/dev/null; \
claude mcp add --scope user --transport http atf https://app-<environment>.quadified.com/mcp \
  --header "Authorization: Bearer <token>"

The command is safe to run whether or not the client already has a connector: it replaces the atf entry, so run it again after you get a new token. --scope user installs it for all your projects and keeps the token in Claude Code's own settings file (~/.claude.json); leave it out to limit the connector to the directory you run it in. On Windows, run the two claude mcp commands one after the other instead of on one line. Start a new Claude Code session afterwards.

Check it with claude mcp list: the atf line should say Connected. Inside a Claude Code session, /mcp shows the same and lists the tools.

Codex CLI

export ATF_MCP_TOKEN=<token>
codex mcp add atf --url https://app-<environment>.quadified.com/mcp \
  --bearer-token-env-var ATF_MCP_TOKEN

Codex reads the token only from an environment variable; a token written into the command does not work. export lasts only for the current terminal: add the export line to your shell profile (for example ~/.zshrc or ~/.bashrc) so that Codex finds the token in every new terminal. After a new token is issued, you only need to change the exported value; the codex mcp add entry can stay. Check it with codex mcp list, then start a new Codex session.

One token works in both Claude Code and Codex, on as many of your own machines as you like.

Checking the connection

Start with a read-only question. It touches no device and shows that the connector works:

List my TEO Test Nodes and tell me which devices are available right now.

The agent calls list_test_nodes and answers with each node and its devices. A device is AVAILABLE (free to run on), BUSY (in use), UNAVAILABLE (the platform is not hearing from it) or ERROR (the node reported it as faulty).

The first time the agent uses a tool, Claude Code and Codex ask you to approve it. Approve read-only tools freely; for tools that run tests or change them, read what the agent is about to do before you approve. The Last activity column on the MCP tab shows when the connector was last used.

Example prompts

Use your own test and device names: the agent finds the ids itself.

What you want Example prompt What the agent does
Create a test case "Create a test case named SMS A to B. Device A sends the SMS hello to device B, and B checks that it arrived within 60 seconds. Check it is valid before you save it." get_function_catalog → validate_test_case → create_test_case. When the check fails it fixes the step and checks again before saving.
Put it in a suite "Create a suite named SMS suite that runs this test case twice." create_test_suite. The suite has no schedule until you set one in the Web UI.
Run and wait "Check that both devices are available, then run SMS suite and tell me when it finishes." list_test_nodes → run_test_suite → get_execution, polled until the run ends. For a single test case it uses run_test_case.
Analyse a result "Did it pass? If not, tell me which step failed and why, and show me any screenshots or traces." get_execution with logs → get_execution_analysis → list_execution_artifacts → get_attachment.
What can I run on? "Which Test Nodes are online, and which devices are available right now?" list_test_nodes
Which tests use a device? "Which test cases run on device A?" list_test_cases_using_device
Suites and schedule "List our test suites with their status and last run, and tell me what is scheduled for the next 24 hours." list_test_suites → list_upcoming_runs
Get the data out "List every execution of the last month and save it as a CSV file with suite, start time, duration, executed and passed." list_executions, then the agent writes the file on your machine. The same works for a Markdown or HTML report.
Re-run only failures "Execution 12345 had two failures. Re-run only those and tell me whether they fail again." rerun_execution → get_execution
Change someone else's test "Copy SMS 1 as SMS 2 and swap the sender and receiver. Check it is valid before you save it." clone_test_case → validate_test_case → update_test_case. The copy belongs to you, so you can change it even when you could not change the original.
Write a test from a description "Create a requirement named SMS delivery A to B: A sends an SMS to B, and B receives it within 30 seconds. Show me the draft before you approve it." create_requirement → get_requirement (while TEO writes the draft) → list_suggestions → approve_suggestion or discard_suggestion. Describe what should happen and on which devices; do not write the steps yourself.
Clean up "Delete the suite and the test case you created for this, including the run." delete_test_suite → delete_test_case. Deleting a suite that has runs is refused until you confirm, because the runs, their results and analyses are deleted with it. You can delete only your own test cases and suites, and it cannot be undone.

Files such as screenshots, SIP logs, packet captures and audio recordings come back with a download link that is valid for 15 minutes. Screenshots and SIP logs come back so the agent can read them; packet captures come back as a link only, to open in a tool such as Wireshark.

Issuing a new token

Click the blue arrows (Issue a new token, keeping this connector) and confirm. The current token stops working at once; the connector keeps its label, owner and history. The New token issued window shows the new token and the commands once, exactly as when the connector was created: run the command again on the client. Issuing a new token does not count towards the connector limit. A revoked connector cannot get a new token; create a new connector instead.

Revoking a connector

Click the red circle (Revoke, keeping the record) and confirm. Any agent using the connector stops working immediately, and the token cannot be reinstated. The connector stays in the list as Revoked, as a record that it existed.

Deleting a connector

Click the bin (Delete, record and all) and confirm. The connector is removed from the list. Deleting an active connector also stops its token at once and, unlike revoking, leaves no record.

Keep the token secret

Anyone who has the token can author and run tests as you. Keep it only in the MCP client's configuration: never paste it into a test case, a chat or a repository. Claude Code's --scope project writes it to .mcp.json, which is usually checked in, so do not use that scope. If a token may have leaked, issue a new token or revoke the connector straight away.

The same tasks are available through the MCP Connectors API.

Tools

The agent picks the tools from your prompt; you never call them by hand. In Claude Code they appear as mcp__atf__<tool name>, and /mcp shows the current list.

Lab and devices

Tool What it does Effect
list_test_nodes Test Nodes and their devices, with each device's live state Read only
list_mobile_devices Devices with phone number, platform, model and projects Read only
list_test_cases_using_device Test cases that run on one device Read only
get_mobile_device_status Live check of one device (automation and node view) Holds the device briefly

Test cases

Tool What it does Effect
list_test_cases Find test cases by name or description Read only
get_test_case One test case with its steps, devices and trace filters Read only
get_function_catalog Every test step function and its parameters Read only
validate_test_case Checks a test case or a change without saving it Read only
create_test_case Creates a test case from steps you describe Changes data
clone_test_case Copies a test case into a new one you own Changes data
update_test_case Changes the name, steps, tags, notes or trace filters of your own test case Changes data
delete_test_case Deletes your own test case and its runs Deletes data

Test suites and schedule

Tool What it does Effect
list_test_suites Find test suites by name or description Read only
get_test_suite One suite: its test cases in order, devices and schedule Read only
list_upcoming_runs Scheduled runs due in the next few hours Read only
create_test_suite Creates a suite from existing test cases Changes data
update_test_suite Renames, reorders, retags, enables or disables your own suite Changes data
delete_test_suite Deletes your own suite and all of its runs; asks for a second confirmation Deletes data

Runs and results

Tool What it does Effect
run_test_case Starts one test case on real devices Runs on devices
run_test_suite Starts a whole suite on real devices Runs on devices
rerun_execution Runs again only the test cases that failed in a past run Runs on devices
list_executions Past and running executions, newest first Read only
get_execution One execution with a result per test case; step logs on request Read only
get_execution_analysis TEO's AI analysis of why a finished run failed Read only
list_execution_artifacts Files a run produced: screenshots, packet captures, audio, SIP log Read only
get_attachment One of those files, with a link valid for 15 minutes Read only
get_screenshot A screenshot a test step took Read only

AI authoring

Tool What it does Effect
create_requirement Describes a scenario so TEO generates a draft test case Changes data
list_requirements Requirements and whether a draft is waiting Read only
get_requirement One requirement and the state of its draft Read only
list_suggestions The drafts generated for a requirement Read only
approve_suggestion Turns a draft into a real test case Changes data
discard_suggestion Rejects a draft Changes data
regenerate_suggestion Generates a new draft for a requirement Changes data

Organising and history

Tool What it does Effect
list_projects Projects that group tests, suites, nodes and devices Read only
list_tags Tags already in use, so new ones are spelled the same Read only
list_trace_filters Named MCM and XML trace filters Read only
get_changelog Who changed a test case, device or node, and when Read only
set_projects Puts a test case, suite, node, device or trace filter into projects; replaces the whole set Changes data

Troubleshooting

Most problems come from the token or from a session started before the connector was added.

What you see Likely cause What to do
atf fails to connect, or 401 Unauthorized The token is mistyped, expired, revoked or replaced by a new token Check the status on the MCP tab. Issue a new token (or create a new connector if it is revoked) and run the setup command again.
"This endpoint requires an ATF MCP connector token" The client sends a token that is not a connector token Use the atfmcp_ token from the MCP tab, not your web login.
The TEO tools do not show up The session started before the connector was added, or it was added without --scope user in another folder Start a new session. Run claude mcp list in the folder you work in.
Codex cannot authenticate ATF_MCP_TOKEN is not set in that terminal Export it again, or add it to your shell profile.
Creating a connector says you are at the limit You already hold the maximum number of active connectors Issue a new token for one you have, or revoke one.
A run is refused A device is busy, or the environment is running as many suites as it allows Ask the agent which devices are free and try again later.
The result says the devices failed to initialise A device or Test Node problem, not a test verdict Check the device and node state; contact Quadified if it persists.
The agent cannot change a test case The test case belongs to someone else Ask the agent to copy it and change the copy.
No failure analysis for a run Not every run has one, and it takes a few minutes after the run ends Ask again a few minutes later, or read the step logs.
A generated draft comes back empty The scenario was unclear, or no matching device is online Reword the scenario, or name different devices. If the agent reports VALIDATION_REJECTED, tell Quadified.

If the connector still does not work, contact Quadified support with the connector's label, the time of the error and the exact message. Never send the token itself.