自己撰寫一個簡單的MCP

參考實作伺服器

這些是官方驗證過、最值得嘗試的範例:

  • Filesystem:安全操作檔案,支援讀寫控制
  • Fetch:從網頁擷取內容並轉成 LLM 可讀格式
  • Memory:提供持久記憶能力(知識圖譜)
  • Sequential Thinking:讓模型用步驟式思考解題

適合在 coding 流程中使用的:

  • Git -用於讀取、搜索和作 Git 儲存庫的工具
  • GitHub – 倉庫管理、檔作和 GitHub API 集成
  • GitLab – GitLab API 集成,支持專案管理
  • Sentry – 從 Sentry.io 中檢索和分析問題

瀏覽器自動化

  • Brave Search – 使用 Brave 的搜索 API 進行 Web 和本地搜索
  • Puppeteer – 瀏覽器自動化和網頁抓取功能

更多官方推薦的MCP列表

https://github.com/modelcontextprotocol/servers?tab=readme-ov-file#%EF%B8%8F-official-integrations

安裝開發工具uv

# WinGet(Windows)
winget install astral-sh.uv
# Homebrew(macOS)
brew install uv
#PyPI
pip install uv

初始化MCP SERVER

這邊有很多不同語言的MCP範例:https://github.com/modelcontextprotocol

這邊為python實現的一個簡單範例

uv venv --python cpython-3.11.13-windows-x86_64-none
.\.venv\Scripts\activate
uv pip install "mcp[cli]"

設定main.py的內容如下

"""
FastMCP quickstart example.

cd to the `examples/snippets/clients` directory and run:
    uv run server fastmcp_quickstart stdio
"""

from mcp.server.fastmcp import FastMCP

# Create an MCP server
mcp = FastMCP("Demo")


# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b


# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"


# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    """Generate a greeting prompt"""
    styles = {
        "friendly": "Please write a warm, friendly greeting",
        "formal": "Please write a formal, professional greeting",
        "casual": "Please write a casual, relaxed greeting",
    }

    return f"{styles.get(style, styles['friendly'])} for someone named {name}."
    
if __name__ == "__main__":
    mcp.run(transport="stdio")

啟動MCP

uv run main.py

如何測試MCP?用 MCP Inspector

npx -y @modelcontextprotocol/inspector@latest

在Transport Type選擇STDIO,然後command輸入uv run server.py

就可以從Resource、Prompts、Tools去測試剛剛設定的MCP了

將自己撰寫的工具加到Claude Code

claude mcp add my-mcp-server uv run main.py
claude mcp list

出現以下字樣代表成功

Checking MCP server health...

firecrawl-mcp: cmd /c npx -y firecrawl-mcp - ✓ Connected
my-mcp-server: uv run main.py - ✓ Connected