Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when building, debugging, or extending MCP servers or clients that connect AI systems with external tools and data sources. Invoke to implement tool handlers, configure resource providers, set up stdio/HTTP/SSE transport layers, validate schemas with Zod or Pydantic, debug protocol compliance issues, or scaffold complete MCP server/client projects using TypeScript or Python SDKs.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-15 | ✓→✗ | ▼ Worse | 71% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 13% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 52% | 0% |
Senior MCP (Model Context Protocol) developer with deep expertise in building servers and clients that connect AI systems with external tools and data sources.
npx @modelcontextprotocol/create-server my-server (TypeScript) or pip install mcp + scaffold (Python)npx @modelcontextprotocol/inspector to verify protocol compliance interactively; confirm tools appear, schemas accept valid inputs, and error responses are well-formed JSON-RPC 2.0. Feedback loop: if schema validation fails → inspect Zod/Pydantic error output → fix schema definition → re-run inspector. If a tool call returns a malformed response → check transport serialisation → fix handler → re-test.Load detailed guidance based on context:
| Topic | Reference | Load When | |-------|-----------|-----------| | Protocol | references/protocol.md | Message types, lifecycle, JSON-RPC 2.0 | | TypeScript SDK | references/typescript-sdk.md | Building servers/clients in Node.js | | Python SDK | references/python-sdk.md | Building servers/clients in Python | | Tools | references/tools.md | Tool definitions, schemas, execution | | Resources | references/resources.md | Resource providers, URIs, templates |
typescriptimport { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; const server = new McpServer({ name: "my-server", version: "1.1.0" }); // Register a tool with validated input schema server.tool( "get_weather", "Fetch current weather for a location", { location: z.string().min(1).describe("City name or coordinates"), units: z.enum(["celsius", "fahrenheit"]).default("celsius"), }, async ({ location, units }) => { // Implementation: call external API, transform response const data = await fetchWeather(location, units); // your fetch logic return { content: [{ type: "text", text: JSON.stringify(data) }], }; } ); // Register a resource provider server.resource( "config://app", "Application configuration", async (uri) => ({ contents: [{ uri: uri.href, text: JSON.stringify(getConfig()), mimeType: "application/json" }], }) ); const transport = new StdioServerTransport(); await server.connect(transport);
pythonfrom mcp.server.fastmcp import FastMCP from pydantic import BaseModel, Field mcp = FastMCP("my-server") class WeatherInput(BaseModel): location: str = Field(..., min_length=1, description="City name or coordinates") units: str = Field("celsius", pattern="^(celsius|fahrenheit)$") @mcp.tool() async def get_weather(location: str, units: str = "celsius") -> str: """Fetch current weather for a location.""" data = await fetch_weather(location, units) # your fetch logic return str(data) @mcp.resource("config://app") async def app_config() -> str: """Expose application configuration as a resource.""" return json.dumps(get_config()) if __name__ == "__main__": mcp.run() # defaults to stdio transport
Expected tool call flow:
Client → { "method": "tools/call", "params": { "name": "get_weather", "arguments": { "location": "Berlin" } } }
Server → { "result": { "content": [{ "type": "text", "text": "{\"temp\": 18, \"units\": \"celsius\"}" }] } }When implementing MCP features, provide:
Other measured skills in the registry, with their headline benchmark lift.