본문으로 건너뛰기
cccskills
무료GitHub에 공개

mcp-builder

Build MCP servers, which let Claude call external tools and read data through a shared protocol. Follow Python or TypeScript examples to implement tools, connect services, configure Claude, and test server behavior.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Build MCP (Model Context Protocol) servers that give Claude new capabilities. Use when user wants to create an MCP server, add tools to Claude, or integrate external services.

설치 방법 보기

이럴 때 유용합니다

  • Adding custom tools to Claude
  • Connecting an external API
  • Reading database records or settings
  • Testing an MCP server

포함된 파일(1)

  • SKILL.md4.8 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

MCP Server Building Skill

You now have expertise in building MCP (Model Context Protocol) servers. MCP enables Claude to interact with external services through a standardized protocol.

What is MCP?

MCP servers expose:

  • Tools: Functions Claude can call (like API endpoints)
  • Resources: Data Claude can read (like files or database records)
  • Prompts: Pre-built prompt templates

Quick Start: Python MCP Server

1. Project Setup

# Create project
mkdir my-mcp-server && cd my-mcp-server
python3 -m venv venv && source venv/bin/activate

# Install MCP SDK
pip install mcp

2. Basic Server Template

#!/usr/bin/env python3
"""my_server.py - A simple MCP server"""

from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent

# Create server instance
server = Server("my-server")

# Define a tool
@server.tool()
async def hello(name: str) -> str:
    """Say hello to someone.

    Args:
        name: The name to greet
    """
    return f"Hello, {name}!"

@server.tool()
async def add_numbers(a: int, b: int) -> str:
    """Add two numbers together.

    Args:
        a: First number
        b: Second number
    """
    return str(a + b)

# Run server
async def main():
    async with stdio_server() as (read, write):
        await server.run(read, write)

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

3. Register with Claude

Add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "my-server": {
      "command": "python3",
      "args": ["/path/to/my_server.py"]
    }
  }
}

TypeScript MCP Server

1. Setup

mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk

2. Template

// src/index.ts
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({
  name: "my-server",
  version: "1.0.0",
});

// Define tools
server.setRequestHandler("tools/list", async () => ({
  tools: [
    {
      name: "hello",
      description: "Say hello to someone",
      inputSchema: {
        type: "object",
        properties: {
          name: { type: "string", description: "Name to greet" },
        },
        required: ["name"],
      },
    },
  ],
}));

server.setRequestHandler("tools/call", async (request) => {
  if (request.params.name === "hello") {
    const name = request.params.arguments.name;
    return { content: [{ type: "text", text: `Hello, ${name}!` }] };
  }
  throw new Error("Unknown tool");
});

// Start server
const transport = new StdioServerTransport();
server.connect(transport);

Advanced Patterns

External API Integration

import httpx
from mcp.server import Server

server = Server("weather-server")

@server.tool()
async def get_weather(city: str) -> str:
    """Get current weather for a city."""
    async with httpx.AsyncClient() as client:
        resp = await client.get(
            f"https://api.weatherapi.com/v1/current.json",
            params={"key": "YOUR_API_KEY", "q": city}
        )
        data = resp.json()
        return f"{city}: {data['current']['temp_c']}C, {data['current']['condition']['text']}"

Database Access

import sqlite3
from mcp.server import Server

server = Server("db-server")

@server.tool()
async def query_db(sql: str) -> str:
    """Execute a read-only SQL query."""
    if not sql.strip().upper().startswith("SELECT"):
        return "Error: Only SELECT queries allowed"

    conn = sqlite3.connect("data.db")
    cursor = conn.execute(sql)
    rows = cursor.fetchall()
    conn.close()
    return str(rows)

Resources (Read-only Data)

@server.resource("config://settings")
async def get_settings() -> str:
    """Application settings."""
    return open("settings.json").read()

@server.resource("file://{path}")
async def read_file(path: str) -> str:
    """Read a file from the workspace."""
    return open(path).read()

Testing

# Test with MCP Inspector
npx @anthropics/mcp-inspector python3 my_server.py

# Or send test messages directly
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | python3 my_server.py

Best Practices

  1. Clear tool descriptions: Claude uses these to decide when to call tools
  2. Input validation: Always validate and sanitize inputs
  3. Error handling: Return meaningful error messages
  4. Async by default: Use async/await for I/O operations
  5. Security: Never expose sensitive operations without auth
  6. Idempotency: Tools should be safe to retry

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Design and build AI agents for business, research, operations, or creative work. Define essential actions and knowledge, start with a simple execution loop, and add progress tracking or separate child agents as needs emerge.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Designing an assistant for business tasks
  • Building a research agent
  • Choosing essential actions and knowledge
shareAI-lab/learn-claude-code7.9만2026년 9월 28일 업데이트

Review code for security flaws, bugs, performance problems, maintainability, and test quality. Produce structured feedback with issue locations, likely impact, suggested fixes, positive observations, and a recommendation on whether changes are ready to merge.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Reviewing a pull request before merging
  • Investigating bugs and edge cases
  • Checking security flaws and dependencies
shareAI-lab/learn-claude-code7.9만2026년 9월 28일 업데이트

pdf

무료

Extract text from PDFs, inspect page counts and document metadata, merge files, or split them into individual pages. Create PDFs from Markdown, HTML, or Python code, using the tools suited to each task.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Extracting text from a PDF
  • Combining several PDFs into one
  • Splitting a PDF into individual pages
shareAI-lab/learn-claude-code7.9만2026년 9월 28일 업데이트

shareAI-lab의 스킬 모두 보기

이 스킬의 문제 신고