界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
设计与创意 · SKILL.md

mcp-builder

mcp-builder

【设计与创意】Use when building, testing, or designing MCP (Model Context Protocol) servers to integrate external APIs and services. Covers tool design, schema validation, error handling, security, resilience patterns, and production evaluations for Python (FastMCP) and Node/TypeScript (MCP SDK) implementations.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: mcp-builder description: Use when building, testing, or designing MCP (Model Context Protocol) servers to integrate external APIs and services. Covers tool design, schema validation, error handling, security, resilience patterns, and production evaluations for Python (FastMCP) and Node/TypeScript (MCP SDK) implementations. allowed-tools: Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch metadata: triggers: MCP server, Model Context Protocol, MCP integration, FastMCP, MCP tool, MCP resource, build MCP related-skills: agentic-ai-dev, python-dev domain: backend role: specialist scope: implementation output-format: code last-reviewed: "2026-03-15"

Iron Law

Never publish an MCP server without testing all tool schemas against the MCP spec; always validate tool descriptions are >= 10 words and parameters are fully typed.

MCP Server Development Guide

Create MCP servers that enable LLMs to interact with external services through well-designed tools.

High-Level Workflow

Phase 1: Research and Plan

  • Study MCP spec from https://modelcontextprotocol.io/sitemap.xml (append .md for markdown)
  • Fetch TypeScript SDK README from https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md
  • Fetch Python SDK README from https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md
  • Load design principles, agent patterns, and error taxonomy from reference files (see table below)

Phase 2: Implement

  • Set up project structure using language-specific reference files (see table below)
  • Create shared utilities: API client, error handling, response formatting, pagination
  • For each tool: define input schema (Zod/Pydantic), output schema, description, annotations, and async implementation
  • Recommended stack: TypeScript with streamable HTTP (remote) or stdio (local)

Phase 3: Review and Test

  • Review for: no duplication, consistent error handling, full type coverage, clear tool descriptions
  • TypeScript: npm run build then test with npx @modelcontextprotocol/inspector
  • Python: python -m py_compile your_server.py then test with MCP Inspector

Phase 4: Create Evaluations

  • Create 10 complex, realistic evaluation questions requiring multiple tool calls
  • Each question must be: independent, read-only, complex, realistic, verifiable, stable
  • Output as XML with <evaluation> root containing <qa_pair> elements

Tool Implementation Checklist

For each tool, define:

  • Input schema — Zod (TypeScript) or Pydantic (Python) with constraints and descriptions
  • Output schema — Use outputSchema and structuredContent where possible
  • Description — Concise summary, parameter docs, return type
  • Annotations — readOnlyHint, destructiveHint, idempotentHint, openWorldHint
  • Implementation — Async/await, proper error handling, pagination support
  • Agent directive — Include next_actions and suggestion in every response
  • Error taxonomy — Use MCPErrorCode enum with recovery actions

Reference Files

