mcp-development

MCP Server Development Guide

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "mcp-development" with this command: npx skills add eyadsibai/ltk/eyadsibai-ltk-mcp-development

MCP Server Development Guide

Build high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services.

Core Design Principles

Build for Workflows, Not Just APIs

Principle Why

Consolidate operations Single tool for complete tasks

Return high-signal data Agents have limited context

Provide format options "concise" vs "detailed" modes

Use human-readable IDs Not technical codes

Make errors actionable Guide toward correct usage

Key concept: Don't just wrap API endpoints. Design tools that enable complete workflows agents actually need.

Development Phases

Phase 1: Research

Step Action

Study MCP Protocol Read modelcontextprotocol.io/llms-full.txt

Study SDK docs Python or TypeScript SDK README

Study target API Read ALL available documentation

Create implementation plan Before writing code

Phase 2: Design

Decision Options

Language Python (FastMCP) or TypeScript

Tool granularity Atomic vs workflow-oriented

Response format JSON, Markdown, or both

Error handling What errors can occur, how to recover

Phase 3: Implementation

Component Purpose

Input validation Pydantic (Python) or Zod (TypeScript)

Tool descriptions Clear, with examples

Error messages Include suggested next steps

Response formatting Consistent across tools

Phase 4: Testing

Critical: MCP servers are long-running processes. Never run directly in main process.

Approach How

Evaluation harness Recommended

tmux session Run server separately

Timeout wrapper timeout 5s python server.py

MCP Inspector Official debugging tool

Tool Annotations

Annotation Meaning Default

readOnlyHint Doesn't modify state false

destructiveHint Can cause damage true

idempotentHint Repeated calls safe false

openWorldHint Interacts externally true

Key concept: Annotations help the LLM decide when and how safely to use tools.

Input Design

Validation Patterns

Pattern Use Case

Required fields Core parameters

Optional with defaults Convenience parameters

Enums Limited valid values

Min/max constraints Numeric bounds

Pattern matching Format validation (email, URL)

Parameter Naming

Good Bad Why

user_email

e

Self-documenting

limit

max_results_to_return

Concise but clear

include_archived

ia

Descriptive boolean

Response Design

Format Options

Format Use Case

JSON Programmatic use, structured data

Markdown Human readability, reports

Hybrid JSON in markdown code blocks

Response Guidelines

Guideline Why

~25,000 token limit Context constraints

Truncate with indicator Don't silently cut

Support pagination limit and offset params

Include metadata Total count, has_more

Error Handling

Error Message Structure

Element Purpose

What failed Clear description

Why it failed Root cause if known

How to fix Suggested next action

Example Correct usage

Key concept: Error messages should guide the agent toward correct usage, not just diagnose problems.

Quality Checklist

Code Quality

Check Description

No duplicated code Extract shared logic

Consistent formats Similar ops return similar structure

Full error handling All external calls wrapped

Type coverage All inputs/outputs typed

Comprehensive docstrings Every tool documented

Tool Quality

Check Description

Clear descriptions Model knows when to use

Good examples In docstring

Sensible defaults Reduce required params

Consistent naming Group related with prefixes

Best Practices

Practice Why

One tool = one purpose Clear mental model

Comprehensive descriptions LLM selection accuracy

Include examples in docstrings Show expected usage

Return actionable errors Enable self-correction

Test with actual LLM Real-world validation

Version your server Track compatibility

Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

test-driven-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

plugin-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

codex

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-review

No summary provided by upstream source.

Repository SourceNeeds Review