MCP Server Boilerplate
MCPサーバーボイラープレート
カスタムMCPサーバーを構築するための再利用可能なベースラインとして設計された、最小限かつ十分に文書化されたMCP(Model Context Protocol)サーバーの実装です。
MCPとは?
Model Context Protocol (MCP) は、AIアシスタントが外部サーバーと対話できるようにする標準化されたプロトコルです。MCPサーバーは以下を提供できます:
ツール: AIがアクションを実行するために呼び出せる関数
リソース: AIが読み取れる静的または動的なデータ
プロンプト: 一貫したAI対話のための再利用可能なプロンプトテンプレート
Related MCP server: MCP Mingdao
特徴
このボイラープレートは以下を提供します:
最小限の構造: 簡単に拡張できるクリーンなベースライン
詳細なドキュメント: インラインコメントと個別のドキュメントファイル
アーキテクチャ図: コンポーネントの相互作用を示すMermaid図
スケーリングガイド: サーバーを成長させるためのベストプラクティス
型ヒント: より良いIDEサポートのための完全な型アノテーション
Async/await: 並行操作のためのノンブロッキングI/O
再利用可能なプロンプトテンプレート
プロンプトは、プレースホルダーを使用して構造化されたプロンプトを定義できる再利用可能なテンプレートです。これらにより以下が可能になります:
一貫性: さまざまなAI対話間での標準化されたプロンプト形式
パラメータ化: 引数を通じた動的なコンテンツ挿入
再利用性: 一度定義すれば、異なる入力で複数回使用可能
型安全性: 検証付きの定義済み引数スキーマ
プロンプトテンプレートは以下で構成されます:
名前: プロンプトの一意の識別子
説明: プロンプトの機能
引数: プロンプト使用時に埋め込むことができるオプションのパラメータ
使用例:
設定可能な重大度レベルを持つコードレビューテンプレート
カスタマイズ可能なトーンを持つドキュメント生成
変数フォーカス領域を持つ分析プロンプト
異なる出力形式を持つレポート生成
プロジェクト構造
windsurf-project-3/
├── mcp_server.py # Main server implementation with extensive comments
├── pyproject.toml # Project configuration for uv
├── ARCHITECTURE.md # Architecture documentation with Mermaid diagrams
├── SCALING_GUIDE.md # Scaling patterns and best practices
├── README.md # This file
├── tools/ # Placeholder for tool modules (create as needed)
├── resources/ # Placeholder for resource modules (create as needed)
├── prompts/ # Placeholder for prompt modules (create as needed)
└── utils/ # Placeholder for utility modules (create as needed)インストール
このプロジェクトでは、高速なPythonパッケージ管理のためにuvを使用しています。
Python 3.10以上をインストール
uvをインストール(まだインストールされていない場合):
curl -LsSf https://astral.sh/uv/install.sh | sh依存関係をインストール:
uv syncクイックスタート
1. 最初のツールを追加する
mcp_server.pyを編集し、list_tools()関数にツールを追加します:
@app.list_tools()
async def list_tools() -> list[Tool]:
return [
Tool(
name="echo",
description="Echo back the input text",
inputSchema={
"type": "object",
"properties": {
"text": {"type": "string", "description": "Text to echo"}
},
"required": ["text"]
}
)
]2. ツールハンドラーを実装する
call_tool()関数にツールのロジックを追加します:
@app.call_tool()
async def call_tool(name: str, arguments: Any) -> str:
if name == "echo":
text = arguments.get("text", "")
return f"Echo: {text}"
raise ValueError(f"Unknown tool: {name}")3. プロンプトを追加する(オプション)
list_prompts()関数にプロンプトを追加します:
@app.list_prompts()
async def list_prompts() -> list[Prompt]:
return [
Prompt(
name="example_prompt",
description="An example prompt template",
arguments=[
PromptArgument(
name="topic",
description="The topic to write about",
required=True
)
]
)
]次に、get_prompt()でハンドラーを実装します:
@app.get_prompt()
async def get_prompt(name: str, arguments: dict[str, str] | None) -> str:
if name == "example_prompt":
topic = arguments.get("topic") if arguments else None
if not topic:
raise ValueError("Argument 'topic' is required")
return f"Write a detailed explanation about {topic}."
raise ValueError(f"Unknown prompt: {name}")3. サーバーを実行する
uv run python mcp_server.py4. MCPクライアントを設定する
MCPクライアントの設定に以下を追加します:
{
"mcpServers": {
"your-server-name": {
"command": "uv",
"args": ["run", "python", "/path/to/mcp_server.py"]
}
}
}ドキュメント
ARCHITECTURE.md: 以下を示すMermaid図を含む詳細なアーキテクチャドキュメント:
Pythonモジュールとその目的
コンポーネントの相互作用
リクエストフロー(ツール呼び出し、リソース読み取り)
使用されている設計パターン
SCALING_GUIDE.md: サーバーをスケーリングするためのベストプラクティス:
モジュール化パターン
状態管理戦略
エラー処理パターン
ロギングと監視
設定管理
テスト戦略
パフォーマンス最適化
セキュリティ上の考慮事項
コード構造
メインのサーバーファイル(mcp_server.py)は以下のセクションに整理されています:
サーバーの初期化: MCPサーバーインスタンスの作成
ツールの登録: 利用可能なツールの定義
ツールハンドラー: ツール実行ロジックの実装
リソースの登録: 利用可能なリソースの定義
リソースハンドラー: リソース読み取りロジックの実装
エントリーポイント: stdio通信によるサーバーの起動
各セクションには、各コンポーネントの目的と使用法を説明する詳細なインラインコメントが含まれています。
拡張ポイント
ツールの追加
list_tools()でスキーマとともにツールを定義するcall_tool()でハンドラーを実装する大規模なプロジェクトの場合は、
tools/ディレクトリの別モジュールに移動する
プロンプトの追加
list_prompts()で引数とともにプロンプトを定義するget_prompt()でハンドラーを実装する大規模なプロジェクトの場合は、
prompts/ディレクトリの別モジュールに移動する
リソースの追加
list_resources()でメタデータとともにリソースを定義するread_resource()でハンドラーを実装する大規模なプロジェクトの場合は、
resources/ディレクトリの別モジュールに移動する
ユーティリティの追加
共有コードをutils/ディレクトリに抽出します:
検証関数
ロギングヘルパー
設定管理
エラー処理ユーティリティ
ベースラインとしての使用
このボイラープレートは、コピーして新しいプロジェクト用に修正するように設計されています:
プロジェクトディレクトリ全体をコピーする
pyproject.tomlでプロジェクト名を変更するmcp_server.pyでサーバー名を更新するツール、リソース、プロンプトを追加する
必要に応じてドキュメントをカスタマイズする
使用されているPythonモジュール
mcp.server.Server: メインのMCPサーバークラスmcp.types.Tool: ツール型定義mcp.types.Resource: リソース型定義mcp.types.Prompt: プロンプト型定義mcp.types.PromptArgument: プロンプト引数型定義mcp.server.stdio: Stdio通信ストリームasyncio: 並行操作のためのAsync/awaittyping: コードの明確化のための型ヒント
各モの詳細な説明についてはARCHITECTURE.mdを参照してください。
開発
テストの実行
# Run with pytest (add tests first)
uv run pytestコードスタイル
このプロジェクトはPythonの型ヒントを使用し、PEP 8規則に従っています。以下を検討してください:
リンティングのための
ruff型チェックのための
mypy
依存関係の追加
uv add <package-name>トラブルシューティング
インポートエラー:
uv syncを実行して依存関係をインストールしてくださいサーバーが応答しない: MCPクライアントの設定を確認してください
型エラー: Python 3.10以上がインストールされていることを確認してください
uvコマンドが見つからない: https://github.com/astral-sh/uv からuvをインストールしてください
リソース
ライセンス
このボイラープレートは、教育および開発目的のために現状のまま提供されています。プロジェクトで自由に使用および修正してください。
Maintenance
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
MCP server for developer documentation, generated by doc2mcp.
MCP server for developers documentation, generated by doc2mcp.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA basic MCP server template that provides a foundation for building custom tools, resources, and prompts. Serves as a starting point for developers to create their own MCP server functionality.-

MCP Mingdaoofficial
AlicenseNot gradedqualityDmaintenanceA minimal MCP server template demonstrating basic tools, resources, and prompts functionality built with Smithery SDK.ISC- FlicenseNot gradedqualityDmaintenanceA template/starter project for building MCP servers with structured directories for tools, prompts, and resources that are automatically discovered and registered.5-
- FlicenseNot gradedqualityDmaintenanceA boilerplate template for developing Model Context Protocol (MCP) servers, providing a structured framework for defining tools, resources, and prompts.-