본문으로 건너뛰기
전체 프로젝트
운영 중 · 직접 사용 중

ur-mcp

UR에는 공개 API가 없습니다. ur-mcp는 공식 사이트가 빈방을 보여 줄 때와 같은 데이터를 빈방 검색, 변동 보고, 알림 조건 저장이라는 MCP 도구 3개로 AI 에이전트에 제공합니다. 요청은 간격을 두고 하나씩 보내고 이미지는 받지 않아서, 부하는 사람 한 명이 검색 결과를 보는 정도입니다.

이타바시구 UR을 물으면 AI가 search_vacancies를 호출해 방 3개를 표로 보여 주는 화면
종류
MCP 서버 · Claude·ChatGPT용 도구 3종
시작
2026년
역할
개인 개발
운영 환경
Railway (싱가포르) · 볼륨에 둔 SQLite

소개

UR check를 만든 뒤에도, 정작 방을 고를 때는 AI에게 상담하고 있는 저를 발견했습니다. 요즘 AI는 알림도, 예약 작업도 됩니다. 자연어로 상담하고 분석하는 건 제가 만든 화면보다 훨씬 잘하고요. 그렇다면 AI에게 정확한 자료만 건네고 맡기는 게 낫지 않을까, 하는 생각에서 만들었습니다.

스킬로 간단히 붙일 수도 있었지만, UR 데이터는 빈 곳이 많아 정제가 필요해서 MCP 서버로 만들었습니다. Claude나 ChatGPT에 “이타바시구에 역 가까운 2DK 있어?”라고 물으면 ur-mcp가 호출되고, 방마다 상세 페이지와 지도 링크가 붙은 표로 결과가 돌아옵니다. 알림은 매번 확인 직후 변동 사항을 묻는 claude.ai 예약 작업으로 받습니다.

놀라운 시대입니다. 알림도, 스케줄러도, 로그인도 직접 구현하지 않고 정확한 자료를 건네는 MCP 하나만 만들면, 크롤링한 결과를 그대로 보여 줄 때보다 훨씬 정확한 답이 돌아오니까요. UR check와 코드를 공유하지 않는 새 프로젝트이고, 저와 전용 링크를 받은 몇 명이 쓰고 있습니다.

주요 기능

검색
지역 하나를 월세, 면적, 방 구조, 역 도보 시간(버스 제외), 1층 제외, 반려동물 조건으로 찾습니다. 월 비용이 낮은 순으로 최대 50건, 상세 페이지와 지도 링크를 함께 보여 줍니다.
변동 보고
감시 중인 지역에서 새로 나온 방, 다시 나온 방, 마감된 방을 내 조건으로 걸러 알려 줍니다. 확인할 때마다 물어보면 놓치는 방이 없습니다.
알림 조건은 대화로
“14만 엔까지로 하고 1층은 빼 줘”라고 말하면 사용자별로 저장되어 다음 알림부터 적용됩니다.
자체 기록
감시 중인 지역을 일본 시간 8시·12시·16시에 확인해 SQLite에 기록합니다. 그래서 “새 방”은 지난 검색 대비가 아니라 이 서비스 기준으로 새로 나온 방입니다.
Claude에서도 ChatGPT에서도
Claude Code는 Bearer 토큰으로, claude.ai와 ChatGPT 커넥터는 사용자별 비밀 URL로 연결합니다.
동작 방식. Claude나 ChatGPT가 ur-mcp를 호출하고, ur-mcp는 UR에 하나씩 요청하며 기록을 남긴다
채팅으로 알림 예산 바꾸기. update_watch_settings가 저장하고 지금 조건에 맞는 방 수를 알려 준다

기술 구성

서버
Node.js 24 (TypeScript를 빌드 없이 실행) · Hono · MCP TypeScript SDK (stateless) · Zod
데이터
UR 공식 사이트가 보여 주는 빈방 데이터 · Railway 볼륨에 둔 SQLite (node:sqlite)
클라이언트
Claude Code · claude.ai 커넥터와 예약 작업 · ChatGPT 앱
인프라
Railway (싱가포르) · 레플리카 1개 · 서비스 설정을 코드로 관리 (railway.ts)
품질
기록해 둔 UR 응답 기반 Vitest · 실환경 스모크 테스트 · Biome · TypeScript 7

개발 노트

판단은 AI, 정확성은 서버

질문 해석, 비교, 추천은 AI에 맡깁니다. 서버가 책임지는 것은 빠짐없고 정확한 UR 데이터, 그리고 그 데이터를 어떻게 보여 줄지 AI에 알려 주는 도구 설명뿐입니다.

일부만 받은 결과는 오류

단지와 호실 페이지를 빠짐없이 수집합니다. 한 페이지라도 실패하거나 건수가 맞지 않으면 검색 전체를 실패로 처리합니다. UR이 느슨하게 거르는 면적·월세·방 구조는 서버에서 한 번 더 확인합니다.

토큰을 못 보내는 커넥터에는 비밀 URL

claude.ai와 ChatGPT 커넥터는 Bearer 토큰을 보낼 수 없어서 사용자마다 URL을 발급합니다. 토큰은 SHA-256 다이제스트를 상수 시간에 비교하고, 접근을 끊을 때는 변수 하나만 바꾸면 됩니다.

부하를 줄이는 설계

요청은 0.5초 간격으로 하나씩 보내고, 5분 캐시와 하루 호출 상한을 둡니다. 마치다시를 검색하면 공식 사이트에서 결과 화면을 열 때와 같은 API 7회로 끝나고, 이미지 약 30개는 받지 않습니다. 429가 오면 기다리고 403이면 멈춥니다.

UR 도시기구와는 관계가 없습니다. 빈방 여부는 반드시 UR 공식 사이트에서 확인해 주세요. 이미지는 실제 ur-mcp 결과를 바탕으로 재구성한 것입니다.