CtrlK
BlogDocsLog inGet started
Tessl Logo

mcp-builder

MCP (Model Context Protocol) server building principles. Tool design, resource patterns, best practices.

51

Quality

57%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./.agents/skills/mcp-builder/SKILL.md
SKILL.md
Quality
Evals
Security

MCP Builder

Principles for building MCP servers.


1. MCP Overview

What is MCP?

Model Context Protocol - standard for connecting AI systems with external tools and data sources.

Core Concepts

ConceptPurpose
ToolsFunctions AI can call
ResourcesData AI can read
PromptsPre-defined prompt templates

2. Server Architecture

Project Structure

my-mcp-server/
├── src/
│   └── index.ts      # Main entry — McpServer from @modelcontextprotocol/sdk
├── package.json      # dep: @modelcontextprotocol/sdk
└── tsconfig.json

TypeScript SDK: @modelcontextprotocol/sdk (McpServer). Python SDK: mcp (pip install "mcp[cli]", FastMCP bundled in mcp.server.fastmcp).

Transport Types

TypeUse
stdioLocal, CLI-based
Streamable HTTPRemote/web servers (replaced the deprecated HTTP+SSE transport)

The current spec (2025-06-18) defines two standard transports: stdio and Streamable HTTP. WebSocket is not a standard transport. Validate the Origin header on Streamable HTTP servers.


3. Tool Design Principles

Good Tool Design

PrincipleDescription
Clear nameAction-oriented (get_weather, create_user)
Single purposeOne thing well
Validated inputSchema with types and descriptions
Structured outputPredictable response format

Input Schema Design

FieldRequired?
TypeYes - object
PropertiesDefine each param
RequiredList mandatory params
DescriptionHuman-readable

4. Resource Patterns

Resource Types

TypeUse
StaticFixed data (config, docs)
DynamicGenerated on request
TemplateURI with parameters

URI Patterns

PatternExample
Fixeddocs://readme
Parameterizedusers://{userId}
Collectionfiles://project/*

5. Error Handling

Error Types

SituationResponse
Invalid paramsValidation error message
Not foundClear "not found"
Server errorGeneric error, log details

Best Practices

  • Return structured errors
  • Don't expose internal details
  • Log for debugging
  • Provide actionable messages

6. Multimodal Handling

Supported Types

TypeEncoding
TextPlain text
ImagesBase64 + MIME type
FilesBase64 + MIME type

7. Security Principles

Input Validation

  • Validate all tool inputs
  • Sanitize user-provided data
  • Limit resource access

API Keys

  • Use environment variables
  • Don't log secrets
  • Validate permissions

8. Configuration

Client Config (Claude Desktop, Claude Code, IDEs)

FieldPurpose
commandExecutable to run (stdio servers)
argsCommand arguments
envEnvironment variables

MCP is multi-client — the same server works across Claude Desktop, Claude Code, and IDE hosts. Remote (Streamable HTTP) servers authenticate via OAuth rather than a local command.


9. Current Spec Features

Worth using in modern servers (spec 2025-06-18):

FeaturePurpose
Tool annotationsHint read-only/destructive behavior to the client
Structured content / outputSchemaTyped, predictable tool results
Resource linksReturn references to resources from tool results
OAuthAuth for remote/Streamable HTTP servers

10. Testing

Test Categories

TypeFocus
UnitTool logic
IntegrationFull server
ContractSchema validation

11. Best Practices Checklist

  • Clear, action-oriented tool names
  • Complete input schemas with descriptions
  • Structured JSON output
  • Error handling for all cases
  • Input validation
  • Environment-based configuration
  • Logging for debugging

Remember: MCP tools should be simple, focused, and well-documented. The AI relies on descriptions to use them correctly.

Repository
vudovn/ag-kit
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.