Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/alirezarezvani-mcp-server-builder/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 13 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -43% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -43% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -35% | 0% |
Tier: POWERFUL · Category: Engineering · Domain: AI / API Integration
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.
bashpython3 scripts/openapi_to_mcp.py \ --input openapi.json \ --server-name billing-mcp \ --language python \ --output-dir ./out \ --format text
Supports stdin as well:
bashcat openapi.json | python3 scripts/openapi_to_mcp.py --server-name billing-mcp --language typescript
Run validator before integration tests:
bashpython3 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.
Key items before publishing:
Full hardening guidance: references/production-hardening-guide.md.
python3 scripts/openapi_to_mcp.py --help--inputpython3 scripts/mcp_validator.py --help| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | pass→pass | 15,380 | 9,251 | -40% | 1 | 1 | 0% | 2,794 | 2,508 | -10% | 0 | 0 | — |
case-09 | pass→pass | 12,087 | 9,873 | -18% | 1 | 1 | 0% | 2,248 | 2,798 | +24% | 0 | 0 | — |
case-01 | fail→fail | 12,692 | 5,707 | -55% | 1 | 1 | 0% | 3,072 | 1,122 | -63% | 0 | 0 | — |
case-02 | fail→pass | 8,081 | 1,158 | -86% | 1 | 1 | 0% | 1,758 | 1,003 | -43% | 0 | 0 | — |
case-03 | fail→fail | 15,932 | 5,603 | -65% | 1 | 1 | 0% | 4,055 | 1,339 | -67% | 0 | 0 | — |
case-04 | fail→pass | 8,278 | 3,557 | -57% | 1 | 1 | 0% | 1,472 | 1,499 | +2% | 0 | 0 | — |
case-05 | fail→pass | 10,280 | 2,336 | -77% | 1 | 1 | 0% | 1,946 | 1,311 | -33% | 0 | 0 | — |
case-06 | pass→pass | 13,880 | 8,817 | -36% | 1 | 1 | 0% | 2,522 | 2,313 | -8% | 0 | 0 | — |
case-07 | pass→pass | 12,299 | 2,944 | -76% | 1 | 1 | 0% | 2,405 | 1,340 | -44% | 0 | 0 | — |
case-08 | pass→pass | 9,365 | 7,422 | -21% | 1 | 1 | 0% | 1,679 | 2,358 | +40% | 0 | 0 | — |
case-11 | fail→pass | 10,036 | 2,329 | -77% | 1 | 1 | 0% | 2,223 | 1,278 | -43% | 0 | 0 | — |
case-12 | pass→pass | 7,956 | 7,556 | -5% | 1 | 1 | 0% | 1,479 | 2,071 | +40% | 0 | 0 | — |
case-13 | fail→pass | 9,646 | 2,291 | -76% | 1 | 1 | 0% | 1,984 | 1,284 | -35% | 0 | 0 | — |
case-14 | pass→pass | 10,901 | 3,933 | -64% | 1 | 1 | 0% | 1,838 | 1,540 | -16% | 0 | 0 | — |
case-15 | fail→pass | 14,014 | 8,336 | -41% | 1 | 1 | 0% | 2,498 | 2,361 | -5% | 0 | 0 | — |
case-16 | fail→pass | 13,001 | 12,708 | -2% | 1 | 1 | 0% | 270 | 1,044 | +287% | 0 | 0 | — |
case-17 | fail→pass | 6,247 | 1,326 | -79% | 1 | 1 | 0% | 1,132 | 1,022 | -10% | 0 | 0 | — |
case-18 | fail→pass | 7,214 | 1,361 | -81% | 1 | 1 | 0% | 1,280 | 1,017 | -21% | 0 | 0 | — |
case-19 | fail→pass | 8,587 | 999 | -88% | 1 | 1 | 0% | 1,562 | 986 | -37% | 0 | 0 | — |
case-20 | pass→pass | 8,245 | 4,423 | -46% | 1 | 1 | 0% | 1,828 | 1,814 | -1% | 0 | 0 | — |
case-21 | pass→pass | 13,983 | 13,118 | -6% | 1 | 1 | 0% | 2,481 | 3,194 | +29% | 0 | 0 | — |
case-22 | pass→pass | 12,739 | 10,948 | -14% | 1 | 1 | 0% | 2,539 | 2,971 | +17% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.