MCP 服务器

Community Board

io.github.sha-net/community-board
电商与零售 地图与位置 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Searches local community listings, classifieds, services, rentals, jobs, items, pets, and events by filters and geographic proximity.

get_listing
Get listing
Use this when the user wants more details about a listing returned by a search. Retrieves one listing by its UUID. Active listings are visible to everyone. Draft, sold, closed, or expired listings are returned only to their owner when the local development identity is configured; otherwise they are reported as not found.
只读 幂等
输入模式
{'type': 'object', 'title': 'get_listingArguments', 'required': ['listing_id'], 'properties': {'listing_id': {'type': 'string', 'title': 'Listing Id', 'description': 'UUID of the listing to retrieve.'}}}
输出模式
{'type': 'object', 'title': 'ListingOutput', 'required': ['id', 'title', 'description', 'category', 'price', 'currency', 'status', 'address', 'latitude', 'longitude', 'distance_km', 'created_at'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'price': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Price'}, 'title': {'type': 'string', 'title': 'Title'}, 'status': {'type': 'string', 'title': 'Status'}, 'address': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Address'}, 'category': {'type': 'string', 'title': 'Category'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'latitude': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Latitude'}, 'longitude': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Longitude'}, 'created_at': {'type': 'string', 'title': 'Created At'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Description'}, 'distance_km': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Distance Km'}}, 'description': 'Public listing fields returned by Community Board tools.'}
list_categories
List categories
Use this to map what the user wants (e.g. car, apartment, plumber, job, dog, event) to a category slug before searching. Returns the category slugs and display names accepted by listing creation and search. Use a returned slug as the category parameter. An empty categories array means no categories are currently configured.
只读 幂等
输入模式
{'type': 'object', 'title': 'list_categoriesArguments', 'properties': {}}
输出模式
{'type': 'object', '$defs': {'CategoryOutput': {'type': 'object', 'title': 'CategoryOutput', 'required': ['slug', 'name', 'description'], 'properties': {'name': {'type': 'string', 'title': 'Name'}, 'slug': {'type': 'string', 'title': 'Slug'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Description'}}}}, 'title': 'CategoriesOutput', 'required': ['categories', 'count'], 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'categories': {'type': 'array', 'items': {'$ref': '#/$defs/CategoryOutput'}, 'title': 'Categories'}}}
search_listings
Search listings
Use this first whenever the user asks to find, search for, buy or rent something locally (e.g. 'תחפש לי', 'תמצא לי', 'אני מחפש לקנות'): second-hand items, vehicles, apartments, jobs, professionals, pets or events. Searches active Community Board listings. Filter by words in the title or description, category slug, and inclusive minimum or maximum price. Supply both latitude and longitude to calculate distance; also supply radius_km to limit results to that distance. Use distance sorting only with an origin, relevance to put title matches first for a query, or newest for recent listings. An empty results array means no active listings matched the filters.
只读 幂等
输入模式
{'type': 'object', 'title': 'search_listingsArguments', 'properties': {'sort': {'enum': ['relevance', 'distance', 'newest'], 'type': 'string', 'title': 'Sort', 'default': 'newest', 'description': 'Result ordering: relevance, distance (requires origin), or newest.'}, 'query': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'title': 'Query', 'default': None, 'description': 'Optional words to match in title or description.'}, 'category': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}], 'title': 'Category', 'default': None, 'description': 'Optional category slug, such as vehicles or real_estate.'}, 'latitude': {'anyOf': [{'type': 'number', 'maximum': 90, 'minimum': -90}, {'type': 'null'}], 'title': 'Latitude', 'default': None, 'description': 'Latitude of the search origin; provide together with longitude.'}, 'longitude': {'anyOf': [{'type': 'number', 'maximum': 180, 'minimum': -180}, {'type': 'null'}], 'title': 'Longitude', 'default': None, 'description': 'Longitude of the search origin; provide together with latitude.'}, 'max_price': {'anyOf': [{'type': 'number', 'minimum': 0.0}, {'type': 'string', 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$'}, {'type': 'null'}], 'title': 'Max Price', 'default': None, 'description': 'Optional inclusive maximum price; use the listing currency.'}, 'min_price': {'anyOf': [{'type': 'number', 'minimum': 0.0}, {'type': 'string', 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$'}, {'type': 'null'}], 'title': 'Min Price', 'default': None, 'description': 'Optional inclusive minimum price; use the listing currency.'}, 'radius_km': {'anyOf': [{'type': 'number', 'maximum': 1000, 'exclusiveMinimum': 0}, {'type': 'null'}], 'title': 'Radius Km', 'default': None, 'description': 'Optional maximum distance in kilometers; requires latitude and longitude.'}}}
输出模式
{'type': 'object', '$defs': {'ListingOutput': {'type': 'object', 'title': 'ListingOutput', 'required': ['id', 'title', 'description', 'category', 'price', 'currency', 'status', 'address', 'latitude', 'longitude', 'distance_km', 'created_at'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'price': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Price'}, 'title': {'type': 'string', 'title': 'Title'}, 'status': {'type': 'string', 'title': 'Status'}, 'address': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Address'}, 'category': {'type': 'string', 'title': 'Category'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'latitude': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Latitude'}, 'longitude': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Longitude'}, 'created_at': {'type': 'string', 'title': 'Created At'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Description'}, 'distance_km': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Distance Km'}}, 'description': 'Public listing fields returned by Community Board tools.'}}, 'title': 'ListingSearchOutput', 'required': ['results', 'count'], 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'results': {'type': 'array', 'items': {'$ref': '#/$defs/ListingOutput'}, 'title': 'Results'}}}
search_nearby
Search nearby listings
Use this when the user asks what is available, sold or happening near a place or near them (e.g. 'מה מוכרים לידי', 'מה קורה לידי', 'איש מקצוע באזור'). If their location is unknown, ask for a city or area first instead of guessing. Finds active listings near a geographic point using PostGIS distance search. Latitude and longitude are separate decimal-degree values; radius_km is required and measured in kilometers. You may narrow by category. Distance ordering is the default. An empty results array means nothing active matched within the radius.
只读 幂等
输入模式
{'type': 'object', 'title': 'search_nearbyArguments', 'required': ['latitude', 'longitude', 'radius_km'], 'properties': {'sort': {'enum': ['relevance', 'distance', 'newest'], 'type': 'string', 'title': 'Sort', 'default': 'distance', 'description': 'Result ordering; distance requires the supplied origin.'}, 'category': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}], 'title': 'Category', 'default': None, 'description': 'Optional category slug.'}, 'latitude': {'type': 'number', 'title': 'Latitude', 'maximum': 90, 'minimum': -90, 'description': 'Search origin latitude in decimal degrees.'}, 'longitude': {'type': 'number', 'title': 'Longitude', 'maximum': 180, 'minimum': -180, 'description': 'Search origin longitude in decimal degrees.'}, 'radius_km': {'type': 'number', 'title': 'Radius Km', 'maximum': 1000, 'description': 'Maximum distance from the origin, in kilometers.', 'exclusiveMinimum': 0}}}
输出模式
{'type': 'object', '$defs': {'ListingOutput': {'type': 'object', 'title': 'ListingOutput', 'required': ['id', 'title', 'description', 'category', 'price', 'currency', 'status', 'address', 'latitude', 'longitude', 'distance_km', 'created_at'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'price': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Price'}, 'title': {'type': 'string', 'title': 'Title'}, 'status': {'type': 'string', 'title': 'Status'}, 'address': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Address'}, 'category': {'type': 'string', 'title': 'Category'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'latitude': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Latitude'}, 'longitude': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Longitude'}, 'created_at': {'type': 'string', 'title': 'Created At'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Description'}, 'distance_km': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Distance Km'}}, 'description': 'Public listing fields returned by Community Board tools.'}}, 'title': 'ListingSearchOutput', 'required': ['results', 'count'], 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'results': {'type': 'array', 'items': {'$ref': '#/$defs/ListingOutput'}, 'title': 'Results'}}}
已添加
list_categories
2026年10月2日 02:40
已添加
search_nearby
2026年10月2日 02:40
已添加
get_listing
2026年10月2日 02:40
已添加
search_listings
2026年10月2日 02:40