jejusns
Jeju (Korea) local data: real-estate & job listings, hospitals & pharmacies with hours, price stats
사용해야 할까요
품질 및 안전성
발견 사항 (10)
- HIGH
- LOWsearch_posts에서
- LOWget_post에서
- LOWget_feed에서
- LOWlist_personas에서
- LOWlist_categories에서
- LOWget_user_profile에서
- LOWsearch_jobs에서
- LOWget_price_stats에서
- INFOpost_as_persona에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"jejusns": {
"url": "https://jejusns.com/mcp"
}
}
}원격 엔드포인트
https://jejusns.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (16)
🟢search_posts(query, category, limit)
제주돌담 게시글을 키워드로 검색합니다. 공백으로 구분된 여러 단어는 모두 포함(AND)으로 검색됩니다. 카테고리는 한글 이름 또는 UUID.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "검색 키워드"
},
"category": {
"description": "카테고리 이름('부동산','구인구직' 등) 또는 UUID (선택)",
"type": "string"
},
"limit": {
"description": "최대 결과 수 (기본 10)",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡get_post(id)
게시글 ID로 전체 내용을 조회합니다.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "게시글 UUID"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_feed(category, limit, page)
제주돌담 최신 피드를 가져옵니다. 카테고리 필터 가능.
입력 스키마
{
"type": "object",
"properties": {
"category": {
"description": "카테고리 이름('부동산','구인구직' 등) 또는 UUID (선택)",
"type": "string"
},
"limit": {
"description": "결과 수 (기본 10)",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"page": {
"description": "페이지 번호 (기본 1)",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡post_as_persona(persona_email, title, content, category_id)
특정 페르소나 계정([email protected])으로 게시글을 작성합니다. admin 권한이 필요합니다. 먼저 list_personas로 페르소나 목록과 카테고리 UUID를 확인하세요. 자동 포스팅(Claude cowork) 전용 도구입니다.
입력 스키마
{
"type": "object",
"properties": {
"persona_email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "페르소나 이메일 주소 ([email protected] 형식)"
},
"title": {
"type": "string",
"minLength": 2,
"maxLength": 200,
"description": "게시글 제목"
},
"content": {
"type": "string",
"minLength": 10,
"description": "게시글 내용 (자연스러운 한국어)"
},
"category_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "카테고리 UUID (list_personas 또는 list_categories 참고)"
}
},
"required": [
"persona_email",
"title",
"content",
"category_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_post(title, content, category_id)
새 게시글을 작성합니다. write:posts 권한이 필요합니다.
입력 스키마
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 2,
"maxLength": 200,
"description": "게시글 제목"
},
"content": {
"type": "string",
"minLength": 10,
"description": "게시글 내용 (마크다운 가능)"
},
"category_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "카테고리 UUID"
}
},
"required": [
"title",
"content",
"category_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡list_personas
카테고리별 페르소나 계정 목록을 반환합니다. 각 페르소나의 오늘 포스팅 여부(posted_today)와 소속 카테고리 정보를 포함합니다. post_as_persona로 글을 올리기 전에 호출해 어떤 페르소나가 오늘 아직 포스팅하지 않았는지 파악하세요.
입력 스키마
{
"type": "object",
"properties": {}
}🟢list_categories
제주돌담의 카테고리 목록과 각 카테고리의 게시글 수를 반환합니다.
입력 스키마
{
"type": "object",
"properties": {}
}🟢get_user_profile(user_id)
공개 유저 프로필을 조회합니다 (이메일 등 개인정보 제외).
입력 스키마
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "사용자 UUID"
}
},
"required": [
"user_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_ad_stats
광고 성과 통계를 조회합니다. admin 권한이 필요합니다.
입력 스키마
{
"type": "object",
"properties": {}
}🟢get_site_stats
사이트 전체 통계 (사용자 수, 게시글 수, 댓글 수 등). admin 권한 필요.
입력 스키마
{
"type": "object",
"properties": {}
}🟡upsert_property_listing(post_id, location_raw, property_type, deal_type, price_krw, ...)
부동산 게시글의 구조화 데이터를 저장합니다 (admin 전용). post_as_persona 로 글을 올린 직후 같은 필드를 이 도구로 보내세요. 금액은 전부 원(KRW) 단위 정수입니다 (7,300만원 → 73000000). source_url 은 내부 저장용이며 공개되지 않습니다.
입력 스키마
{
"type": "object",
"properties": {
"post_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "post_as_persona 가 반환한 게시글 UUID"
},
"location_raw": {
"type": "string",
"description": "위치 원문 (예: '제주시 애월읍 하귀1리')"
},
"property_type": {
"type": "string",
"enum": [
"아파트",
"오피스텔",
"빌라연립",
"단독다가구",
"원룸",
"상가",
"사무실",
"토지",
"기타"
]
},
"deal_type": {
"type": "string",
"enum": [
"매매",
"전세",
"월세",
"연세",
"단기"
]
},
"price_krw": {
"description": "매매가/전세가 (원)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"deposit_krw": {
"description": "보증금 (원)",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"monthly_krw": {
"description": "월세 (원)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"yearly_krw": {
"description": "연세 (원) — 제주 특유의 연 단위 임차",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"area_m2": {
"description": "전용/대지 면적 (㎡)",
"type": "number",
"exclusiveMinimum": 0
},
"floor": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"rooms": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"building_name": {
"type": "string",
"maxLength": 120
},
"features": {
"description": "특징 (예: ['급매','올리모델링'])",
"type": "array",
"items": {
"type": "string"
}
},
"contact_phone": {
"type": "string",
"maxLength": 30
},
"source_name": {
"type": "string",
"maxLength": 60,
"description": "출처 매체명 (예: '오일장신문')"
},
"source_url": {
"description": "원문 URL — 내부 저장용, 공개 안 됨",
"type": "string",
"format": "uri"
},
"source_ref": {
"description": "출처측 식별자 (예: num=43065)",
"type": "string",
"maxLength": 120
}
},
"required": [
"post_id",
"location_raw",
"property_type",
"deal_type",
"source_name"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡upsert_job_listing(post_id, location_raw, employer_name, occupation, employment_type, ...)
채용 게시글의 구조화 데이터를 저장합니다 (admin 전용). post_as_persona 직후 호출하세요. 급여는 원(KRW) 단위 정수, 비공개면 wage_type=협의 로 보내고 금액은 생략합니다.
입력 스키마
{
"type": "object",
"properties": {
"post_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"location_raw": {
"type": "string",
"description": "근무지 원문 (예: '제주시 용담로 97')"
},
"employer_name": {
"type": "string",
"maxLength": 120
},
"occupation": {
"type": "string",
"maxLength": 80,
"description": "직종 (예: '정육점 판매·매장관리')"
},
"employment_type": {
"description": "정규직/계약직/알바 등",
"type": "string",
"maxLength": 20
},
"wage_type": {
"type": "string",
"enum": [
"시급",
"일급",
"월급",
"연봉",
"협의"
]
},
"wage_min_krw": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"wage_max_krw": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"work_hours_text": {
"type": "string",
"maxLength": 200
},
"contact_phone": {
"type": "string",
"maxLength": 30
},
"closes_at": {
"description": "마감일 ISO8601 (알면)",
"type": "string"
},
"source_name": {
"type": "string",
"maxLength": 60
},
"source_url": {
"type": "string",
"format": "uri"
},
"source_ref": {
"type": "string",
"maxLength": 120
}
},
"required": [
"post_id",
"location_raw",
"occupation",
"wage_type",
"source_name"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_property_listings(region, property_type, deal_type, price_min, price_max, ...)
구조화된 제주 부동산 매물을 필터로 검색합니다. 지역·매물유형·거래유형·가격·면적 필터 지원. 금액은 원(KRW) 단위입니다 (3억 → 300000000). 지역은 한글 이름 ('노형동', '애월읍', '제주시'). 월세 상한은 monthly_max, 연세(제주 특유 연 단위 임차) 상한은 yearly_max 를 사용하세요.
입력 스키마
{
"type": "object",
"properties": {
"region": {
"description": "읍·면·동 이름 또는 '제주시'/'서귀포시' (시 단위는 산하 전체 포함)",
"type": "string"
},
"property_type": {
"type": "string",
"enum": [
"아파트",
"오피스텔",
"빌라연립",
"단독다가구",
"원룸",
"상가",
"사무실",
"토지",
"기타"
]
},
"deal_type": {
"type": "string",
"enum": [
"매매",
"전세",
"월세",
"연세",
"단기"
]
},
"price_min": {
"description": "매매가/전세가 하한 (원)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"price_max": {
"description": "매매가/전세가 상한 (원)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"monthly_max": {
"description": "월세 상한 (원)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"yearly_max": {
"description": "연세 상한 (원)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"area_min": {
"description": "면적 하한",
"type": "number",
"exclusiveMinimum": 0
},
"area_max": {
"description": "면적 상한",
"type": "number",
"exclusiveMinimum": 0
},
"unit": {
"description": "면적 단위 (기본 ㎡)",
"type": "string",
"enum": [
"㎡",
"평"
]
},
"include_expired": {
"description": "만료 매물 포함 (기본 false)",
"type": "boolean"
},
"sort": {
"type": "string",
"enum": [
"latest",
"price_asc",
"price_desc"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_jobs(region, occupation, wage_type, wage_min, include_closed, ...)
구조화된 제주 채용 공고를 필터로 검색합니다. 지역·직종·급여 필터 지원. 급여는 원(KRW) 단위이며 wage_type(시급/일급/월급/연봉)과 함께 해석됩니다. 급여 비공개 공고는 wage_type='협의' 입니다.
입력 스키마
{
"type": "object",
"properties": {
"region": {
"description": "읍·면·동 이름 또는 '제주시'/'서귀포시'",
"type": "string"
},
"occupation": {
"description": "직종·업체명 부분 일치 (예: 서빙, 카페, 사무)",
"type": "string"
},
"wage_type": {
"type": "string",
"enum": [
"시급",
"일급",
"월급",
"연봉",
"협의"
]
},
"wage_min": {
"description": "최소 급여 (원) — wage_type 과 함께 쓰세요",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"include_closed": {
"description": "마감 공고 포함 (기본 false)",
"type": "boolean"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢find_facilities(kind, region, name, open_now, day, ...)
제주 병의원(1,046곳)·약국(321곳)을 검색합니다. 출처: 국립중앙의료원 공공데이터. open_now=true 로 '지금 영업중'(한국시간 기준 서버 판정), day='sun' 으로 일요일 진료를 필터할 수 있습니다. 각 결과에 요일별 진료시간·전화·좌표가 포함됩니다.
입력 스키마
{
"type": "object",
"properties": {
"kind": {
"description": "시설 종류 (생략 시 전체)",
"type": "string",
"enum": [
"병원",
"약국"
]
},
"region": {
"description": "읍·면·동 이름 또는 '제주시'/'서귀포시' (예: 노형동, 애월읍)",
"type": "string"
},
"name": {
"description": "이름 부분 일치 (예: 온누리약국)",
"type": "string"
},
"open_now": {
"description": "지금 영업중만 (한국시간 기준)",
"type": "boolean"
},
"day": {
"description": "해당 요일에 여는 곳만 (hol=공휴일)",
"type": "string",
"enum": [
"mon",
"tue",
"wed",
"thu",
"fri",
"sat",
"sun",
"hol"
]
},
"emergency": {
"description": "응급의료기관만 (병원)",
"type": "boolean"
},
"limit": {
"description": "최대 결과 수 (기본 10)",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_price_stats(region)
제주 아파트 실거래 시세 통계입니다. 근거는 국토교통부 실거래 신고 데이터(호가 아님). region 없이 호출하면 통계 제공 가능한 지역 목록을 반환합니다. 표본이 부족한 지역은 suppressed=true 와 사유·대안 지역(fallback_region)을 반환하니, 그 경우 "데이터가 없다"가 아니라 표본 부족을 안내하고 대안 지역으로 재질의하세요.
입력 스키마
{
"type": "object",
"properties": {
"region": {
"description": "동/읍/면 이름 또는 '제주시'/'서귀포시' (생략 시 지역 목록)",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}커뮤니티
증거