← all servers

example-servers/puppeteer

v0.1.0 · 7 tools · source

[ tools: 7 ][ checks: 12 ][ latency: 4ms ]
82/100(B)
npx -y @modelcontextprotocol/server-puppeteer

check breakdown

Tools exposedServer exposed 7 tools.
• puppeteer_navigate
• puppeteer_screenshot
• puppeteer_click
• puppeteer_fill
• puppeteer_select
• puppeteer_hover
• puppeteer_evaluate
Input schemas validAll tools have a valid JSON-Schema input definition.
!Input schema quality7 schema-quality issue(s) across 7 tool(s).
puppeteer_navigate: inputSchema.additionalProperties is not set to false (extra args pass through silently)
puppeteer_screenshot: inputSchema.additionalProperties is not set to false (extra args pass through silently)
puppeteer_click: inputSchema.additionalProperties is not set to false (extra args pass through silently)
puppeteer_fill: inputSchema.additionalProperties is not set to false (extra args pass through silently)
puppeteer_select: inputSchema.additionalProperties is not set to false (extra args pass through silently)
puppeteer_hover: inputSchema.additionalProperties is not set to false (extra args pass through silently)
puppeteer_evaluate: inputSchema.additionalProperties is not set to false (extra args pass through silently)
Declare `required` for every schema that has properties, so agents know which params are mandatory.
Give every property a `description` and a concrete `type` (avoid bare `{}` placeholders).
Set `additionalProperties: false` on the top-level inputSchema so models can't silently pass extra, unvalidated arguments.
!Output schemasNo tools declare an outputSchema.
Optional: declare outputSchema for tools with structured results so agents can validate/parse output reliably.
Duplicate tool namesAll tool names are unique.
Tool namingAll tool names use spec-legal characters.
!Descriptions2 description issue(s) found.
puppeteer_navigate: description very short ("Navigate to a URL")
puppeteer_fill: description very short ("Fill out an input field")
Descriptions are the model's only guide to when/how to call a tool — treat them as prompt engineering.
Describe every tool and every parameter, including units, formats, and constraints.
Each tool's description should say something the name doesn't, and should be unique to that tool.
!Tool annotationsAnnotation coverage 0% (0/35 hint fields set).
• puppeteer_navigate: no annotations at all
• puppeteer_screenshot: no annotations at all
• puppeteer_click: no annotations at all
• puppeteer_fill: no annotations at all
• puppeteer_select: no annotations at all
• puppeteer_hover: no annotations at all
• puppeteer_evaluate: no annotations at all
Add annotations: title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint.
These let clients gate risky calls and give agents/users a friendly display name — optional but valuable.
!Tool titles7 of 7 tool(s) have no title.
• puppeteer_navigate: no top-level title (or annotations.title)
• puppeteer_screenshot: no top-level title (or annotations.title)
• puppeteer_click: no top-level title (or annotations.title)
• puppeteer_fill: no top-level title (or annotations.title)
• puppeteer_select: no top-level title (or annotations.title)
• puppeteer_hover: no top-level title (or annotations.title)
• puppeteer_evaluate: no top-level title (or annotations.title)
Declare a top-level `title` on each tool — it gives clients a friendly display name distinct from the machine-readable `name`.
`annotations.title` (the older location) is also accepted, but the top-level `title` field is now the spec-preferred place for it.
!Server instructionsNo top-level instructions declared.
Declare instructions to guide agents on when/how to use this server.
Return a non-empty `instructions` string in your InitializeResult — most SDKs let you set this alongside serverInfo.
Handshake + list latencytools/list responded in 4ms.
!Resources1 resource-quality issue(s) across 1 resource(s) and 0 template(s).
console://logs: no description or title
Give every resource a name, a valid uri, a description or title, and a mimeType.
Give every resource template a name, a description or title, a uriTemplate with at least one {variable} placeholder, and a mimeType.
mimeType is advisory but helps agents decide how to handle the resource content.

add the badge

Paste into your README:

[![scoremcp](https://scoremcp.dev/badge/server-puppeteer)](https://scoremcp.dev/servers/server-puppeteer)
[ scoremcp v0.4.0 ] [ 35 servers indexed ] [ static · side-effect-free ]