npm api-test-mcpstdioMITupdated 8d ago
An MCP server that gives Claude Code, Cursor, Windsurf, or any MCP-compatible AI agent the ability to actually call your API and check the response against what your OpenAPI spec promises — not just read the docs and guess.
api test mcp 能做什么?
api-test-mcp
An MCP server that gives Claude Code, Cursor, Windsurf, or any MCP-compatible AI agent the ability to actually call your API and check the response against what your OpenAPI spec promises — not just read the docs and guess.
No API keys, no config, no cost. Works with any OpenAPI/Swagger 3.x spec (URL or local file).
Why this exists
AI agents are great at reading an OpenAPI spec and writing code against it — but they're guessing about whether the real API actually behaves the way the spec says. This gives an agent (or you, in a normal chat) a way to find out for real: call the live endpoint, and check whether the response actually matches the documented schema.
Install
git clone <this repo>
cd api-test-mcp
npm install
Add it to your MCP client config, e.g. for Claude Code:
claude mcp add api-test -- node /absolute/path/to/api-test-mcp/src/index.js
Or in claude_desktop_config.json / Cursor's MCP settings:
{
"mcpServers": {
"api-test": {
"command": "node",
"args": ["/absolute/path/to/api-test-mcp/src/index.js"]
}
}
}
Tools
| Tool | What it does |
|---|---|
load_api_spec |
Load and dereference an OpenAPI/Swagger spec from a URL or local path. Returns the API title, servers, and every documented endpoint. Call this first. |
list_endpoints |
List every endpoint currently loaded. |
call_endpoint |
Make a real HTTP call to a documented endpoint. Returns the real status, headers, and body. |
validate_response |
Check a response body against the JSON schema documented for a given method + path + status. |
test_endpoint |
call_endpoint + validate_response in one step. The main tool — "does this endpoint actually work as documented?" |
run_all_tests |
Best-effort contract-test pass across every GET endpoint that needs no required parameters. Pass includeMutating: true to also auto-generate example params/bodies from the schema and attempt POST/PUT/PATCH (off by default — it can write real data). Endpoints still needing manual input are listed as skipped, with the reason. |
check_health |
One-shot ping across a set of endpoints (or every parameter-free GET in the loaded spec): reports reachability and latency. Handy before a demo or as a CI step. |
diff_api_specs |
Compare two versions of a spec (e.g. an old tag vs. main) and flag likely-breaking changes — removed endpoints, newly-required fields, type changes, removed enum values — versus safe additive changes. |
All of the above accept an optional auth preset (bearer, apiKey in a header or query param, or basic) so authenticated APIs aren't limited to hand-building raw headers, and an optional timeoutMs.
Example (what an agent conversation looks like)
You: Load my API spec at
https://api.example.com/openapi.jsonand check whether/users/{id}actually returns what it documents.Agent: (calls
load_api_spec, thentest_endpointwith a real user id) → "Called it — got a 200, but the response is missing thecreated_atfield your spec marks as required, androleis documented as an enum of 3 values but the API returned"superadmin", which isn't one of them."
For an authenticated API:
You: Run a full contract-test pass against my staging API using this bearer token, and include the write endpoints.
Agent: (calls
run_all_testswith{ auth: { type: "bearer", token: "..." }, includeMutating: true }) → "12 passed, 2 failed, 3 skipped.POST /ordersfailed schema validation —total_centscame back as a string, not the integer your spec documents."
Tested against real live traffic
npm test runs three real, unmocked checks, no canned fixtures pretending to be a server:
test/smoke-test.js— loads a spec, makes real HTTPS calls to a live public API, validates the real response, and deliberately feeds in a broken response to confirm validation actually catches mismatches (not just a happy-path check).test/new-features-test.js— auth presets applied to a real outgoing request URL, a real network timeout/abort, a real health-check call, and deterministic offline tests for the spec-diff logic.test/mcp-protocol-test.js— spawns the actual MCP server as a subprocess and talks to it over the real MCP protocol, the same way Claude Code or Cursor would.
CI runs the full suite on every push/PR against Node 18, 20, and 22.
Roadmap
v1.0 shipped contract testing, auth presets, auto-generated example data for mutating endpoints, spec diffing, and health checks. Ideas for what's next:
- YAML output mode / a small CLI wrapper for non-MCP use
- Configurable retry/backoff for flaky endpoints in
run_all_testsandcheck_health - Pattern-aware example generation (respect JSON Schema
patterninstead of a placeholder string) - Persisted health-check history (currently one-shot only)
Contributions welcome — see CONTRIBUTING.md. See an endpoint type or spec quirk this doesn't handle well? Open an issue.
License
MIT
安装
把 api test mcp 添加到你的客户端。选择你正在使用的那个。
claude mcp add api-test-mcp -- npx -y api-test-mcpcodex mcp add api-test-mcp -- npx -y api-test-mcpamp mcp add api-test-mcp -- npx -y api-test-mcp{
"mcpServers": {
"api-test-mcp": {
"command": "npx",
"args": [
"-y",
"api-test-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"api-test-mcp": {
"command": "npx",
"args": [
"-y",
"api-test-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"api-test-mcp","command":"npx","args":["-y","api-test-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"api-test-mcp": {
"command": "npx",
"args": [
"-y",
"api-test-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"api-test-mcp": {
"command": "npx",
"args": [
"-y",
"api-test-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"api-test-mcp": {
"command": "npx",
"args": [
"-y",
"api-test-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"api-test-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"api-test-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"api-test-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"api-test-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y api-test-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
8 个工具
api test mcp 向已连接的智能体提供 8 个工具。
- load_api_spec
- Load and dereference an OpenAPI/Swagger spec from a URL or local path. Returns the API title, servers, and every documented endpoint. Call this first.
- list_endpoints
- List every endpoint currently loaded.
- call_endpoint
- Make a real HTTP call to a documented endpoint. Returns the real status, headers, and body.
- validate_response
- Check a response body against the JSON schema documented for a given method + path + status.
- test_endpoint
- `call_endpoint` + `validate_response` in one step. The main tool — "does this endpoint actually work as documented?"
- run_all_tests
- Best-effort contract-test pass across every GET endpoint that needs no required parameters. Pass `includeMutating: true` to also auto-generate example params/bodies from the schema and attempt POST/PUT/PATCH (off by default — it can write real data). Endpoints still needing manual input are listed as skipped, with the reason.
- check_health
- One-shot ping across a set of endpoints (or every parameter-free GET in the loaded spec): reports reachability and latency. Handy before a demo or as a CI step.
- diff_api_specs
- Compare two versions of a spec (e.g. an old tag vs. `main`) and flag likely-breaking changes — removed endpoints, newly-required fields, type changes, removed enum values — versus safe additive changes.
评分
75 / 100
良好
- 文档25/25
- 维护19/25
- 可信度13/20
- 能力6/15
- 安装体验12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 0 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 8 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
版本历史
| 版本 | 发布于 |
|---|---|
| 1.0.2最新 | 2026年8月31日 |
| 1.0.1 | 2026年8月31日 |