QAmcp GitHub

How to test an MCP server

An MCP server works when an AI app can connect to it, understand its tools, use them correctly, and stay safe while doing it. This checklist covers each of those, in the order that catches the most problems first. Every step can be checked by hand, and all of them run automatically in a free test.

Last updated: 26 October 2026

Sheet 2 of 4 · The checklist

Six steps, from "does it answer" to "is it safe"

The examples below are real results from our test server, which is broken on purpose. You can run the same test yourself with npx qamcp-cli --demo.

  1. Check that it connects the way an AI app doesAn AI app first connects and agrees on an MCP version, then asks for the list of tools. If either step fails, nothing else matters. Check that the link is the real MCP address (often ending in /mcp), that it answers on the current connection type rather than only the old SSE one, and that a local server prints nothing but MCP messages on stdout, since stray log lines break the connection.
  2. Read every tool description as the AI willThe AI picks tools from their names and descriptions alone. A missing description, an input with no explanation, or two tools that read almost the same make it guess, and a guessing AI picks the wrong tool. ✕ slow_report: has no description, so the AI has to guess what it does
  3. Check the safety labelsTools can say whether they only read (readOnlyHint), can destroy something (destructiveHint), are safe to repeat (idempotentHint), or reach outside services (openWorldHint). AI apps use these to decide when to ask the user first. Check that each tool has them, and that they agree with the tool's name and description. A tool called delete_account that isn't marked dangerous is a problem. ! delete_account: name sounds like it deletes something, but it is not labeled dangerous
  4. Look for hidden instructionsA tool description can contain text aimed at the AI rather than at you, such as an <IMPORTANT> block telling it to read private files or keep something from the user. This is known as tool poisoning. Read descriptions in full, including input descriptions, and watch for invisible characters. ✕ fetch_notes: Description contains hidden <IMPORTANT> block. This is a known trick to make AI do things the user didn't ask for.
  5. Try bad inputs and read every errorCall each safe tool once with sensible inputs, then with a required input missing and with the wrong type. A good tool answers the first and refuses the others with a clear message. Read those error messages closely: they should never show passwords, API keys, stack traces or server file paths. ✕ search_users: error message shows what looks like a database password in a link
  6. Test again on every changeServers break quietly: a renamed input, a removed label, a slow dependency. Run the same checks before each commit and on every pull request, and compare with the last run so any tool that changed is shown with the exact lines.

Run all six automatically

Paste the server link on the test page, or run it from a terminal. Only tools labeled read-only are run, and nothing is sent anywhere but the server.

Sheet 3 of 4 · Ways to test

Four ways to test an MCP server

Test an MCP server online

For a server on the internet, paste its link on the QAmcp test page and press Test it. The checks fill in while you watch, and you get a report link you can share. Nothing to install, no account. Only tools labeled read-only are run.

Test an MCP server locally

A server that runs on your own computer (stdio) can't be reached from a website, so test it from your terminal. QAmcp starts the program and checks it the same way, including that it prints nothing but MCP messages:

npx qamcp-cli --stdio "npm start"

A local server that listens on a port works with its link instead, like npx qamcp-cli http://localhost:3000/mcp. For local servers on a port, QAmcp also checks that they refuse requests from other websites, which the MCP spec requires.

Test an MCP server with MCP Inspector

MCP Inspector is the official tool from the MCP project. Start it with npx @modelcontextprotocol/inspector, connect to your server, and you can list its tools and call each one yourself with any inputs you like. It's the best way to explore a server and debug one tool at a time.

An automatic test does the opposite job: the same checks every time, a score, and a clear list of what failed, so you can run it on every change without clicking through each tool. Use Inspector to investigate, and an automatic test to make sure nothing broke.

Test an MCP server with curl

To check that a remote server answers at all, send it the first message every MCP app sends, initialize:

curl -X POST https://your-server.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

A working server answers with its name, version and the features it supports. If it sends back an Mcp-Session-Id header, include that header in your next requests, such as tools/list. curl shows that the server answers; it doesn't tell you whether an AI can use the tools well. That's what the checklist above is for.

Sheet 4 of 4 · Questions

Questions

Is it safe to test someone else's MCP server?

In QAmcp's default safe mode, only tools the server labels read-only are run, tools that sound destructive are never run, and nothing is sent anywhere except to the server being tested. For a server you don't trust at all, --look-only calls no tools.

Do I need an account to test an MCP server?

No. The browser test and the command npx qamcp-cli are free and need no account or sign-up.

Can I test a local stdio MCP server?

Yes, from the terminal: npx qamcp-cli --stdio "your start command". The browser test only reaches servers on the internet.

What about servers that need a login?

Add --login to sign in through your browser, or --header with an API key. On the website, choose "It needs a login". Login tokens are used for that one test and not kept.

How is this different from MCP Inspector?

MCP Inspector lets you connect and call tools by hand, which is ideal for exploring and debugging. QAmcp runs a fixed set of checks automatically and gives a score you can repeat on every change. They work well together.