FastMCP server for searching and analyzing Zenn AI Agent Hackathon projects (~400 works across 3 editions) with support for multiple search strategies: TEXT2SQL, FILTERED_RAG, SEMANTIC_RAG, KEYWORD_SEARCH, and HYBRID
The server provides 14 tools with varying quality. Most tools have descriptions and reasonable naming, but critical gaps appear in schema completeness, parameter descriptions, and error handling. Tools 1-9 are explicitly defined in server.py with basic input schemas; tools 12-14 are referenced but not fully visible in provided source, causing their schemas to be inferred rather than verified. Output schemas are undocumented across all tools. The server lacks error handling guidance, structured output documentation, and security patterns. Average tool score: 58/100.
技術スタックのトレンドを分析します。 記事本文から技術キーワードを検出し、使用頻度を集計します。
受賞作品の審査員コメントを取得します。 審査員がどのような点を評価したかを確認できます。
いいね数ランキングを取得します。
特定のプロジェクトの詳細情報を取得します。 記事本文(content_raw)を含む完全な情報を返します。 ⚠️ 注意: このツールは大量のデータ(記事全文)を返すため、 本当に詳細が必要な場合のみ使用してください。 複数のプロジェクトを連続して取得しないでください。 概要だけが必要な場合は semantic_search_summary を使用してください。
プロジェクト名でプロジェクトを検索して詳細を取得します。 部分一致で検索し、最もいいね数が多いものを返します。
プロジェクトの詳細情報を取得
ハッカソン全体の統計情報を取得します。
get_statistics and keyword_search lack visible input schemas and descriptions. Cannot verify parameter types or provide guidance. Tools 13-14 (get_project_detail, keyword_search) have minimal descriptions (35-40 chars) and no schema visible in source.
Output schemas are not documented for any tool. Tools return dict/list objects but LLM cannot know what fields to expect. Breaks downstream chaining and forces the LLM to infer field names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 32 | - | v1 |
受賞作品の一覧を取得します。 審査員コメント(award_comment)付きで返します。
記事本文からキーワードでLIKE検索(技術名など完全一致向け)
記事全文からキーワードを検索します。 プロジェクト名や説明文だけでなく、記事本文(content_raw)からも検索します。 技術名(LangChain, OpenAI等)を検索する場合に有効です。
プロジェクトをキーワードで検索します。 SQLiteのLIKE検索を使用。プロジェクト名と説明文から検索します。
記事本文からの詳細フラグメント検索 ユーザーが「〇〇の実装方法」「具体的なコード例」「詳細な手順」など 記事内の特定段落・技術実装の詳細を探したい場合に使用。 記事本文(content_raw)のチャンクから検索するため、 具体的なコードスニペットや実装詳細を見つけるのに適している。
【推奨】プロジェクト単位の主題検索 ユーザーが「〇〇関連のプロジェクト」「△△を使った作品」など 主題・テーマで検索したい場合に使用。 各プロジェクトの要約(ContentSummary)から検索し、 プロジェクト単位で1件ずつ返すため重複なく関連作品を見つけやすい。
SQLクエリを生成・実行してデータベースから情報を取得 以下の情報を取得したい場合にこのツールを使用: - 受賞作品一覧、賞の名前(award_name)、審査員コメント(award_comment) - ランキング(いいね数順、ブックマーク数順) - 統計情報(件数、集計) - チーム/個人での絞り込み - 回別(第1回/第2回/第3回)での絞り込み - 最終選考進出作品(is_final_pitch)
No error handling guidance. Tools can fail (e.g., database unavailable, semantic search fails) but do not document recovery paths. LLM has no recovery strategy.
Parameter descriptions in visible schemas are minimal or vague. 'edition' is described as 'ハッカソン届次' (Japanese) with enum-like values (1,2,3) but no constraint declaration. 'limit' parameters lack min/max ranges. LLM cannot validate inputs before calling.
No pagination metadata in results. Tools like search_projects and search_content accept 'limit' but do not return total_count, next_cursor, or has_more. LLM cannot know if result set is complete or truncated.
Tools 12-14 (text2sql_query, get_project_detail, keyword_search) are referenced in the server but their full implementations are not visible in the provided source. Schemas and details are inferred. Cannot fully validate.
No security patterns implemented. Database credentials, Azure OpenAI keys, and Chroma vector store credentials are not injected via @mcp.tool annotations or _meta patterns. Could appear in logs or prompt history if agent calls fail.
get_project docstring warns against repeated calls ('複数のプロジェクトを連続して取得しないでください') but tool is not idempotent-marked and no rate limiting guard is visible. LLM may ignore warning and retry/loop anyway.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in registration. All tools are read-only but not explicitly marked. This information must be declared so agents know which tools are safe to retry.
text2sql_query accepts a natural language string but provides no description of the SQL dialect, available tables, or schema. LLM cannot reliably generate valid queries without documentation of the database schema.