UniAffitti Room Finder
Find, rank, and compare student rooms from UniAffitti public listings.
我该使用它吗
质量与安全性
发现(1)
- LOW在 compare_rooms 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"room-finder": {
"url": "https://www.uniaffitti.com/mcp/"
}
}
}远程端点
https://www.uniaffitti.com/mcp/streamable-http它能做什么
工具清单
工具(21)
🟢search_rooms(query, city, country_code, limit, offset, ...)
Search approved and available student rooms by budget, type, university, optional campus, distance, and features.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text search over title, description, university, location, and campus."
},
"city": {
"type": "string",
"description": "Optional city filter selected from the assisted location search."
},
"country_code": {
"type": "string",
"description": "Optional ISO 3166-1 alpha-2 country filter."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 8
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"university_id": {
"type": "integer",
"minimum": 1
},
"campus_id": {
"type": "integer",
"minimum": 1
},
"room_type": {
"type": "string",
"enum": [
"single",
"double",
"bed"
]
},
"min_price": {
"type": "number",
"minimum": 0
},
"max_price": {
"type": "number",
"minimum": 0
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"max_distance_km": {
"type": "number",
"minimum": 0
},
"features": {
"type": "object",
"additionalProperties": true
},
"order_by": {
"type": "string",
"enum": [
"newest",
"price_asc",
"price_desc",
"distance_asc",
"distance_desc"
],
"default": "newest"
}
},
"additionalProperties": false
}🟢rank_room_matches(limit, campus_id, preferred_room_type, max_budget, max_distance_km, ...)
Find rooms and score them against student preferences such as budget, campus distance, room type, and trust signals.
输入模式
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 8
},
"campus_id": {
"type": "integer",
"minimum": 1
},
"preferred_room_type": {
"type": "string",
"enum": [
"single",
"double",
"bed"
]
},
"max_budget": {
"type": "number",
"minimum": 0
},
"max_distance_km": {
"type": "number",
"minimum": 0
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"features": {
"type": "object",
"additionalProperties": true
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}🟢get_room_details(room_id)
Return public details for one approved room, including media, features, and limited landlord trust information.
输入模式
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"room_id"
],
"additionalProperties": false
}🟢compare_rooms(room_ids, campus_id)
Compare selected rooms side by side for price, distance, type, availability, features, and trust signals.
输入模式
{
"type": "object",
"properties": {
"room_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"minItems": 2,
"maxItems": 8
},
"campus_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"room_ids"
],
"additionalProperties": false
}🟢list_search_metadata(university_query, university_country_code, university_limit, university_offset)
List a paginated slice of the global university catalog, optional campuses, and feature filters for room search. The catalog is not limited to 500 records.
输入模式
{
"type": "object",
"properties": {
"university_query": {
"type": "string",
"description": "Filter universities by name, city, country, or alias."
},
"university_country_code": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code."
},
"university_limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"university_offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"additionalProperties": false
}🟢search_universities(query, country_code, city, limit, offset)
Search the complete active UniAffitti university catalog worldwide with pagination and total count.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"country_code": {
"type": "string"
},
"city": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 30
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"additionalProperties": false
}🟢search_cities(query, country_code, limit, offset)
Search cities in the complete active worldwide university catalog, with country and university counts for assisted room search.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"country_code": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 12
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"additionalProperties": false
}🟢list_university_campuses(university_id)
List active campuses for a selected university so the user can refine the room search.
输入模式
{
"type": "object",
"properties": {
"university_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"university_id"
],
"additionalProperties": false
}🟢get_my_profile
When the user asks to access or connect UniAffitti, call this tool. It starts the secure OAuth account connection when the user is not authenticated, then returns the profile without credentials or secrets.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢list_my_messages(conversation_id, limit, messages_limit, unread_only)
Read the authenticated user’s UniAffitti conversations from the same chat used by the web app. Without a conversation_id return fast conversation summaries and last-message previews; with one load the complete recent messages for that conversation.
输入模式
{
"type": "object",
"properties": {
"conversation_id": {
"type": "string",
"description": "Optional Firebase conversation/thread id."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 12
},
"messages_limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 30
},
"unread_only": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}🟡send_room_message(room_id, message)
Send a first message to the landlord of an approved available room from the authenticated UniAffitti account. The conversation is stored in the same UniAffitti chat used by the web app.
输入模式
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 4000
}
},
"required": [
"room_id",
"message"
],
"additionalProperties": false
}🟢get_my_conversation_messages(conversation_id, messages_limit)
Load the recent messages for one authenticated UniAffitti conversation. This is a data-only tool intended to be called by the messages UI after the user selects a conversation.
输入模式
{
"type": "object",
"properties": {
"conversation_id": {
"type": "string",
"description": "Firebase conversation/thread id."
},
"messages_limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
}
},
"required": [
"conversation_id"
],
"additionalProperties": false
}🟢list_my_favorites
List the authenticated user’s saved available rooms.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡add_favorite(room_id)
Save an approved room to the authenticated user’s favorites.
输入模式
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"room_id"
],
"additionalProperties": false
}🔴remove_favorite(room_id)
Remove a room from the authenticated user’s favorites.
输入模式
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"room_id"
],
"additionalProperties": false
}🟢list_my_requests(direction)
List rental requests sent or received by the authenticated user.
输入模式
{
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": [
"sent",
"received",
"all"
],
"default": "all"
}
},
"additionalProperties": false
}🟡create_rental_request(room_id, message, start_date, duration_months)
Send a rental request for an approved available room using the authenticated UniAffitti account.
输入模式
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
},
"message": {
"type": "string",
"maxLength": 4000
},
"start_date": {
"type": "string",
"description": "YYYY-MM-DD."
},
"duration_months": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"room_id"
],
"additionalProperties": false
}🔴update_rental_request_status(request_id, status, available_from)
Accept, review, reject, or cancel a UniAffitti rental request according to the authenticated user’s role.
输入模式
{
"type": "object",
"properties": {
"request_id": {
"type": "integer",
"minimum": 1
},
"status": {
"type": "string",
"enum": [
"in_review",
"accepted",
"rejected",
"cancelled"
]
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD; required when accepting."
}
},
"required": [
"request_id",
"status"
],
"additionalProperties": false
}🟢list_my_listings
List the authenticated user’s own listings and moderation status.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡create_listing(title, description, address_full, location_label, city, ...)
Create a UniAffitti listing draft for moderation. Listings intentionally keep university_id and campus_id NULL; location is stored independently from the university catalog.
输入模式
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 190
},
"description": {
"type": "string",
"minLength": 1
},
"address_full": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"location_label": {
"type": "string",
"maxLength": 190
},
"city": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"country_code": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code."
},
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"property_type": {
"type": "string",
"enum": [
"apartment",
"house",
"other"
],
"default": "apartment"
},
"property_floor": {
"type": "integer",
"minimum": -2,
"maximum": 20
},
"price_monthly": {
"type": "number",
"minimum": 0
},
"deposit_amount": {
"type": "number",
"minimum": 0
},
"price_currency": {
"type": "string",
"default": "EUR"
},
"room_type": {
"type": "string",
"enum": [
"single",
"double",
"bed"
]
},
"min_stay_months": {
"type": "integer",
"minimum": 0
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"occupancy_status": {
"type": "string",
"enum": [
"available",
"reserved",
"rented",
"unavailable"
],
"default": "available"
},
"features": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"title",
"description",
"address_full",
"city",
"country_code",
"latitude",
"longitude",
"property_floor",
"price_monthly",
"room_type"
],
"additionalProperties": false
}🟢get_account_links
Return deep links for account, listing creation, messages, requests, and favorites in the full UniAffitti web app.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}社区
证据