MCP Evaluator
Perform a three-phase audit of an MCP server and produce a structured report with scored findings and actionable fixes.
Preparation
Collect these artifacts from the MCP being evaluated:
- Source code —
src/or main implementation files (TypeScript, Python, etc.) - Tool definitions — where tools are registered (e.g.,
src/index.ts,server.py) - Configuration —
mcp.jsonor.env.exampleor equivalent - Package manifest —
package.json/requirements.txt/pyproject.toml - Companion skill —
~/.copilot/skills/<mcp-name>/SKILL.mdif it exists
Load the two reference checklists:
references/mcp-rai-checklist.mdreferences/mcp-quality-checklist.md
Evaluation Workflow
Phase 1 — Security & Privacy (OWASP / RAI)
Evaluate against references/mcp-rai-checklist.md.
Sections:
- Credential & Secret Handling
- PII and Data Privacy
- Destructive Operations Safety
- Injection & SSRF Risks
- Authentication & Token Security
Score each section: PASS / PARTIAL / FAIL Quote exact file + line number as evidence where possible.
Phase 2 — Technical Quality
Evaluate against references/mcp-quality-checklist.md.
Sections:
- Tool Design (descriptions, parameters, types)
- Error Handling
- Companion Skill existence
- Dependencies & Supply Chain
- Logging & Observability
Score each section: PASS / PARTIAL / FAIL
Phase 3 — Accountability
| Check | Score | Evidence |
|---|---|---|
| License field in package manifest | - | - |
| Source code in public/private repo | - | - |
| Changelog or version tracking | - | - |
| Author / maintainer contact | - | - |
Report Format
# MCP Audit Report: <mcp-name>
**Date**: <today>
**Auditor**: GitHub Copilot (mcp-evaluator)
**Source analyzed**: <files read>
---
## Phase 1: Security & Privacy
| Section | Score | Evidence |
|---------|-------|----------|
| Credential & Secret Handling | PASS/PARTIAL/FAIL | <file:line or description> |
| PII and Data Privacy | ... | ... |
| Destructive Operations Safety | ... | ... |
| Injection & SSRF Risks | ... | ... |
| Authentication & Token Security | ... | ... |
**Security Score**: X/5 passing
---
## Phase 2: Technical Quality
| Section | Score | Evidence |
|---------|-------|----------|
| Tool Design | PASS/PARTIAL/FAIL | ... |
| Error Handling | ... | ... |
| Companion Skill | ... | ... |
| Dependencies & Supply Chain | ... | ... |
| Logging & Observability | ... | ... |
**Quality Score**: X/5 passing
---
## Phase 3: Accountability
| Check | Score | Evidence |
|-------|-------|----------|
| License | PASS/PARTIAL/FAIL | ... |
| Source repo | ... | ... |
| Version tracking | ... | ... |
| Maintainer | ... | ... |
---
## Overall Verdict
**SAFE TO USE** / **NEEDS FIXES** / **SECURITY RISK**
---
## Blockers (must fix before deploying)
<FAIL findings only>
## Recommendations (non-blocking)
<PARTIAL findings and improvement suggestions>
Grading Rules
- PASS: Criterion fully met with clear evidence.
- PARTIAL: Partially met — issue present but not severe.
- FAIL: Clear violation or complete absence of a required security control.
Overall verdict logic:
- Any FAIL in Phase 1 → SECURITY RISK (stop, fix before any use)
- Any FAIL in Phase 2 → NEEDS FIXES
- All PASS or PARTIAL → SAFE TO USE
Notes
- When reading source files, search for:
token,key,secret,password,credential,apiKey,Bearerto detect potential secret exposure. - For TypeScript MCPs, the tool registration is typically in
src/index.tsorsrc/tools/. - If no companion SKILL.md exists and the MCP performs consequential actions (publishing, sending, deleting), flag as PARTIAL under both Destructive Operations Safety and Companion Skill.
- Do not penalize MCPs that correctly use environment variables (
process.env.TOKEN) for credentials — that is the correct pattern.