mcp-builder — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mcp-builder (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
A bulleted imperative like {match} tells the agent to never reveal, disclose, or mention something to the user. Used adversarially it can instruct the agent to hide its tool calls or lie about what it did — stripping the transparency a user relies on to trust the agent.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The Model Context Protocol is the wiring that lets an AI system reach external tools and data through a stable contract. A well-built server makes that contract obvious; a poorly built one leaves the model guessing. The notes below are about getting the design right.
A server exposes some mix of three things:
| Block | What it gives the model |
|---|---|
| Tools | Functions it can call to act |
| Resources | Data it can read |
| Prompts | Reusable prompt templates |
my-server/
├── src/
│ └── index.ts # entry — McpServer from the TS SDK
├── package.json # depends on @modelcontextprotocol/sdk
└── tsconfig.jsonThe TypeScript SDK is @modelcontextprotocol/sdk, which exports McpServer. The Python SDK is the mcp package — install it with pip install "mcp[cli]", and reach for FastMCP from mcp.server.fastmcp.
| Transport | Where it fits |
|---|---|
| stdio | Local processes, CLI-launched servers |
| Streamable HTTP | Remote and web-hosted servers (this superseded the old HTTP+SSE transport) |
The current spec (revision 2025-06-18) standardizes exactly these two. WebSocket is not a standard transport. On any Streamable HTTP server, check the Origin header before trusting a request.
| Trait | What it means |
|---|---|
| Verb-first name | fetch_invoice, archive_thread — the action is in the name |
| One job | It does a single thing and does it cleanly |
| Typed input | A schema with types and per-field descriptions |
| Predictable output | A consistent, parseable result shape |
| Piece | Needed? |
|---|---|
| Top-level type | Yes — object |
| Properties | Define every parameter |
| Required list | Name the mandatory ones |
| Descriptions | Write them for a human reader |
| Kind | When to use it |
|---|---|
| Static | Data that doesn't change — config, docs |
| Dynamic | Produced fresh on each request |
| Templated | A URI carrying parameters |
| Shape | Example |
|---|---|
| Fixed | docs://changelog |
| Parameterized | tickets://{ticketId} |
| Collection | assets://project/* |
| Situation | Response |
|---|---|
| Bad input | A validation message that says what's wrong |
| Missing target | A plain "not found" |
| Internal failure | A generic error to the caller, full detail to the log |
| Type | How it's carried |
|---|---|
| Text | Plain text |
| Image | Base64 plus a MIME type |
| File | Base64 plus a MIME type |
| Field | Purpose |
|---|---|
| command | The executable to launch (stdio servers) |
| args | Arguments passed to it |
| env | Environment variables to set |
MCP is host-agnostic: one server works the same across desktop assistants, coding tools, and IDE hosts. A remote Streamable HTTP server authenticates over OAuth instead of being launched by a local command.
From revision 2025-06-18, these earn their place in a modern server:
| Feature | What it buys you |
|---|---|
| Tool annotations | Signal read-only versus destructive behavior to the host |
outputSchema / structured content | Typed, predictable results |
| Resource links | Hand back references to resources from a tool result |
| OAuth | Authentication for remote / Streamable HTTP servers |
| Layer | What it checks |
|---|---|
| Unit | The logic inside a tool |
| Integration | The server end to end |
| Contract | Schemas match what's promised |
The model leans entirely on your descriptions to call a tool correctly. Keep each tool small, single-purpose, and thoroughly documented, and it will use them well.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.