MCP-CampusX
FastMCPを学ぶ - MCPサーバーの例
FastMCPを使って Model Context Protocol (MCP) サーバーを構築する方法を示す学習用プロジェクトです。FastMCP は、MCP互換のツールやリソースを作成するためのPythonフレームワークです。
このプロジェクトについて
このリポジトリには、2つの完全なMCPサーバー実装が含まれています。
Demo Server - FastMCPの基本を学ぶためのシンプルな例
Expense Tracker - 本格的な実践向けアプリケーションの例
Claudeや他のAIモデル、カスタムアプリケーションで利用できるMCPサーバーの構築を理解するのに最適です。
Related MCP server: expense-tracker-mcp-server
📋 サーバー1: デモサーバー (main.py)
基本的なツールを備えたシンプルなスターターMCPサーバーです。
ツール
roll_dice(n_dice: int) -> list[int]
n個の6面ダイスを振り、結果を返します。
roll_dice(3) → [4, 2, 6]add_numbers(a: float, b: float) -> float
2つの数値を加算し、その合計を返します。
add_numbers(5, 3) → 8デモサーバーの実行
python main.py💰 サーバー2: 経費トラッカー (test.py)
データベースへの永続化、カテゴリ分類、高度なフィルタリングを備えた総合的な経費管理MCPサーバーです。
特徴
永続ストレージ用のSQLiteデータベース
階層型カテゴリシステム(メインカテゴリ + サブカテゴリ)
日付範囲フィルタリング
カテゴリ別の経費集計
CRUD操作(作成・読み取り・更新・削除)
カテゴリの統合/リネーム
データ構造
各経費エントリには次の項目が含まれます。
id- 一意の識別子(自動インクリメント)date- 経費の日付(文字列形式)amount- 数値で表す経費金額category- メインカテゴリ(categories.jsonから取得)subcategory- 詳細な追跡用のオプションのサブカテゴリnote- オプションの説明・メモ
利用可能なカテゴリ
経費トラッカーは、それぞれに複数のサブカテゴリを持つ12のメインカテゴリをサポートしています。
Food - 食料品、外食、コーヒーなど
Transport - 燃料、公共交通機関、タクシー/配車アプリ、駐車場、有料道路
Housing - 家賃、メンテナンス、固定資産税、修理、家具
Utilities - 電気、水道、ガス、インターネット、携帯電話、TV
Health - 医薬品、診察、検査、フィットネス
Education - 書籍、コース、オンラインサブスクリプション、受験料
Family & Kids - 学費、保育、おもちゃ、イベント
Entertainment - 映画、ストリーミングサブスクリプション、ゲーム、お出かけ
Shopping - 衣類、靴、電化製品、家電、ホームデコレーション、現在はShoppingカテゴリに含まれます
Subscriptions - SaaSツール、クラウド/AI、音楽、ストレージ、ニュースレター
Personal Care - サロン、身だしなみ、化粧品、衛生ケア
Gifts & Donations - プレゼント、チャリティ、フェスティバルギフト
Finance & Fees - 銀行手数料、投資手数料など
ツール
add_expense(date: str, amount: int, category: str, subcategory: str = "", note: str = "")
新しい経費エントリをデータベースに追加します。
{
"date": "2026-08-20",
"amount": 45,
"category": "food",
"subcategory": "dining_out",
"note": "Lunch with friends"
}戻り値: {"status": "ok", "id": 1}
list_expenses(start_date: str, end_date: str)
指定された日付範囲(両端含む)内のすべての経費を一覧表示します(YYYY-MM-DD形式)。
list_expenses("2026-08-01", "2026-08-31")すべてのフィールドを含む経費記録の配列を返します。
summarize(start_date: str, end_date: str, category: str = None)
日付範囲内でカテゴリごとの合計金額を取得します。特定のカテゴリで絞り込むこともできます。
summarize("2026-08-01", "2026-08-31")
summarize("2026-08-01", "2026-08-31", "food")戻り値:
[
{"category": "food", "total_amount": 150},
{"category": "transport", "total_amount": 50}
]update_expense(id: int, date: str = None, amount: float = None, category: str = None, subcategory: str = None, note: str = None)
既存の経費の特定のフィールドを更新します。指定されたフィールドのみが変更されます。
update_expense(1, amount=50, note="Updated note")戻り値: {"status": "ok", "id": 1, "updated_fields": {...}}
delete_expense(id: int)
IDを指定して経費エントリを削除します。
delete_expense(1)戻り値: {"status": "ok", "deleted_id": 1}
merge_categories(old_categories: list[str], new_category: str)
1つ以上のカテゴリラベルを新しい1つのカテゴリにリネームまたは統合します。経費カテゴリをまとめるのに役立ちます。
merge_categories(["food", "dining"], "meals")戻り値: {"status": "ok", "rows_updated": 15, "new_category": "meals"}
リソース
expense://categories
カテゴリ構造をJSONとして返します。このリソースは毎回読み込まれるため、サーバーを再起動せずに categories.json を編集できます。
経費トラッカーの実行
python test.pyデータベース: 永続ストレージとして、同じディレクトリに expenses.db を作成します。
インストールとセットアップ
前提条件
Python 3.14以上
FastMCP 3.4.7以上
依存関係のインストール
pip install fastmcp>=3.4.7または、プロジェクトの pyproject.toml を使用する場合:
pip install -e .プロジェクト構造
learn-fastmcp/
├── main.py # Demo server (roll_dice, add_numbers)
├── test.py # Expense Tracker server (full MCP implementation)
├── categories.json # Category definitions for expense tracker
├── expenses.db # SQLite database (auto-created by test.py)
├── pyproject.toml # Project configuration
└── README.md # This file学習パス
main.pyから始める - 基本を学びます:FastMCPインスタンスの作成方法
@mcp.toolデコレータを使ってシンプルなツールを定義する方法mcp.run()でサーバーを実行する方法
test.pyに進む - 高度なパターンを学びます:SQLiteデータベース統合
ファイルI/Oとリソース管理
複雑なツールロジック(CRUD操作)
@mcp.resourceデコレータを使ったリソースオプショナルパラメータと条件付きパラメータ
エラーハンドリングとバリデーション
FastMCPの主要概念
ツール
@mcp.tool() でデコレートされた関数は、MCPクライアントから呼び出すことができます。各ツールには以下が含まれます:
型ヒント付きの入力パラメータ
機能を説明するdocstring
戻り値
リソース
URIでアクセスできる静的または動的なコンテンツです。@mcp.resource() で定義します:
一意のURIで識別される(例:
expense://categories)オプションでMIMEタイプを指定可能
ファイルから読み込むか、動的に計算することができます
サーバーのライフサイクル
mcp = FastMCP("ServerName") # Create instance
@mcp.tool() # Define tools
def my_tool(): ...
if __name__ == "__main__":
mcp.run() # Start the server次のステップ
デモサーバーを変更して新しいツールを追加する
経費トラッカーを新機能で拡張する(例: 予算、振り返る経費)
興味のあるドメイン向けに独自のMCPサーバーを作成する
MCPプロトコルを使ってMCPサーバーをClaudeに接続する
リソース
楽しく学びましょう! 🚀
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA lightweight server built with FastMCP and SQLite for managing personal finances. It allows users to add, list, and summarize expenses by category through MCP-compatible clients.
- FlicenseBqualityDmaintenanceMCP server for tracking personal expenses using FastMCP and SQLite, enabling adding, listing, updating, deleting expenses and summarizing by category via natural language tools.51
- FlicenseNot gradedqualityCmaintenanceAn MCP server that enables any MCP-compatible client to add, list, and summarize expenses through natural conversation, using FastMCP and aiosqlite for async database operations.
- FlicenseNot gradedqualityBmaintenanceA simple MCP server for tracking expenses in a local SQLite database, enabling add, read, update, delete, and summarization of expenses with predefined categories.
Related MCP Connectors
Primarily to be used as a template repository for developing MCP servers with FastMCP in Python, P…
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/muhammadali382/MCP-CampusX'
If you have feedback or need assistance with the MCP directory API, please join our Discord server