Skip to main content
Glama
bibo242

haraj-mcp

by bibo242

haraj-mcp

これは haraj.com.sa — サウジアラビア最大のクラシファイド広告マーケットプレイス — 向けの Model Context Protocol (MCP) サーバー です。

このサーバーは、MCP対応エージェント(Claude Desktop、Cursor、opencode、Zed など)に 21のツール を公開します。curl コマンドをコピー&ペーストしなくても、マーケットプレイスの出品情報をリアルタイムに検索・取得できます。

すべてのツールは、実際の haraj.com.sa の操作を再現しています — ライブブラウザセッション(2026-08-17)から取得しました。捏造されたフィルタは一切ありません。すべての引数は、実際のフロントエンドが GraphQL 呼び出しで送信する内容と一致しています。

Claude Desktop / Cursor / opencode
        │
        │  MCP (JSON-RPC over stdio)
        ▼
   ┌──────────────┐
   │  haraj-mcp   │ ── HTTPS ──▶  graphql.haraj.com.sa
   │  (Python)    │                + livestream.haraj.com.sa
   └──────────────┘

公開ツール(21)

ディスカバリー

ツール

目的

trending_keywords(range_in_days)

トレンド検索ワードのトップ(デフォルト7日間)

search_suggest(prefix)

検索ボックスのライブオートコンプリート(トップ10)

related_tags(tag)

指定タグに関連する都市と件数

live_streams(limit)

現在開催中のharajライブショッピング配信

フィード/検索

ツール

目的

fetch_feed(tag, city?, cities?, page?, before_update_date?, limit?)

タグベースのフィード(ホームページ + カテゴリページ)。before_update_date がカーソルです。最後のアイテムの updateDate を渡すと次のページを取得できます。

search(keyword, cities?, city?, tag?, tags?, during_date?, near?, ...)

キーワード検索。during_date1days/3days/1week/1months を受け付けます。near はジオハッシュ @lat,lon です。

promoted_posts(tag)

タグのプロモーション投稿カルーセル

sellers_list(tags, page?)

タグごとの出品者(不動産など)

投稿詳細

ツール

目的

get_post_details(post_id)

投稿と3つの関連グループ(実際の similarPosts エンドポイント経由 — 正規の「IDによる取得」)

post_like_info(post_id)

{is_like, total, is_following}

comments(post_id)

コメント一覧

post_contact(post_id)

{contactText, contactMobile, shouldEnableWhatsApp}

locker_shipment_offer(post_id)

{offerId, isEligible, price} (Locker 配送)

ユーザー

ツール

目的

user(username?, user_id?, rating_summary_only?)

完全なプロフィール(評価、フォロワー、所在地履歴、バッジ)

is_following_user(username)

bool

follow_user(username)

ミューテーション: フォローを切り替え

user_mention_suggestions()

@メンション用

アカウント

ツール

目的

notes(set_read?)

通知(ベルアイコン)

outgoing_buy_requests(page?)

「Buy with confidence」エスクロー履歴

is_following_tag(tag)

bool

check_auth()

.env の認証情報がまだ有効か確認

fetch_feedpromoted_postssearch では、full=True を渡すとコンパクトな要約の代わりに完全な Post オブジェクトを取得できます。コンパクトな要約には次のキーがあります:

{
  "id": 185926519,
  "title": "...",
  "price_sar": 650.0,
  "price_display": "650 SAR",
  "url": "https://haraj.com.sa/...",
  "city": "الشرقيه",
  "geo_city": "الدمام",
  "post_date": 1785729404,
  "has_image": true,
  "thumb_url": "https://mimg6cdn.haraj.com.sa/...",
  "tags": ["شاشات", "..."],
  "has_price": true
}

インストール

cd /mnt/W/Desktop/Software/haraj-mcp
pip install -e .

これにより haraj-mcp コンソールスクリプトが PATH にインストールされます。

認証の設定

cp .env.example .env
# Edit .env and paste your HARAJ_JWT and LAST_REQUEST_ID.

新しい値を取得する方法(約 ~10日ごとに期限切れになります):

  1. Chrome で https://haraj.com.sa を開いてログインします。

  2. F12Network タブ → 任意の graphql.haraj.com.sa リクエストをクリックします。

  3. Headers で、authorization (Bearer eyJ… で始まる) と lastRequestId をコピーします。

  4. .env に貼り付けて、MCP サーバーを再起動します。

check_auth で確認できます — JWT の exp クレームと seconds_remaining を返します。

MCP クライアントへの組み込み

opencode / Claude Desktop / Cursor

これをクライアントの MCP 設定に追加します(通常は ~/.config/opencode/opencode.json~/Library/Application Support/Claude/claude_desktop_config.json、または ~/.cursor/mcp.json):

