🚀 PuchAIハッカソン
🌟 MCPを使用するにはここをクリック
🚀 クイックスタート
このREADMEでは、PuchAIハッカソンに関連する様々なツールとその使用方法、セットアップ手順について説明します。各ツールは特定のタスクを自動化し、データ分析や情報収集を支援します。
✨ 主な機能
Reddit調査ツール
- 説明:指定したサブレディットから最新の投稿をスクレイピングし、特定のキーワードを含む投稿をフィルタリングします。その後、インテントスコアリングを使用してコンテンツを分析し、市場検証と聴衆の感情分析を行います。
- パラメータ:
puch_user_id (文字列): レート制限用のユーザーID
query (文字列): 検索対象についての説明的なクエリ
subreddits (文字列のリスト): サブレディット名のリスト('r/' 接頭辞なし)
keywords (文字列のリスト): ファジーマッチングを使用して検索するキーワード
threshold (整数, デフォルト: 80): ファジーマッチの閾値 (0-100)
post_limit (整数, デフォルト: 10): 各サブレディットでチェックする新しい投稿の数 (1-35)
- クールダウン:使用間隔は80秒です。
- 例のプロンプト:
- "Hey Puch, I am trying to promote my MCP with Kubernetes EKS setup, please check if recently anyone is interested in r/mcp or r/saas."
- "I'm building my own payment gateway service, check if there is any discussion around payment gateways in r/saas, and tell me how to approach them."
データ可視化ツール
棒グラフの作成
- 説明:ラベルと数値データのリストから、カスタマイズ可能なスタイルのラベル付き棒グラフ画像を生成します。
- パラメータ:
puch_labels (文字列のリスト): x軸のラベル文字列
puch_values (浮動小数点数のリスト): 数値データ(ラベルと同じ長さ)
width (整数, デフォルト: 900): 画像の幅(ピクセル)
height (整数, デフォルト: 450): 画像の高さ(ピクセル)
bg_color (文字列, デフォルト: "#f8fffe"): 背景色
bar_color (文字列, デフォルト: "#4ade80"): 棒の色
title (文字列, オプション): グラフのタイトル
- 例のプロンプト:
- "Create a bar chart showing sales data: Q1=15000, Q2=18000, Q3=22000, Q4=17000 with title 'Quarterly Sales'."
- "Make a bar chart of programming languages: Python=45, JavaScript=38, Java=32, C++=28, Go=15."
折れ線グラフの作成
- 説明:時間の経過に伴う傾向や変数間の関係を示す折れ線グラフを作成します。
- パラメータ:
puch_labels (文字列のリスト): x軸のラベル文字列
puch_values (浮動小数点数のリスト): 数値データ(ラベルと同じ長さ)
width (整数, デフォルト: 900): 画像の幅(ピクセル)
height (整数, デフォルト: 450): 画像の高さ(ピクセル)
bg_color (文字列, デフォルト: "#f8fffe"): 背景色
line_color (文字列, デフォルト: "#4ade80"): 線の色
title (文字列, オプション): グラフのタイトル
- 例のプロンプト:
- "Show me a line chart of website traffic over the past 6 months: Jan=1200, Feb=1350, Mar=1100, Apr=1600, May=1850, Jun=2100."
- "Create a line chart showing temperature trends: Mon=22, Tue=24, Wed=19, Thu=25, Fri=27, Sat=23, Sun=21."
円グラフの作成
- 説明:現代的なスタイル、影の効果、パーセンテージと値を示す詳細な凡例を持つ円グラフを生成します。
- パラメータ:
labels (文字列のリスト): 円グラフのカテゴリラベル
values (浮動小数点数のリスト): 各カテゴリの数値データ
title (文字列, オプション): グラフのタイトル
width (整数, デフォルト: 1000): 画像の幅(ピクセル)
height (整数, デフォルト: 600): 画像の高さ(ピクセル)
- 例のプロンプト:
- "Create a pie chart showing budget allocation: Marketing=5000, Development=8000, Operations=3000, Sales=4000."
- "Make a pie chart of survey responses: Very Satisfied=45, Satisfied=32, Neutral=15, Dissatisfied=8."
散布図の作成
- 説明:2つの数値変数間の関係を可視化する散布図を作成し、オプションでカテゴリ分類とカスタムスタイルを適用できます。
- パラメータ:
x_values (浮動小数点数のリスト): x座標の値
y_values (浮動小数点数のリスト): y座標の値(x_valuesと同じ長さ)
labels (文字列のリスト, オプション): 点のラベル
categories (文字列のリスト, オプション): 色分け用のカテゴリ
colors (文字列のリスト, オプション): 各点のカスタム色(16進コード)
width (整数, デフォルト: 900): 画像の幅(ピクセル)
height (整数, デフォルト: 600): 画像の高さ(ピクセル)
bg_color (文字列, デフォルト: "#fafafa"): 背景色
point_color (文字列, デフォルト: "#4F46E5"): デフォルトの点の色
point_size (整数, デフォルト: 6): 点の半径(ピクセル)
title (文字列, オプション): グラフのタイトル
x_label (文字列, オプション): x軸のラベル
y_label (文字列, オプション): y軸のラベル
- 例のプロンプト:
- "Create a scatter plot showing correlation between hours studied (x) and exam scores (y): study hours [2,4,6,8,10,12] and scores [65,72,78,85,90,95]."
- "Make a scatter plot of height vs weight data with categories for different age groups."
医薬品情報プロバイダ
- 説明:Tata 1mgから指定された医薬品に関する情報を取得します。
- パラメータ:
medicine_name (文字列): 医薬品の名前
- 例のプロンプト:
- "Hey, the pharmacy gave me montelukast, is this the right medicine for allergies?"
ユーザー設定管理
ユーザー設定の取得
- 説明:ユーザー設定または特定の設定値をキーで取得します。
- パラメータ:
puch_user_id (文字列): ユーザーID
key (文字列, オプション): 取得する特定の設定キー
- 例のプロンプト:
- "What's my favorite programming language?"
- "Show me all my saved preferences."
ユーザー設定の保存
- 説明:ユーザー設定、嗜好、興味、または思い出に残る情報を永続的なストレージに保存します。
- パラメータ:
puch_user_id (文字列): ユーザーID
key (文字列): 設定カテゴリまたはキー(例: 'favorite_color')
value (文字列): 指定されたキーに保存する値
- 例のプロンプト:
- "Remember that my favorite programming language is Python."
- "Save that I prefer coffee over tea in the mornings."
タスク管理ツール
タスクの追加
- 説明:ユーザーのTODOリストにタイムスタンプ付きで新しいタスクを追加します。
- パラメータ:
puch_user_id (文字列): ユーザーID
task (文字列): タスクまたはTODO項目のテキスト
- 例のプロンプト:
- "Add 'Finish MCP documentation' to my todo list."
- "I need to remember to 'Call client about project proposal' - please add this to my tasks."
タスクの一覧表示
- 説明:ユーザーのすべてのTODO項目を作成日でソートして取得し、表示します。
- パラメータ:
puch_user_id (文字列): ユーザーID
- 例のプロンプト:
- "Show me all my current tasks and todos."
- "What's on my todo list right now?"
タスクの削除
- 説明:インデックス番号でユーザーのTODOリストから特定のタスクを削除します。
- パラメータ:
puch_user_id (文字列): ユーザーID
index (整数): list_todosからのTODOのインデックス番号(1から始まる)
- 例のプロンプト:
- "Delete task number 3 from my todo list."
- "Remove the second item from my tasks."
注意事項
- Redditスクレイパー:ユーザーごとに80秒のクールダウンがあります。
- その他のツール:クールダウン制限はありません。
- ユーザーデータは
user_data.json に保存されます。
- スレッドセーフなファイル操作でロックが使用されます。
- 一時ファイルを使用したアトミックな書き込み操作が行われます。
📦 インストール
uv のインストール
Pythonがすでにインストールされていることを前提とします。
uv は高速なPythonパッケージインストーラーと環境マネージャーです。
以下のコマンドでインストールします:
pip install uv
実行
リポジトリをクローンし、.env ファイルを設定し、ディレクトリ内に移動して、以下のコマンドを実行します:
uv run src/main.py
デフォルトでは、ポート8085で実行されます。
NGROKのセットアップ
1. ngrokのインストール
以下のURLからngrokをダウンロードしてインストールします:
https://ngrok.com/download
2. 認証トークンの取得
- https://dashboard.ngrok.com/get-started/your-authtoken にアクセスします。
- 認証トークンをコピーします。
- 以下のコマンドを実行してトークンを追加します:
ngrok config add-authtoken YOUR_AUTHTOKEN
ngrok http 8085 を実行します。
- URLをコピーし、 puch.ai/hi で
/mcp connect {コピーしたURL}/mcp AUTH_TOKEN と入力します。AUTH_TOKENは .env ファイル内のものと同じである必要があります。