ResourceWhen to Load
MCP Design PrinciplesPhase 1 — intent-first design, tool count limits, naming, anti-patterns
MCP Design Server PatternsPhase 1/2 — naming, response formats, pagination, transport, 3-layer architecture
MCP Design Context EfficiencyPhase 2 — tool description budget (180-token template), context efficiency, filesystem discovery
MCP Quality StandardsPhase 1 — security, annotations, testing, audit logging, MCP primitives
MCP Quality CompliancePhase 2 — SOC2/GDPR/PCI compliance flags, canonical scorer delegation
MCP Quality VersioningPhase 2 — tool versioning, breaking changes, canary rollouts
Agent Design Patterns — CorePhase 1 — patterns 1-5: directive, confidence, error, disclosure, linking
Agent Design Patterns — AdvancedPhase 2 — patterns 6-10: idempotency, context carryover, circuit breaker, audit trail
Agent Design Patterns — DomainPhase 2 — domain presets (payment, healthcare, e-commerce), tool consolidation
Error TaxonomyPhase 1 — error codes, recovery hints, no-fake-empty-data
Branded Types & AuditPhase 2 — type-safe IDs, Zod integration, audit logging
TypeScript SetupPhase 2 — project structure, package config, build
TypeScript PatternsPhase 2 — tool naming, Zod schemas, tool structure
TypeScript Patterns AdvancedPhase 2 — response formats, pagination, error handling, utilities
TypeScript AdvancedPhase 2 — complete example, resources, transport
Python SetupPhase 2 — Python SDK, tool structure, Pydantic
Python PatternsPhase 2 — pagination, errors, complete example
Python AdvancedPhase 2 — context, resources, lifespan, quality
Resilience CorePhase 2 — circuit breaker, bulkhead, rate limiter, retry strategy
Resilience Caching & PoolPhase 2 — rate limiter, retry, LRU caching
Resilience ProductionPhase 2 — connection pool, composing patterns, loop detection
Security CorePhase 2 — SecurityManager, attack patterns (SQL/XSS/path traversal/command injection)
Security Middleware & AttacksPhase 2 — middleware integration, prompt injection, brute force, SSRF
Security PII & CompliancePhase 2 — PII tokenization, testing, CI/CD pipeline, security checklist
Observability TracingPhase 2 — OpenTelemetry setup, custom MCP spans, 6-metric pyramid
Observability MetricsPhase 2 — metrics collection, sampling strategies
Observability MonitoringPhase 2 — integration example, post-deployment health targets, alert tiers, cost reduction
Production Runtime — Shutdown & HealthPhase 2 — graceful shutdown, K8s health checks
Production Runtime — Multi-TenantPhase 2 — AsyncLocalStorage context, quotas, audit
Production Infrastructure DockerPhase 2 — Docker multi-stage build, docker-compose, Kubernetes manifests
Production Infrastructure StructurePhase 2 — 3-layer folder structure, layer responsibilities
Evaluation CriteriaPhase 4 — question/answer design
Evaluation RunningPhase 4 — CLI, setup, troubleshooting

Common Mistakes

  • Scoring/ranking logic in MCP layer — MCP tools are API entry points only. All business logic (scoring, filtering, matching) belongs in an upstream service. See reference/mcp-quality-compliance.md.
  • Exceeding 25 tools — Agent decision accuracy degrades sharply past 25 tools. Consolidate by user intent, not by API endpoint. See reference/mcp-design-principles.md.
  • Missing next_actions in responses — Every tool response must include next_actions (machine-readable) and suggestion (human-readable) or agents stall. No exceptions.
  • Returning empty list/null on error — Never return [] or null as a silent fallback. Return a structured MCPErrorCode error so the agent knows what failed and how to recover.
  • Tool descriptions written for developers — "Executes POST /api/v1/vendors" tells an LLM nothing. Write for the agent: "USE WHEN: Finding service vendors for a property. EXAMPLES: ..."

Error Handling

For the full error taxonomy and circuit breaker patterns, Read reference/error-taxonomy.md

Server startup failures: Validate all required environment variables at startup. Fail fast with a clear error message — never silently fall back to defaults.

Tool execution errors: Return structured MCP error responses with error codes. Never let unhandled exceptions crash the server.

// ✅ Required pattern — structured error, never silent failure
server.registerTool('search_vendors', { ... }, async (args) => {
  try {
    const results = await upstreamClient.search(args);
    return {
      content: [{ type: 'text', text: JSON.stringify({
        data: results,
        next_actions: ['vendor_get_details', 'vendor_request_quote'],
        suggestion: `Found ${results.length} vendors. Call vendor_get_details for full profiles.`,
      })}]
    };
  } catch (error) {
    return {
      isError: true,
      content: [{ type: 'text', text: JSON.stringify({
        code: 'SERVICE_UNAVAILABLE',
        message: error.message,
        retry_after_ms: 5000,
        recovery_actions: ['retry_search', 'use_cached_results'],
        fallback_tool: 'search_vendors_cached',
      })}]
    };
  }
});

Verify

Before publishing any MCP server:

  • npm run build exits 0 (TypeScript) or python -m py_compile server.py exits 0 (Python)
  • npx @modelcontextprotocol/inspector <entrypoint> — all tools listed with correct schemas
  • All tool descriptions are ≥ 10 words
  • All input parameters are fully typed (no any in TypeScript, no untyped dict in Python)
  • Every tool response includes next_actions and suggestion fields
  • npm test (or uv run pytest) exits 0 with coverage thresholds met
  • No unhandled exceptions — all errors return structured MCPErrorCode responses
  • Security checklist in reference/security-core.md reviewed
我的收藏