Mcp Server Builder
Design and ship production-ready MCP (Model Context Protocol) servers from OpenAPI contracts instead of hand-written tool wrappers. Python and TypeScript support, schema validation, safe evolution....
Design and ship production-ready MCP (Model Context Protocol) servers from OpenAPI contracts instead of hand-written tool wrappers. Python and TypeScript support, schema validation, safe evolution. Use when exposing an existing API as an MCP server, building tool integrations for Claude or Codex or Cursor, or scaffolding an MCP project from scratch.
Install
Quick install
npx skills add https://github.com/alirezarezvani/claude-skills/tree/main/engineering/skills/mcp-server-buildernpx skills add alirezarezvani/claude-skills --skill mcp-server-builder --agent claude-codenpx skills add alirezarezvani/claude-skills --skill mcp-server-builder --agent cursornpx skills add alirezarezvani/claude-skills --skill mcp-server-builder --agent codexnpx skills add alirezarezvani/claude-skills --skill mcp-server-builder --agent opencodenpx skills add alirezarezvani/claude-skills --skill mcp-server-builder --agent github-copilotnpx skills add alirezarezvani/claude-skills --skill mcp-server-builder --agent windsurfMore install options
Shorthand — useful for multi-skill repos:
npx skills add alirezarezvani/claude-skills --skill mcp-server-builderManual — clone the repo and drop the folder into your agent's skills directory:
git clone https://github.com/alirezarezvani/claude-skills.gitcp -r claude-skills/engineering/skills/mcp-server-builder ~/.claude/skills/MCP Server Builder
Tier: POWERFUL
Category: Engineering
Domain: AI / API Integration
Overview
Use this skill to design and ship production-ready MCP servers from API contracts instead of hand-written one-off tool wrappers. It focuses on fast scaffolding, schema quality, validation, and safe evolution.
The workflow supports both Python and TypeScript MCP implementations and treats OpenAPI as the source of truth.
Core Capabilities
- Convert OpenAPI paths/operations into MCP tool definitions
- Generate starter server scaffolds (Python or TypeScript)
- Enforce naming, descriptions, and schema consistency
- Validate MCP tool manifests for common production failures
- Apply versioning and backward-compatibility checks
- Separate transport/runtime decisions from tool contract design
When to Use
- You need to expose an internal/external REST API to an LLM agent
- You are replacing brittle browser automation with typed tools
- You want one MCP server shared across teams and assistants
- You need repeatable quality checks before publishing MCP tools
- You want to bootstrap an MCP server from existing OpenAPI specs
Key Workflows
1. OpenAPI to MCP Scaffold
- Start from a valid OpenAPI spec.
- Generate tool manifest + starter server code.
- Review naming and auth strategy.
- Add endpoint-specific runtime logic.
python3 scripts/openapi_to_mcp.py \
--input openapi.json \
--server-name billing-mcp \
--language python \
--output-dir ./out \
--format text
Supports stdin as well:
cat openapi.json | python3 scripts/openapi_to_mcp.py --server-name billing-mcp --language typescript
2. Validate MCP Tool Definitions
Run validator before integration tests:
python3 scripts/mcp_validator.py --input out/tool_manifest.json --strict --format text
Checks include duplicate names, invalid schema shape, missing descriptions, empty required fields, and naming hygiene.
3. Runtime Selection
- Choose Python for fast iteration and data-heavy backends.
- Choose TypeScript for unified JS stacks and tighter frontend/backend contract reuse.
- Keep tool contracts stable even if transport/runtime changes.
4. Auth & Safety Design
- Keep secrets in env, not in tool schemas.
- Prefer explicit allowlists for outbound hosts.
- Return structured errors (
code,message,details) for agent recovery. - Avoid destructive operations without explicit confirmation inputs.
5. Versioning Strategy
- Additive fields only for non-breaking updates.
- Never rename tool names in-place.
- Introduce new tool IDs for breaking behavior changes.
- Maintain changelog of tool contracts per release.
Script Interfaces
python3 scripts/openapi_to_mcp.py --help- Reads OpenAPI from stdin or
--input - Produces manifest + server scaffold
- Emits JSON summary or text report
python3 scripts/mcp_validator.py --help- Validates manifests and optional runtime config
- Returns non-zero exit in strict mode when errors exist
Common Pitfalls
- Tool names derived directly from raw paths (
get__v1__users___id) - Missing operation descriptions (agents choose tools poorly)
- Ambiguous parameter schemas with no required fields
- Mixing transport errors and domain errors in one opaque message
- Building tool contracts that expose secret values
- Breaking clients by changing schema keys without versioning
Best Practices
- Use
operationIdas canonical tool name when available. - Keep one task intent per tool; avoid mega-tools.
- Add concise descriptions with action verbs.
- Validate contracts in CI using strict mode.
- Keep generated scaffold committed, then customize incrementally.
- Pair contract changes with changelog entries.
Reference Material
- [references/openapi-extraction-guide.md](references/openapi-extraction-guide.md)
- [references/python-server-template.md](references/python-server-template.md)
- [references/typescript-server-template.md](references/typescript-server-template.md)
- [references/validation-checklist.md](references/validation-checklist.md)
- [README.md](README.md)
Architecture Decisions
Choose the server approach per constraint:
- Python runtime: faster iteration, data pipelines, backend-heavy teams
- TypeScript runtime: shared types with JS stack, frontend-heavy teams
- Single MCP server: easiest operations, broader blast radius
- Split domain servers: cleaner ownership and safer change boundaries
Contract Quality Gates
Before publishing a manifest:
- Every tool has clear verb-first name.
- Every tool description explains intent and expected result.
- Every required field is explicitly typed.
- Destructive actions include confirmation parameters.
- Error payload format is consistent across all tools.
- Validator returns zero errors in strict mode.
Testing Strategy
- Unit: validate transformation from OpenAPI operation to MCP tool schema.
- Contract: snapshot
tool_manifest.jsonand review diffs in PR. - Integration: call generated tool handlers against staging API.
- Resilience: simulate 4xx/5xx upstream errors and verify structured responses.
Deployment Practices
- Pin MCP runtime dependencies per environment.
- Roll out server updates behind versioned endpoint/process.
- Keep backward compatibility for one release window minimum.
- Add changelog notes for new/removed/changed tool contracts.
Security Controls
- Keep outbound host allowlist explicit.
- Do not proxy arbitrary URLs from user-provided input.
- Redact secrets and auth headers from logs.
- Rate-limit high-cost tools and add request timeouts.
SKILL.md source
--- name: mcp-server-builder description: Design and ship production-ready MCP (Model Context Protocol) servers from OpenAPI contracts instead of hand-written tool wrappers. Python and TypeScript support, schema validation, safe evolution.... --- # MCP Server Builder **Tier:** POWERFUL **Category:** Engineering **Domain:** AI / API Integration ## Overview Use this skill to design and ship production-ready MCP servers from API contracts instead of hand-written one-off tool wrappers. It focuses on fast scaffolding, schema quality, validation, and safe evolution. The workflow supports both Python and TypeScript MCP implementations and treats OpenAPI as the source of truth. ## Core Capabilities - Convert OpenAPI paths/operations into MCP tool definitions - Generate starter server scaffolds (Python or TypeScript) - Enforce naming, descriptions, and schema consistency - Validate MCP tool manifests for common production failures - Apply versioning and backward-compatibility checks - Separate transport/runtime decisions from tool contract design ## When to Use - You need to expose an internal/external REST API to an LLM agent - You are replacing brittle browser automation with typed tools - You want one MCP server shared across teams and assistants - You need repeatable quality checks before publishing MCP tools - You want to bootstrap an MCP server from existing OpenAPI specs ## Key Workflows ### 1. OpenAPI to MCP Scaffold 1. Start from a valid OpenAPI spec. 2. Generate tool manifest + starter server code. 3. Review naming and auth strategy. 4. Add endpoint-specific runtime logic. ```bash python3 scripts/openapi_to_mcp.py \ --input openapi.json \ --server-name billing-mcp \ --language python \ --output-dir ./out \ --format text ``` Supports stdin as well: ```bash cat openapi.json | python3 scripts/openapi_to_mcp.py --server-name billing-mcp --language typescript ``` ### 2. Validate MCP Tool Definitions Run validator before integration tests: ```bash python3 scripts/mcp_validator.py --input out/tool_manifest.json --strict --format text ``` Checks include duplicate names, invalid schema shape, missing descriptions, empty required fields, and naming hygiene. ### 3. Runtime Selection - Choose **Python** for fast iteration and data-heavy backends. - Choose **TypeScript** for unified JS stacks and tighter frontend/backend contract reuse. - Keep tool contracts stable even if transport/runtime changes. ### 4. Auth & Safety Design - Keep secrets in env, not in tool schemas. - Prefer explicit allowlists for outbound hosts. - Return structured errors (`code`, `message`, `details`) for agent recovery. - Avoid destructive operations without explicit confirmation inputs. ### 5. Versioning Strategy - Additive fields only for non-breaking updates. - Never rename tool names in-place. - Introduce new tool IDs for breaking behavior changes. - Maintain changelog of tool contracts per release. ## Script Interfaces - `python3 scripts/openapi_to_mcp.py --help` - Reads OpenAPI from stdin or `--input` - Produces manifest + server scaffold - Emits JSON summary or text report - `python3 scripts/mcp_validator.py --help` - Validates manifests and optional runtime config - Returns non-zero exit in strict mode when errors exist ## Common Pitfalls 1. Tool names derived directly from raw paths (`get__v1__users___id`) 2. Missing operation descriptions (agents choose tools poorly) 3. Ambiguous parameter schemas with no required fields 4. Mixing transport errors and domain errors in one opaque message 5. Building tool contracts that expose secret values 6. Breaking clients by changing schema keys without versioning ## Best Practices 1. Use `operationId` as canonical tool name when available. 2. Keep one task intent per tool; avoid mega-tools. 3. Add concise descriptions with action verbs. 4. Validate contracts in CI using strict mode. 5. Keep generated scaffold committed, then customize incrementally. 6. Pair contract changes with changelog entries. ## Reference Material - [references/openapi-extraction-guide.md](references/openapi-extraction-guide.md) - [references/python-server-template.md](references/python-server-template.md) - [references/typescript-server-template.md](references/typescript-server-template.md) - [references/validation-checklist.md](references/validation-checklist.md) - [README.md](README.md) ## Architecture Decisions Choose the server approach per constraint: - Python runtime: faster iteration, data pipelines, backend-heavy teams - TypeScript runtime: shared types with JS stack, frontend-heavy teams - Single MCP server: easiest operations, broader blast radius - Split domain servers: cleaner ownership and safer change boundaries ## Contract Quality Gates Before publishing a manifest: 1. Every tool has clear verb-first name. 2. Every tool description explains intent and expected result. 3. Every required field is explicitly typed. 4. Destructive actions include confirmation parameters. 5. Error payload format is consistent across all tools. 6. Validator returns zero errors in strict mode. ## Testing Strategy - Unit: validate transformation from OpenAPI operation to MCP tool schema. - Contract: snapshot `tool_manifest.json` and review diffs in PR. - Integration: call generated tool handlers against staging API. - Resilience: simulate 4xx/5xx upstream errors and verify structured responses. ## Deployment Practices - Pin MCP runtime dependencies per environment. - Roll out server updates behind versioned endpoint/process. - Keep backward compatibility for one release window minimum. - Add changelog notes for new/removed/changed tool contracts. ## Security Controls - Keep outbound host allowlist explicit. - Do not proxy arbitrary URLs from user-provided input. - Redact secrets and auth headers from logs. - Rate-limit high-cost tools and add request timeouts.
Related skills 6
caveman
Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.
secure-linux-web-hosting
Use when setting up, hardening, or reviewing a cloud server for self-hosting, including DNS, SSH, firewalls, Nginx, static-site hosting, reverse-proxying an app, HTTPS with Let's Encrypt or ACME clients, safe HTTP-to-HTTPS redirects, or optional post-launch network tuning such as BBR.
readme-i18n
Use when the user wants to translate a repository README, make a repo multilingual, localize docs, add a language switcher, internationalize the README, or update localized README variants in a GitHub-style repository.
lark-shared
Use when first setting up lark-cli, running auth login, switching user/bot identity (--as), handling permission denied or scope errors, needing to update lark-cli, or seeing _notice in JSON output.
improve-codebase-architecture
Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.
paper-context-resolver
Optional RigorPilot helper for README-first deep learning repo reproduction. Use only when the README and repository files leave a narrow reproduction-critical gap and the task is to resolve a specific paper detail such as dataset split, preprocessing, evaluation protocol, checkpoint mapping, or runtime assumption from primary paper sources while recording conflicts. Do not use for general paper summary, repo scanning, environment setup, command execution, title-only paper lookup, or replacin...