Search

PythonReactSEOPDF
GitHub Skill

mcp-builder

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

Ditto190☆ 0 Repository stars0 Repository forks

Installation

Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.

View source ↗Guides

Skill instructions

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 Planning

Understand Modern MCP Design:

  • Balance comprehensive API coverage with specialized workflow tools
  • Use clear, descriptive tool names with consistent prefixes (e.g., github_create_issue)
  • Design tools that return focused, relevant data
  • Provide actionable error messages

Study MCP Protocol:

  • Start with sitemap: https://modelcontextprotocol.io/sitemap.xml
  • Key pages: specification, transport mechanisms, tool definitions
Phase 2: Implementation

Recommended Stack:

  • Language: TypeScript (best SDK support)
  • Transport: Streamable HTTP for remote, stdio for local

Project Structure:

my-mcp-server/
├── src/
│   ├── index.ts      # Server entry point
│   ├── tools/        # Tool implementations
│   └── utils/        # Shared utilities
├── package.json
└── tsconfig.json

Tool Implementation Pattern:

server.registerTool({
  name: "github_create_issue",
  description: "Create a new GitHub issue",
  inputSchema: z.object({
    repo: z.string().describe("Repository name (owner/repo)"),
    title: z.string().describe("Issue title"),
    body: z.string().optional().describe("Issue body"),
  }),
  outputSchema: z.object({
    id: z.number(),
    url: z.string(),
  }),
  annotations: {
    readOnlyHint: false,
    destructiveHint: false,
    idempotentHint: false,
  },
  handler: async (input) => {
    // Implementation
    return { id: 123, url: "https://..." };
  },
});
Phase 3: Test
# TypeScript
npm run build
npx @modelcontextprotocol/inspector

# Python
python -m py_compile your_server.py
Phase 4: Create Evaluations

Create 10 complex, realistic questions to test your MCP server:

<evaluation>
  <qa_pair>
    <question>Find all open issues labeled 'bug' in the repo</question>
    <answer>5</answer>
  </qa_pair>
</evaluation>

Tool Design Best Practices

  • Use Zod (TS) or Pydantic (Python) for schemas
  • Include constraints and examples in field descriptions
  • Define outputSchema for structured data
  • Support pagination where applicable
  • Add tool annotations (readOnly, destructive, idempotent)

Examples

Read the usage examples in the source repository.

View source ↗

Source history

Indexed on
2026-01-20
Index updated
2026-01-26
Branch
main

Index and sync dates describe this directory. View the source repository for code history.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!