Python MCP Server Template について
Python MCP Server Templateは、PythonでMCPサーバーを作る開発者向けのFastMCPベースのテンプレートです。対話型セットアップに加え、セキュリティ検査、テスト、監視、Dockerデプロイの仕組みを備えています。
主な機能
- 01対話型プロジェクト設定ウィザード
- 02config.pyによる一元設定
- 03カスタムツールの実装例
- 04パス検証とコマンドのサンドボックス化
- 05テスト、ログ、ヘルスチェック
- 06Dockerビルドとデプロイ対応
活用シーン
- 01Python MCPサーバーのひな形作成
- 02ファイルやデータ処理ツールの追加
- 03Dockerを使ったサーバーのデプロイ
- 04サーバーのテストとセキュリティ確認
MCP 対応
MCPサーバーを構築するためのテンプレートです。サンプルサーバーはツール、ファイルリソース、コードレビュー用プロンプトをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🚀 Python MCP サーバーテンプレート
何時間もかけず、数分で本番環境対応の MCP サーバーを作成できます
インタラクティブなセットアップウィザードを使って、このテンプレートをカスタム MCP サーバーに変換できます。すべてが一元化され、ドキュメント化されており、本番環境へのデプロイに備えています。
Python で Model Context Protocol (MCP) サーバーを構築するための、セキュリティを最優先した包括的なテンプレートです。Docker サポート、自動テスト、エンタープライズグレードの CI/CD を組み込み、ゼロから数分で本番環境に移行できます。
⚡ 2 分でできる MCP サーバーのセットアップ
# 1. Clone and enter directory
git clone https://github.com/aj-geddes/python-mcp-server-template.git
cd python-mcp-server-template
# 2. Install dependencies
pip install -r requirements.txt
# 3. Run interactive setup wizard
python quick_setup.py
# 4. Start your custom MCP server!
python mcp_server.py
これだけです!🎉 本番環境対応の MCP サーバーが、以下の状態で稼働しています。
- ✅ カスタムツールの設定済み
- ✅ セキュリティスキャンの有効化済み
- ✅ Docker デプロイの準備完了
- ✅ モニタリングとログ記録の有効化済み
🎯 構築に最適な用途
| ユースケース | ツールの例 | セットアップ時間 |
|---|---|---|
| 🤖 AI ツールサーバー | ファイル処理、計算機、フォーマッター | 2 分 |
| 🔌 API 連携 | データベースクエリ、Web API、クラウドサービス | 3 分 |
| 🛠️ カスタム自動化 | システムコマンド、ワークフロー、データパイプライン | 2 分 |
| 🏢 エンタープライズソリューション | セキュアで、監視され、コンプライアンスに準拠した MCP サーバー | 5 分 |
✨ 開発者にこのテンプレートが選ばれる理由
- ⚡ 2 分でセットアップ - インタラクティブなウィザードですべてを設定
- 🎯 設定を一元管理 - ファイルに分散させず、すべての設定を
config.pyに集約 - 🛠️ ツールの追加が簡単 - 例を参考に
tools/custom_tools.pyにツールを追加 - 🔒 セキュリティを標準搭載 - 自動スキャンによる A+ グレードのセキュリティ
- 📊 本番環境対応 - モニタリング、ログ記録、Docker、ヘルスチェックを搭載
🚀 テンプレートから独自の MCP サーバーへ
インタラクティブセットアップ
python quick_setup.py
ウィザードでは、以下の情報を入力します。
- サーバー名(例:「weather-tools-server」)
- 説明(サーバーの機能)
- ブランド情報(名前、メールアドレス、リポジトリ)
- ツールの目的(構築するツールの種類)
ファイルの更新
config.py- すべての設定を一か所に集約tools/custom_tools.py- ツール実装用のテンプレートREADME.md- プロジェクト情報に合わせて更新
ツールの追加
# In tools/custom_tools.py
async def my_awesome_tool_impl(param1: str, param2: int) -> Dict[str, Any]:
# Your tool logic here
return {"result": f"Processed {param1} with value {param2}"}
どこにでもデプロイ
# Local development
python mcp_server.py
# Production with Docker
docker build -t my-mcp-server .
docker run -p 8080:8080 my-mcp-server
🛠️ 開発
コード品質ツール
# Format code
black .
isort .
# Check types
mypy mcp_server/
# Lint code
flake8 mcp_server/
# Security scan
bandit -r mcp_server/
# Run tests
pytest
# Run tests with coverage
pytest --cov=mcp_server --cov-report=html
使用可能なコマンド
| コマンド | 説明 |
|---|---|
pytest | すべてのテストを実行 |
pytest -m unit | 単体テストのみ実行 |
pytest -m integration | 統合テストのみ実行 |
black . | すべての Python ファイルをフォーマット |
isort . | インポートを並べ替え |
mypy mcp_server/ | 型チェック |
flake8 mcp_server/ | コードの静的解析 |
bandit -r mcp_server/ | セキュリティ分析 |
./build.sh | Docker イメージをビルドしてテスト |
🔧 設定
環境変数
| 変数 | デフォルト値 | 説明 |
|---|---|---|
MCP_SERVER_NAME | "template-server" | サーバー名の識別子 |
MCP_TRANSPORT | "stdio" | トランスポートの種類(stdio、http、sse) |
MCP_HOST | "0.0.0.0" | HTTP トランスポート用のホスト |
MCP_PORT | "8080" | HTTP トランスポート用のポート |
WORKSPACE_PATH | "/workspace" | ファイル操作用のベースパス |
セキュリティ設定
⚠️ 重要なセキュリティ上の注意事項:
- デフォルトのホスト
0.0.0.0はすべてのインターフェースにバインドされます。本番環境では127.0.0.1または特定の IP を使用してください - ファイル操作は
WORKSPACE_PATHディレクトリ内に制限されています - コマンド実行にはタイムアウト制限と入力検証が適用されます
- ディレクトリトラバーサル攻撃を防ぐため、すべてのファイルパスが検証されます
🏗️ アーキテクチャ
コアコンポーネント
mcp_server/
├── __init__.py # Main server implementation
├── __main__.py # Module entry point
└── tools/ # Tool implementations (future)
mcp_server.py # Application entry point
tests/ # Comprehensive test suite
docker/ # Docker configurations
scripts/ # Build and utility scripts
利用可能なツール
| ツール | 説明 | セキュリティ機能 |
|---|---|---|
health_check() | サーバーのヘルスステータス | 読み取り専用の操作 |
echo(message) | エコー機能 | 入力検証 |
list_files(directory) | ディレクトリ一覧 | パス検証 |
read_file(file_path) | ファイル読み込み | サイズ制限、パス検証 |
write_file(file_path, content) | ファイル書き込み | パス検証、エンコーディングチェック |
run_shell_command(command) | コマンド実行 | タイムアウト制限、サンドボックス化 |
利用可能なリソース
file://{path}- パス検証による安全なファイルリソースへのアクセス
利用可能なプロンプト
code_review_prompt(code, language, focus)- 構造化されたコードレビュー用プロンプト
🐳 Docker デプロイ
ビルドオプション
# Standard build
./build.sh
# Build with version tag
./build.sh v1.0.0
# Alternative builds
docker build -f Dockerfile.alternative -t mcp-server-alt .
docker build -f Dockerfile.fixed -t mcp-server-fixed .
本番環境へのデプロイ
# Run with volume mount
docker run -v /host/workspace:/workspace \
-e MCP_TRANSPORT=http \
-e MCP_PORT=8080 \
-p 8080:8080 \
python-mcp-server-template:latest
# Run with docker-compose
docker-compose up -d
🧪 テスト
テスト構成
tests/
├── test_mcp_server.py # Comprehensive server tests
├── test_server.py # Additional server tests
└── conftest.py # Test configuration
テストのカテゴリ
- ユニットテスト:個々の関数をテストします
- 統合テスト:エンドツーエンドのワークフローをテストします
- セキュリティテスト:パス検証とコマンドインジェクションをテストします
- パフォーマンステスト:タイムアウトとリソース制限をテストします
テストの実行
# All tests
pytest
# With coverage
pytest --cov=mcp_server --cov-report=html
# Specific test types
pytest -m unit
pytest -m integration
pytest -m "not slow"
# Verbose output
pytest -v
# Stop on first failure
pytest -x
🔒 セキュリティ
セキュリティ機能
- パス検証:ディレクトリトラバーサル攻撃を防ぎます
- コマンドのサンドボックス化:タイムアウト付きでコマンド実行を制限します
- ファイルサイズ制限:リソースの枯渇を防ぎます
- 入力検証:包括的な入力サニタイズを行います
- 環境設定:ハードコードされたシークレットはありません
セキュリティスキャン
# Run security analysis
bandit -r mcp_server/
# Check for known vulnerabilities
safety check
# Generate security report
bandit -r mcp_server/ -f json -o security-report.json
📊 監視と可観測性
ヘルスチェック
# Check server health
curl http://localhost:8080/health
# Get server status
python -c "from mcp_server import health_check; import asyncio; print(asyncio.run(health_check()))"
ロギング
- Rich コンソール出力による構造化ロギング
- 設定可能なログレベル
- リクエスト/レスポンスの追跡
- スタックトレースを含むエラー報告
🤝 コントリビューション
開発環境のセットアップ
# Install pre-commit hooks
pre-commit install
# Run full quality check
./scripts/quality-check.sh
# Create feature branch
git checkout -b feature/new-tool
コントリビューションガイドライン
- セキュリティを最優先:すべてのコードがセキュリティスキャンに合格する必要があります
- テストカバレッジ:80%以上のテストカバレッジを維持してください
- コード品質:すべてのリンティングと型チェックに合格してください
- ドキュメント:新機能についてドキュメントを更新してください
- 後方互換性:既存の API に影響を与えないでください
📝 ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルを参照してください。
📚 ドキュメント
🌐 ドキュメント全文
| ガイド | 説明 |
|---|---|
| 🚀 クイックスタート | 5 分で実行を開始できます |
| 🔒 セキュリティガイド | A+ のセキュリティ機能とベストプラクティス |
| 🏗️ API リファレンス | API ドキュメント全文 |
| 👨💻 開発環境のセットアップ | コントリビューションと拡張 |
| 🐳 Docker ガイド | 本番環境向け Docker デプロイ |
🎓 品質保証
このテンプレートは、Dr. Alexandra Chen の本番環境向け基準を達成しています。
- 🟢 最終評価:GOOD(B+)- 78/100
- 💎 セキュリティ評価:EXCEPTIONAL(A+)
- ✅ 本番環境ステータス:デプロイ承認済み
- 🧪 テスト結果:99 件のテストに合格
- 🔒 セキュリティスキャン:安全(脆弱性 0 件)
🔗 リンク
🆘 サポート
- 📚 ドキュメント全文 - 詳細なガイドとリファレンス
- 🐛 バグ報告 - 問題の報告や機能のリクエスト
- 💬 ディスカッション - コミュニティによるサポートと質問
- 🔒 セキュリティの問題 - SECURITY.md に記載の責任ある開示手順に従ってください
⭐ MCP サーバーの素晴らしい構築に役立ったら、このリポジトリにスターを付けてください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。