{
  "mcpServers": {
    "haraj": {
      "command": "haraj-mcp",
      "cwd": "/mnt/W/Desktop/Software/haraj-mcp"
    }
  }
}

サーバーは .envcwd から読み込むため、シークレットはプロジェクトディレクトリ内に留まり、MCP クライアント設定に漏れません。

カスタム .env の場所

MCP 設定の env ブロックで HARAJ_MCP_ENV=/path/to/.env を設定します。

エージェント向けのプロンプト例

組み込み後、エージェントは次のような質問に答えられます:

「今日の haraj のトレンドは?」

حراج السيارات (自動車カテゴリ) の最新20件の投稿を取得して。」

「先週の haraj で RTX 4090 を検索して (during_date=1week)。」

「post_id=185354313 の出品者のプロフィールと現在の全出品を取得して。」

「この投稿を Locker 経由で購入する場合、送料はいくらですか?」

شاشة の後に検索ボックスに入力されているのは何ですか?」

「現在開催中のライブショッピング配信をすべて一覧にして。」

MCP クライアントなしで実行(デバッグ)

JSON-RPC メッセージをサーバーに直接パイプします:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0"}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_regions","arguments":{}}}' | python -m haraj_mcp

テスト

python tests/test_smoke.py

10件のテストでカバー: ツール登録(21ツール)、ライブ version URL、sec-ch-ua-platform-version ヘッダー、initalChars のタイポ保持、実際の検索変数、コンパクトシリアライザの形状、JWT 検証(有効/期限切れ/不正)、check_auth のエラーハンドリング、完全な stdio エンドツーエンドテスト。

エージェントガイド

ツールごとの「これは何に使うのか」リファレンス(およびエージェントのワークフロー例)については、docs/AGENT_GUIDE.md を参照してください。そこでは次のことを説明しています:

  • ユースケース別に整理された21のツール(ディスカバリー、フィード/検索、投稿詳細、ユーザー、アカウント)

  • 一般的な複数ステップのワークフロー(例: 「RTX 4090 のお買い得品を見つけて」→ 5つの連続したツール呼び出し)

  • ページネーションのチートシート(どのツールがどのカーソルを使うか)

  • プライバシー/安全性に関する注記(IBAN や携帯電話番号などの機密データを返すツール)

  • エージェントがツールを呼び出す会話スニペット

docs/AGENT_GUIDE.md を LLM クライアントと共有します(またはシステムプロンプトを書くときの参考にします)。

プロジェクト構成

haraj-mcp/
├── pyproject.toml
├── README.md
├── .env.example
├── src/haraj_mcp/
│   ├── __init__.py
│   ├── __main__.py        # entry point: `python -m haraj_mcp`
│   ├── server.py         # FastMCP setup, 21 tool registrations
│   ├── tools.py          # the 21 tool implementations
│   └── auth.py           # .env reader + JWT validation
├── haraj/                # GraphQL client (captured from live haraj.com.sa)
│   ├── client.py
│   ├── models.py
│   ├── queries.py        # 20 exact-captured query strings
│   ├── constants.py
│   ├── auth.py
│   └── images.py
└── tests/test_smoke.py

v0.2.0 での変更点

v0.1.0 には、ライブの GraphQL スキーマから私が捏造した4つのツール(search_harajget_postlist_regionscheck_auth)がありました。サポートされていたフィルタの多くは実際のサイトでは使われていませんでした。

v0.2.0 では、それらを haraj.com.sa が実際に使用している操作を再現した 21ツール に置き換えました。2026-08-17 の実際のブラウザセッションから取得(219リクエスト、173件の GraphQL POST)。主な修正点:

  • search から捏造されたフィルタ(carExtraInfopriceRangeuserLocationnotTagauthorUsername)がなくなりました。実際のサイトが送信する変数(searchcitiescitytagtagspagelimitonlyWithImageonlyWithVideohideShowRoomsorderByPostIdduringDatenear)のみになります。

  • searchSuggest はライブ通信のタイポ initalChars を保持します(サーバーがこれを要求するため)

  • version URL パラメータを 2026-08-11 22 に更新(以前は 2026-08-03 15)

  • sec-ch-ua-platform-version ヘッダーを追加(すべてのライブ呼び出しで送信)

  • ViewOptionsmustLoginToView を追加(posts オペレーションにのみ存在)

  • 非GraphQLの livestream.haraj.com.sa エンドポイント用の新しい live_streams ツール

  • get_post_details は正しい similarPosts(id:) エンドポイントを使用するようになりました(IDをキーワードとして使うハックではなく)

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.

  • Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.

  • MCP server for valet parking: 789 US operators across 31,186 cities. 7 tools. No auth.

View all MCP Connectors

Latest Blog Posts

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/bibo242/Haraj-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server