本文へスキップ
作品一覧
公開中 · 自分で利用中

ur-mcp

URには公開APIがありません。ur-mcpは、公式サイトの空室表示と同じデータを、空室検索・変化の報告・通知条件の保存という3つのMCPツールとしてAIエージェントに提供します。リクエストは1件ずつ間隔をあけて送り、画像は取得しないため、負荷は1人が検索結果を閲覧する程度です。

板橋区のURを尋ねると、AIがsearch_vacanciesを呼び出し、3部屋を表で示す画面
種類
MCPサーバー · Claude・ChatGPT向けツール3種
開始
2026年
担当
個人開発
運用環境
Railway(シンガポール)· ボリューム上のSQLite

概要

UR checkを作ったあとも、気づけば部屋のことをAIに相談している自分がいました。最近のAIには通知や予約タスクの機能もあり、自然な言葉での相談や分析は、自分で作った画面よりずっと得意です。それなら、AIに正確なデータだけを渡して任せたほうがいいのでは。そう考えて作ったのがur-mcpです。

スキルとして手軽に使う方法もありましたが、URのデータは欠けている部分が多く、整える処理が必要だったため、MCPサーバーにしました。ClaudeやChatGPTに「板橋区で駅に近い2DKはある?」と聞くとur-mcpが呼び出され、各部屋の詳細ページと地図へのリンクを含む表で結果が返ってきます。通知は、各チェックの直後に変化を問い合わせるclaude.aiの予約タスクから届きます。

すごい時代になったものです。通知もスケジューラーもログインも作らずに、正確なデータを渡すMCPを1つ用意するだけで、クローリングした結果をそのまま見せるよりずっと正確な答えが返ってきます。UR checkとはコードを共有しない新しいプロジェクトで、自分と、専用リンクを共有した数人で使っています。

主な機能

検索
1つの地域を対象に、家賃・専有面積・間取り・駅徒歩(バス便を除く)・1階除外・ペット可で絞り込みます。月額の安い順に最大50件、詳細ページと地図のリンクつきです。
変化の報告
監視中の地域で新着・再募集・募集終了となった部屋を、自分の条件で絞り込んで報告します。チェックのたびに確認すれば、取りこぼしはありません。
通知条件は会話で
「14万円までにして、1階は除外して」と伝えるとユーザーごとに保存され、次回の通知から反映されます。
独自の履歴
監視中の地域を日本時間の8時・12時・16時に確認してSQLiteに記録するため、「新着」は前回の検索との比較ではなく、このサービス上での新着を意味します。
ClaudeでもChatGPTでも
Claude CodeはBearerトークンで、claude.aiとChatGPTのコネクタはユーザーごとの秘密URLで接続します。
しくみ。ClaudeやChatGPTがur-mcpを呼び出し、ur-mcpは1件ずつURに問い合わせて履歴を残す
チャットで通知の予算を変更。update_watch_settingsが保存し、現在条件に合う部屋の数を示す

技術構成

サーバー
Node.js 24(TypeScriptをビルドせずに実行)· Hono · MCP TypeScript SDK(ステートレス)· Zod
データ
URの公式サイトが表示する空室データ · Railwayボリューム上のSQLite(node:sqlite)
クライアント
Claude Code · claude.aiのコネクタと予約タスク · ChatGPTのアプリ
インフラ
Railway(シンガポール)· レプリカ1台 · サービス設定をコードで管理(railway.ts)
品質
記録したUR応答を使ったVitest · 実環境でのスモークテスト · Biome · TypeScript 7

開発メモ

判断はAI、正確さはサーバー

質問の解釈、比較、おすすめはAIに任せます。サーバーが担うのは、欠けのない正確なURのデータと、その見せ方をAIに伝えるツール説明だけです。

部分的な結果はエラー

団地と部屋のページはすべて取得します。1ページでも失敗するか件数が合わなければ、検索全体を失敗とします。URの絞り込みが粗い専有面積・家賃・間取りは、サーバー側で改めて確認します。

コネクタはトークンを送れないため秘密URL

claude.aiとChatGPTのコネクタはBearerトークンを送れないため、ユーザーごとにURLを発行します。トークンはSHA-256ダイジェストを定数時間で比較し、利用停止は変数を1つ変えるだけです。

負荷をかけない設計

リクエストは1件ずつ0.5秒間隔で送り、5分間のキャッシュと1日の上限を設けています。町田市の検索は、公式サイトで結果画面を開いたときと同じ7回のAPI呼び出しで済み、約30枚の画像は取得しません。429が返れば待機し、403なら停止します。

UR都市機構とは関係ありません。空室状況は必ずURの公式サイトでご確認ください。画像は、実際のur-mcpの結果をもとに作成したイメージです。