mcpField
M
MCP Python Starter

MCP Python Starter

ローカル
github.com/SamMorrowDrums開発ツール194 週間前に更新

MCP Python Starter について

MCP Python Starter は FastMCP で構築された Python 製の MCP サーバーテンプレートで、ツール、リソース、テンプレート、プロンプト、サンプリング、進捗通知の実装例を含みます。新しい MCP サーバーを作成する際の出発点として使えます。

主な機能

  1. 01ツール、リソース、テンプレート、プロンプトの実装例
  2. 02FastMCP のデコレーターによる定義
  3. 03stdio と HTTP の両方のトランスポートに対応
  4. 04デバッグ用の MCP Inspector との連携
  5. 05VS Code 設定と DevContainer の構成

活用シーン

  1. 01新しい Python 製 MCP サーバーの開始テンプレートとしての利用
  2. 02FastMCP のアノテーション、進捗通知、サンプリングの学習
  3. 03MCP Inspector によるツールとリソースのデバッグ

MCP 対応

本プロジェクトは MCP サーバーのテンプレートであり、hello、get_weather、ask_llm などのツールや、リソース、リソーステンプレート、プロンプトを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP Python Starter

CI Python Ruff License: MIT MCP

FastMCP を使用した、機能が充実した Python 製 Model Context Protocol(MCP)サーバーのテンプレートです。このスターターでは、主要な MCP 機能をすべて、読みやすく Python らしいコードで紹介します。

📚 ドキュメント

✨ 機能

カテゴリー機能説明
ツールhelloアノテーション付きの基本的なツール
get_weather構造化データを返すツール
ask_llmLLM サンプリングを実行するツール
long_task5秒間、進捗を更新するツール
load_bonus_tool新しいツールを動的に読み込む
リソースinfo://about静的な情報リソース
file://example.mdファイルベースの Markdown リソース
テンプレートgreeting://{name}名前に合わせたあいさつ
data://items/{id}ID によるデータ検索
プロンプトgreetさまざまなスタイルのあいさつ
code_review注目する領域を指定したコードレビュー

🚀 クイックスタート

前提条件
インストール
# Clone the repository
git clone https://github.com/SamMorrowDrums/mcp-python-starter.git
cd mcp-python-starter

# Install with uv (recommended)
uv sync

# Or with pip
pip install -e .
サーバーの実行

stdio トランスポート(ローカル開発向け):

uv run mcp-python-starter --stdio

HTTP トランスポート(リモート/ウェブへのデプロイ向け):

uv run mcp-python-starter --http --port 3000

🔧 VS Code との統合

このプロジェクトには、スムーズな開発のための VS Code 設定が含まれています。

  1. VS Code でプロジェクトを開きます
  2. MCP の設定は .vscode/mcp.json にあります
  3. VS Code の MCP ツールを使ってサーバーをテストします
DevContainers の使用
  1. Dev Containers 拡張機能をインストールします
  2. コマンドパレットを開き、「Dev Containers: Reopen in Container」を選択します
  3. すべて設定済みで、すぐに使用できます。

📁 プロジェクト構成

.
├── mcp_starter/
│   ├── __init__.py
│   ├── tools.py       # Tool definitions (hello, get_weather, ask_llm, etc.)
│   ├── resources.py   # Resource and template definitions
│   ├── prompts.py     # Prompt definitions
│   └── server.py      # Server orchestration (imports and wires modules)
├── .vscode/
│   ├── mcp.json       # MCP server configuration
│   ├── settings.json  # Python settings
│   └── extensions.json
├── .devcontainer/
│   └── devcontainer.json
├── pyproject.toml     # Project configuration (uv/pip, Ruff config)
└── .python-version

🛠️ 開発

# Run the server (Python reloads automatically on changes)
uv run mcp-python-starter --stdio

# Use MCP Inspector for debugging
uv run mcp dev mcp_starter/server.py

# Format code
uv run ruff format .

# Lint
uv run ruff check .

# Lint with auto-fix
uv run ruff check --fix .

# Type check
uv run pyright
ライブリロード

uv run で実行すると、Python スクリプトは自動的に再読み込みされます。デバッグ機能を強化するには、 MCP Inspector UI を備えた mcp dev を使用してください。

🔍 MCP Inspector

MCP Inspector は、MCP サーバーのテストとデバッグに欠かせない開発ツールです。

Inspector の実行
npx @modelcontextprotocol/inspector -- uv run mcp-python-starter
Inspector でできること
  • Tools タブ:登録済みのすべてのツールとパラメーターを一覧表示し、実行できます
  • Resources タブ:リソースとテンプレートを参照して読み取れます
  • Prompts タブ:プロンプトテンプレートを表示してテストできます
  • Logs タブ:クライアントとサーバー間の JSON-RPC メッセージを確認できます
  • スキーマ検証:ツールの入出力スキーマを検証できます
デバッグのヒント
  1. IDE/クライアントに接続する前に Inspector を起動します
  2. 「Logs」タブで、リクエスト/レスポンスのペイロードを正確に確認します
  3. ツールのアノテーション(ToolAnnotations)が正しく公開されていることをテストします
  4. long_task の進捗通知が表示されることを確認します
  5. サンプリングツールで Context の注入が機能することを確認します

📖 機能の例

アノテーション付きツール(FastMCP デコレーター)
@mcp.tool(
    title="Say Hello",
    description="A friendly greeting tool",
    annotations={"readOnlyHint": True},
)
def hello(name: str) -> str:
    """Say hello to someone.
    
    Args:
        name: The name to greet
    """
    return f"Hello, {name}!"
リソーステンプレート
@mcp.resource("greeting://{name}")
def greeting_template(name: str) -> str:
    """Generate a personalized greeting."""
    return f"Hello, {name}!"
進捗を更新するツール
@mcp.tool(title="Long Task")
async def long_task(
    task_name: str,
    ctx: Context[ServerSession, None],
) -> str:
    for i in range(5):
        await ctx.report_progress(
            progress=i / 5,
            total=1.0,
            message=f"Step {i + 1}/5",
        )
        await asyncio.sleep(1.0)
    return "Done!"
サンプリングを行うツール
@mcp.tool(title="Ask LLM")
async def ask_llm(
    prompt: str,
    ctx: Context[ServerSession, None],
) -> str:
    result = await ctx.session.create_message(
        messages=[{"role": "user", "content": {"type": "text", "text": prompt}}],
        max_tokens=100,
    )
    return result.content.text

🔐 環境変数

.env.example を .env にコピーして設定します。

cp .env.example .env

🤝 貢献

貢献を歓迎します!変更を加える際は、ほかの言語のスターターと機能が同等に保たれるようにしてください。

📄 ライセンス

MIT License - 詳細はLICENSEをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。