"""Connpass MCP Server - Main entry point."""
from mcp.server.fastmcp import FastMCP
from .tools import ConnpassTools
# FastMCP サーバインスタンスを生成
mcp = FastMCP("COMMPASS_MCP_SERVER")
# Tools インスタンスを生成
tools = ConnpassTools()
@mcp.tool()
async def get_user_attended_events(nickname: str, start: int = 1, count: int = 10) -> dict:
"""
指定したユーザーが参加したイベントのリストを取得します。
Args:
nickname: ユーザーのニックネーム
start: 開始位置 (デフォルト: 1)
count: 取得する最大件数 (デフォルト: 10, 最大: 100)
"""
return await tools.get_user_attended_events(nickname, start, count)
@mcp.tool()
async def get_group_events(group_name: str, start: int = 1, count: int = 10) -> dict:
"""
指定したグループのイベント一覧を取得します。
Args:
group_name: グループ名
start: 開始位置 (デフォルト: 1)
count: 取得する最大件数 (デフォルト: 10, 最大: 100)
"""
return await tools.get_group_events(group_name, start, count)
@mcp.tool()
async def list_available_groups() -> dict:
"""利用可能なグループの一覧を表示します。"""
return await tools.list_available_groups()
@mcp.tool()
async def search_events_by_location(
prefecture: str = None,
keyword: str = None,
start: int = 1,
count: int = 10
) -> dict:
"""
開催場所やキーワードでイベントを検索します。
Args:
prefecture: 都道府県名 (オンライン, 東京, 大阪, 沖縄など)
keyword: 検索キーワード (イベント名、説明、場所を検索)
start: 開始位置 (デフォルト: 1)
count: 取得する最大件数 (デフォルト: 10, 最大: 100)
"""
return await tools.search_events_by_location(prefecture, keyword, start, count)
@mcp.tool()
async def search_events_by_keyword_or(keyword: str, start: int = 1, count: int = 10) -> dict:
"""
キーワードでイベントを検索します(OR条件)。
Args:
keyword: 検索キーワード (複数キーワードはOR条件で検索)
start: 開始位置 (デフォルト: 1)
count: 取得する最大件数 (デフォルト: 10, 最大: 100)
"""
return await tools.search_events_by_keyword_or(keyword, start, count)
@mcp.tool()
async def list_available_prefectures() -> dict:
"""検索可能な都道府県の一覧を表示します。"""
return await tools.list_available_prefectures()
# --- エントリポイント: SSE トランスポートでサーバ起動 ---
if __name__ == "__main__":
mcp.run()