com.validoria/validoria-mcp
Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.
Open source Repository Open in the app JSON README (API)
About
Continuous website testing by Validoria — monitor security, SEO, performance, and accessibility.
Details
- Kind
- MCP servers
- Topic
- Developer tools
- Publisher
- com.validoria
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 2.0.1
- Added
- 2026-08-29 03:01:26
- Updated
- 2026-09-13 03:10:10
- Origin id
com.validoria/validoria-mcp
README
# teste-no-mcp
MCP (Model Context Protocol) server for [Teste.no](https://teste.no) — a continuous testing control center for websites, APIs, and webshops.
This package is a **thin stdio client** that connects Cursor, Claude, or any MCP-compatible host to your Teste.no instance via the tRPC API. It does **not** embed a database or queue — it calls your Teste.no API over HTTP with a Bearer token.
## Quick start
### 1. Create an API token
In Teste.no, go to **Settings → API Keys** and create a token with the scopes you need:
- `read` — list targets, findings, incidents, runs, stats
- `write` — trigger tests, manage incidents, record deployments
- `admin` — create/update/delete targets, muting rules, system health
### 2. Configure Cursor
Add to `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"teste-no": {
"command": "npx",
"args": ["-y", "teste-no-mcp"],
"env": {
"TESTE_NO_API_URL": "http://localhost:4207",
"TESTE_NO_API_KEY": "tno_<your-api-key>"
}
}
}
}
```
### 3. Verify connectivity
```bash
TESTE_NO_API_URL=http://localhost:4207 \
TESTE_NO_API_KEY=tno_xxx \
npx -y teste-no-mcp verify
```
Or from the package directory:
```bash
npm run verify
```
## Environment variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `TESTE_NO_API_KEY` | Yes | — | API token (prefix `tno_`) from Settings → API Keys |
| `TESTE_NO_API_URL` | No | `http://localhost:4207` | Base URL of the Teste.no API server |
## Available tools (30)
### Read tools (16)
| Tool | Description |
|------|-------------|
| `list_targets` | List monitoring targets with status and uptime |
| `get_target` | Target details including composite scores |
| `get_target_scores` | Security/SEO/Performance/Accessibility scores (0-100) |
| `list_findings` | Open issues, filter by severity/target/status |
| `get_finding` | Finding detail with evidence and AI analysis |
| `list_incidents` | Grouped operational issues |
| `get_incident` | Incident detail with linked findings and deployment correlation |
| `list_runs` | Recent test runs, filter by target/status/slug |
| `get_run` | Run detail with metrics, score, and findings |
| `active_runs` | Currently running and queued tests |
| `team_stats` | Team-wide overview stats |
| `target_stats` | Per-target statistics |
| `daily_trends` | Time-series data for trend analysis (up to 90 days) |
| `get_site_map` | Latest crawl snapshot with page inventory and SEO issues |
| `list_maintenance_windows` | Scheduled maintenance windows for a target |
| `list_tests` | All 43 available test definitions (plugins) |
### Write tools (9)
| Tool | Description |
|------|-------------|
| `trigger_test` | Run a specific test by slug or ID |
| `trigger_all_tests` | Fan-out scan of all enabled tests for a target |
| `acknowledge_incident` | Mark an incident as acknowledged |
| `resolve_incident` | Resolve an incident |
| `mute_finding` | Mute an open finding |
| `create_maintenance_window` | Schedule alert suppression window |
| `delete_maintenance_window` | Remove a maintenance window |
| `record_deployment` | Track a deployment for incident correlation |
| `recompute_scores` | Force recompute composite scores |
### Admin tools (5)
| Tool | Description |
|------|-------------|
| `create_target` | Add a new website/API/webshop target |
| `update_target` | Update target properties |
| `delete_target` | Permanently delete a target |
| `create_muting_rule` | Auto-mute findings by pattern |
| `system_health` | Platform health report (queues, stuck runs, stats) |
> Admin tools require `admin` scope **and** the token owner must be in ADVANCED UI mode.
## Bundled Cursor rule
The package includes a `.cursor/rules/teste-no-mcp.mdc` file that teaches agents when to call which tools. Install it globally:
```bash
npx -y teste-no-mcp install-cursor-rule
```
Or copy it manually to your project's `.cursor/rules/` directory.
## ChatGPT / MCP App (OAuth)
Teste.no also works as a **ChatGPT MCP App** via Streamable HTTP with OAuth 2.1.
1. In ChatGPT, go to **Settings → Connected apps → Developer Mode**
2. Enter the MCP endpoint: `https://api.teste.no/api/mcp`
3. ChatGPT discovers the OAuth server via `/.well-known/oauth-protected-resource`
4. Sign in with your Teste.no email and password
5. Approve access on the consent page
ChatGPT uses Dynamic Client Registration (PKCE). No API key needed — authentication
is handled via OAuth tokens. See [`docs/mcp-chatgpt.md`](https://github.com/kaduno/teste.no/blob/main/docs/mcp-chatgpt.md) for details.
## Architecture
```
┌──────────────┐ stdio (JSON-RPC) ┌──────────────────┐
│ Cursor IDE │ ◄──────────────────────► │ teste-no-mcp │
│ (MCP host) │ │ (this package) │
└──────────────┘ └────────┬─────────┘
│ HTTP + Bearer
▼
┌──────────────────┐
│ Teste.no API │
│ (Fastify+tRPC) │
└────────┬─────────┘
│
┌───────┴───────┐
│ PostgreSQL │
│ Redis+BullMQ │
└───────────────┘
```
The MCP package is a **zero-dependency client** (only `@modelcontextprotocol/sdk` and `zod`). All business logic, authorization, and data access happen in the Teste.no API.
## Development (monorepo)
If developing inside the teste.no monorepo:
```bash
cd packages/teste-no-mcp
pnpm install
pnpm dev # tsx watch mode
```
## Publishing
```bash
cd packages/teste-no-mcp
npm version patch # or minor/major
npm publish
```
The `prepare` script runs `tsc` before publish to ensure `dist/` is built.
## License
MIT