Skip to main content

mcp-builder

Creates MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Activates on: "build an MCP server", "create MCP tools", "integrate API via MCP", "write a FastMCP server", "add an MCP server to an agent", or any request to wrap an external API as LLM-callable tools in Python or Node/TypeScript.

ソース情報

リポジトリ
shipshitdev/shipcode
ソースの最終更新活動
2026年7月10日 11:20
検出された SKILL.md の言語
英語
スター
6
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
12 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
mcp-builder
description
Creates MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Activates on: "build an MCP server", "create MCP tools", "integrate API via MCP", "write a FastMCP server", "add an MCP server to an agent", or any request to wrap an external API as LLM-callable tools in Python or Node/TypeScript.
disable-model-invocation
true
license
Complete terms in LICENSE.txt
metadata
{"version":"1.0.1","source":"https://github.com/anthropics/skills/blob/main/skills/mcp-builder/SKILL.md","upstream_repo":"anthropics/skills","upstream_ref":"main","upstream_commit":"ef740771ac90","last_synced":"2026-06-12","license":"Apache-2.0","tags":"mcp, tools, agents"}
# MCP Server Development Guide # Process ## High-Level Workflow Build an MCP server in four phases: ### Phase 1: Deep Research and Planning #### 1.1 Understand Agent-Centric Design Principles Before implementation, design tools around agent workflows: **Build for Workflows, Not Just API Endpoints:** - Do not mirror every API endpoint by default. Group endpoints into workflow tools when one user task requires multiple API calls. - Consolidate related operations (e.g., `schedule_event` that both checks availability and creates event) - List the top user workflows and map each tool to one workflow. **Optimize for Limited Context:** - Return only fields needed for the task by default. - Return high-signal information, not exhaustive data dumps - Provide "concise" vs "detailed" response format options - Default to human-readable identifiers over technical codes (names over IDs) - Add pagination, field selection, or truncation for large responses. **Design Actionable Error Messages:** - Error messages include the failed field or operation, the cause, and the next valid action. - Suggest specific next steps: "Try using filter='active_only' to reduce results" - Never return raw provider errors without a tool-level explanation. **Follow Natural Task Subdivisions:** - Tool names should reflect how humans think about tasks - Group related tools with consistent prefixes for discoverability - Design tools around natural workflows, not just API structure **Use Evaluation-Driven Development:** - Create realistic evaluation scenarios early - Let agent feedback drive tool improvements - Prototype quickly and iterate based on actual agent performance #### 1.2 Study MCP Protocol Documentation **Fetch the MCP protocol documentation:** Fetch: `https://modelcontextprotocol.io/llms-full.txt` This document contains the complete MCP specification. Note: the URL may change as the spec evolves — if the fetch fails, search for the current MCP docs URL. #### 1.3 Study Framework Documentation **Load and read the following reference files:** - **MCP Best Practices**: [📋 View Best Practices](./references/mcp_best_practices.md) - Core guidelines for all MCP servers **For Python implementations, also load:** - **Python SDK Documentation**: Fetch `https://py.sdk.modelcontextprotocol.io/` - [🐍 Python Implementation Guide](./references/python_mcp_server.md) - Python-specific best practices and examples **For Node/TypeScript implementations, also load:** - **TypeScript SDK Documentation**: Fetch `https://ts.sdk.modelcontextprotocol.io/` - [⚡ TypeScript Implementation Guide](./references/node_mcp_server.md) - Node/TypeScript-specific best practices and examples #### 1.4 Study API Documentation To integrate a service, read the API documentation for the selected workflows. Scope endpoint and parameter coverage to those workflows, but read the cross-cutting concerns (auth, rate limits, error handling, data models) in full — they apply across every tool you expose: - Official API reference documentation - Authentication and authorization requirements - Rate limiting and pagination patterns - Error responses and status codes - Available endpoints and their parameters - Data models and schemas Search or fetch documentation only for gaps that block the selected workflow. #### 1.5 Create an Implementation Plan Create a plan with these sections: **Tool Selection:** - List the most valuable endpoints/operations to implement - Prioritize tools that enable the most common and important use cases - Consider which tools work together to enable complex workflows **Shared Utilities and Helpers:** - Identify common API request patterns - Plan pagination helpers - Design filtering and formatting utilities - Plan error handling strategies **Input/Output Design:** - Define input validation models (Pydantic for Python, Zod for TypeScript) - Design consistent response formats (e.g., JSON or Markdown), and configurable levels of detail (e.g., Detailed or Concise) - Plan for large-scale usage (thousands of users/resources) - Implement character limits and truncation strategies (e.g., 25,000 tokens) **Error Handling Strategy:** - Plan graceful failure modes - Define each error shape with: error code, human-readable cause, retryability, and next valid action. - Consider rate limiting and timeout scenarios - Handle authentication and authorization errors --- ### Phase 2: Implementation After the plan exists, implement the shared infrastructure before individual tools. #### 2.1 Set Up Project Structure **For Python:** - Create a single `.py` file or organize into modules if complex (see [🐍 Python Guide](./references/python_mcp_server.md)) - Use the MCP Python SDK for tool registration - Define Pydantic models for input validation **For Node/TypeScript:** - Create the project structure from [⚡ TypeScript Guide](./references/node_mcp_server.md) - Set up `package.json` and `tsconfig.json` - Use MCP TypeScript SDK - Define Zod schemas for input validation #### 2.2 Implement Core Infrastructure First **To begin implementation, create shared utilities before implementing tools:** - API request helper functions - Error handling utilities - Response formatting functions (JSON and Markdown) - Pagination helpers - Authentication/token management #### 2.3 Implement Tools Systematically For each tool in the plan: **Define Input Schema:** - Use Pydantic (Python) or Zod (TypeScript) for validation - Include constraints (min/max length, regex patterns, min/max values, ranges) - Describe field purpose, accepted values, and defaults - Include diverse examples in field descriptions **Write Tool Docstrings/Descriptions:** - One-line summary of what the tool does - Purpose and functionality - Explicit parameter types with examples - Return type schema - Usage examples (when to use, when not to use) - Error handling documentation, which outlines how to proceed given specific errors **Implement Tool Logic:** - Use shared utilities to avoid code duplication - Follow async/await patterns for all I/O - Implement the planned error shapes - Support multiple response formats (JSON and Markdown) - Respect pagination parameters - Check character limits and truncate appropriately **Add Tool Annotations:** - `readOnlyHint`: true (for read-only operations) - `destructiveHint`: false (for non-destructive operations) - `idempotentHint`: true (if repeated calls have same effect) - `openWorldHint`: true (if interacting with external systems) #### 2.4 Follow Language-Specific Best Practices Load the matching guide before finishing implementation — [🐍 Python Implementation Guide](./references/python_mcp_server.md) or [⚡ TypeScript Implementation Guide](./references/node_mcp_server.md) — and follow its patterns: proper SDK tool registration (`@mcp.tool` / `server.registerTool`), strict input validation (Pydantic v2 `model_config` / Zod `.strict()`), full type coverage with no `any`, async/await for all I/O, module-level constants for shared values (e.g. `CHARACTER_LIMIT`, `API_BASE_URL`), and — for TypeScript — a working `bun run build`. --- ### Phase 3: Review and Refine After initial implementation: #### 3.1 Code Quality Review Review the code for: - **DRY Principle**: No duplicated code between tools - **Composability**: Shared logic extracted into functions - **Consistency**: Similar operations return similar formats - **Error Handling**: All external calls have error handling - **Type Safety**: Full type coverage (Python type hints, TypeScript types) - **Documentation**: Every tool has summary, parameters, return shape, examples, and error behavior #### 3.2 Test and Build **Important:** MCP servers are long-running processes that wait for requests over stdio/stdin or sse/http. Running them directly in the main process (e.g., `python server.py` or `node dist/index.js`) hangs it indefinitely. Safe ways to test: run the server in tmux to keep it out of the main process, use a timeout (`timeout 5s python server.py`), or let the evaluation harness (Phase 4) manage the server subprocess directly for stdio transport. - **Python:** verify syntax with `python -m py_compile your_server.py` and review imports. - **Node/TypeScript:** run `bun run build`, confirm it completes without errors, and verify `dist/index.js` is created. #### 3.3 Use Quality Checklist To verify implementation quality, load the appropriate checklist from the language-specific guide: - Python: see "Quality Checklist" in [🐍 Python Guide](./references/python_mcp_server.md) - Node/TypeScript: see "Quality Checklist" in [⚡ TypeScript Guide](./references/node_mcp_server.md) --- ### Phase 4: Create Evaluations After implementing the MCP server, create evaluations that test whether agents can answer realistic questions with the tools. **Load [✅ Evaluation Guide](./references/evaluation.md) for complete evaluation guidelines.** #### 4.1 Understand Evaluation Purpose Evaluations test whether LLMs can effectively use your MCP server to answer realistic, complex questions. #### 4.2 Create 10 Evaluation Questions Follow the process outlined in the evaluation guide: 1. **Tool Inspection**: List available tools and understand their capabilities 2. **Content Exploration**: Use READ-ONLY operations to explore available data 3. **Question Generation**: Create 10 complex, realistic questions 4. **Answer Verification**: Solve each question yourself to verify answers #### 4.3 Evaluation Requirements Each question must be: - **Independent**: Not dependent on other questions - **Read-only**: Only non-destructive operations required - **Complex**: Requiring multiple tool calls and deep exploration - **Realistic**: Based on real use cases humans would care about - **Verifiable**: Single, clear answer that can be verified by string comparison - **Stable**: Answer won't change over time #### 4.4 Output Format Create an XML file with this structure: ```xml <evaluation> <qa_pair> <question>Find discussions about AI model launches with animal codenames. One model needed a specific safety designation that uses the format ASL-X. What number X was being determined for the model named after a spotted wild cat?</question> <answer>3</answer> </qa_pair> <!-- More qa_pairs... --> </evaluation> ``` --- ## Gotchas - **Running the server directly hangs the process.** MCP servers block on stdio/stdin waiting for requests indefinitely. Never run `python server.py` or `node dist/index.js` in your main process. Use `tmux` to background the server, or use the evaluation harness which manages the server subprocess. - **Live URL references can go stale.** The MCP protocol documentation URL (`modelcontextprotocol.io/llms-full.txt`) and the GitHub SDK README URLs may move between versions. If a fetch fails, search for the current URL rather than assuming the skill path is correct. - **TypeScript builds must be re-run after every source change.** `dist/index.js` is the artifact the MCP runtime loads. Editing `.ts` files without running `bun run build` means the runtime is still running the old version. - **Tool annotations are hints, not enforced contracts.** `readOnlyHint: true` does not prevent a tool from writing data — it only signals intent to the LLM. Enforce safety in the tool implementation itself. --- # Reference Files Load only the resources required by the implementation language and phase. | File | Load during | Covers | |---|---|---| | `references/mcp_best_practices.md` | Phase 1.3 (load first) | naming conventions, response formats (JSON vs Markdown), pagination, character limits/truncation, security and error-handling standards | | `references/python_mcp_server.md` | Phase 2 (Python) | server init, Pydantic models, `@mcp.tool` registration, working examples, quality checklist | | `references/node_mcp_server.md` | Phase 2 (TypeScript) | project structure, Zod schemas, `server.registerTool`, working examples, quality checklist | | `references/evaluation.md` | Phase 4 | question-creation and answer-verification guidelines, XML format, example Q&A, running evaluations | Also fetch the live protocol/SDK docs as needed: MCP protocol spec (`https://modelcontextprotocol.io/llms-full.txt`), Python SDK (`https://py.sdk.modelcontextprotocol.io/`), TypeScript SDK (`https://ts.sdk.modelcontextprotocol.io/`).
GitHubで見る