got-cosy-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@got-cosy-mcpfind cosy hotels in Paris"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
got-cosy-mcp
An MCP server for Got Cosy, the Feel Layer for hotel data: cosiness scores for about 6,300 independent hotels, computed from guest reviews and photos, with verified booking links. Free and read-only.
This package is a thin stdio proxy. Each tool call is forwarded over standard MCP JSON-RPC to Got Cosy's hosted Streamable HTTP endpoint at https://gotcosy.com/api/mcp and the result is returned unchanged. There are no local secrets, no API key and no local data: this server only needs outbound HTTPS.
If your client speaks Streamable HTTP directly, you can skip this package entirely and point it at https://gotcosy.com/api/mcp (manifest: https://gotcosy.com/mcp.json). Use this stdio proxy for clients that only support stdio-based MCP servers.
Install and run
Using npx (no install step):
npx got-cosy-mcpUsing Docker:
docker build -t got-cosy-mcp .
docker run -i --rm got-cosy-mcpAdd to an MCP client config (example for a client that reads a JSON config of servers):
{
"mcpServers": {
"got-cosy": {
"command": "npx",
"args": ["-y", "got-cosy-mcp"]
}
}
}Related MCP server: HotelZero
Tools
find_cosy_hotels
Find live, cosy-scored hotels. Only hotels that clear the public floor (score 5.0+) are returned. All arguments are optional.
Argument | Type | Description |
| string | City name, e.g. |
| string | Country name, e.g. |
| number | Minimum cosy score 0-10 (the public floor of 5.0 always applies) |
| number | Max results, default 20, max 100 |
Example call:
{
"name": "find_cosy_hotels",
"arguments": { "city": "Paris", "limit": 5 }
}Example result (truncated):
{
"hotels": [
{
"slug": "les-dames-du-pantheon",
"name": "Les Dames du Panthéon",
"city": "Paris",
"country": "France",
"cosy_score": 6.7,
"url": "https://gotcosy.com/en/hotels/les-dames-du-pantheon",
"verified_booking": "stay22",
"website": "https://www.hotellesdamesdupantheon.com"
}
],
"total": 81,
"limit": 5,
"offset": 0
}get_hotel_feeling
Get one hotel's cosy score, evidence signals and description by its Got Cosy slug (as returned by find_cosy_hotels, or from a gotcosy.com/en/hotels/<slug> URL).
Argument | Type | Required | Description |
| string | yes | The hotel's Got Cosy slug |
Hotels below the public floor return {"below_bar": true} with no score exposed.
Data and scoring
Got Cosy scores independent hotels 0-10 for warmth, intimacy and character, drawn from guest reviews and photos rather than star ratings or price. Only hotels that clear a public floor of 5.0 are exposed through these tools. See gotcosy.com for the full index and gotcosy.com/llms-full.txt for machine-readable documentation.
Links
Hosted endpoint:
https://gotcosy.com/api/mcp(Streamable HTTP, stateless, no auth)Manifest:
https://gotcosy.com/mcp.jsonWebsite: gotcosy.com
Source repository: github.com/perwinroth/cosyhotels (official registry entry:
io.github.perwinroth/got-cosy-graph)Contact: per@gotcosy.com
Licence
MIT, see LICENSE.
Available Tools
2 toolsfind_cosy_hotelsA
Find live, cosy-scored hotels from Got Cosy's cosiness index (gotcosy.com): hotels scored 0-10 for warmth, intimacy and character from photos and reviews. Only returns hotels that clear the public floor (score 5.0+). Optionally filter by city, country and a minimum cosy score.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City name, e.g. "Paris" | |
| limit | No | Max results (default 20, max 100) | |
| country | No | Country name, e.g. "France" | |
| min_score | No | Minimum cosy score 0-10 (the public floor is 5.0 regardless of this value) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently mentions the non-obvious public floor of 5.0 and the live, index-derived scoring context. However, it does not describe the return format, pagination, or any side effects, leaving some behavioral gaps typical for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and every clause adds value (source, scoring, floor, filters). There is no redundancy or filler, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description covers the essential aspects: what it finds, the source, score floor, and optional filters. It implies the return of a list of hotels but does not explicitly detail the return structure, which would elevate it to a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by clarifying that the public floor of 5.0 applies regardless of min_score and emphasizing the live nature of the data, which enriches the semantics of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'finds live, cosy-scored hotels' from a specific index, with a defined scoring scale and a public floor, effectively distinguishing it from the sibling tool get_hotel_feeling which presumably focuses on individual hotel feelings. The verb 'find' plus resource 'hotels' makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for use by explaining the data source, the scoring scale, and optional filters (city, country, min_score). However, it does not explicitly state when to use this tool versus alternatives or when not to use it, lacking exclusionary guidance present in a score-5 description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hotel_feelingA
Get one hotel's cosy score, evidence signals and description from Got Cosy, by its slug (as returned in find_cosy_hotels' results, or from a gotcosy.com/en/hotels/ URL). Below-floor hotels return {below_bar:true} with no score exposed.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The hotel's Got Cosy slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds a key behavioral detail: 'Below-floor hotels return {below_bar:true} with no score exposed', which informs the caller of a special response shape. It also specifies the returned data (cosy score, evidence signals, description). This is transparent for a read-only retrieval tool, though it doesn't mention edge cases like invalid slugs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose. The first sentence states what the tool does and the second adds the critical edge-case behavior. Every sentence earns its place with no filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although no output schema is provided, the description explains the primary return content (cosy score, evidence signals, description) and the special below-bar case. For a tool with a single parameter and no nested objects, this is sufficient to set expectations. It could be slightly more explicit about error behavior, but overall it is contextually complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the slug parameter at 100% coverage. The description enriches the semantics by explaining where the slug comes from (find_cosy_hotels results or a gotcosy.com URL), which helps the agent understand how to obtain a valid value. It also implies the slug uniquely identifies a hotel.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get one hotel's cosy score, evidence signals and description from Got Cosy, by its slug' – a specific verb and resource. It distinguishes itself from the sibling tool find_cosy_hotels by indicating this tool is for a single hotel already identified by slug, while find_cosy_hotels presumably returns a list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context on when to use: 'by its slug (as returned in find_cosy_hotels' results, or from a gotcosy.com/en/hotels/<slug> URL)'. This explains the source of the slug and the intended workflow. It does not explicitly state when not to use it, but the context is clear and the special below-floor case adds further usage nuance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
find_cosy_hotels - First observed
get_hotel_feeling
TDQS
Scored across 2 tools
The two tools serve clearly distinct purposes: one searches for hotels, the other retrieves details for a specific hotel. There is no overlap or ambiguity between them.
Both tool names follow the verb_noun pattern with snake_case (find_cosy_hotels, get_hotel_feeling). The verbs 'find' and 'get' are semantically appropriate and consistent in style.
The server has only 2 tools, which is on the thin end of the scale. However, for a niche service focused on searching and retrieving hotel cosiness scores, this small count is acceptable, though it feels minimal.
The domain is covered by the core workflow: search for hotels with cosy scores, then get detailed information on a specific hotel. No obvious gaps are present, but the lack of additional query capabilities (e.g., listing all cities) is a minor limitation.
Maintenance
Related MCP Connectors
Hotel booking MCP server. Search, book, and manage reservations across 250K+ properties worldwide.
Unofficial read-only MCP server for VeryChic hotel offers
Remote MCP server for hotel rate monitoring, parity checks, and pricing intelligence via Apify.
Independent trust scores, tool surfaces and change history for MCP servers.
Related MCP Servers
- FlicenseAqualityDmaintenanceA FastMCP server that exposes hospitality data — accommodations, events, and gastronomy — through a unified MCP interface, supporting multiple worlds for real or fictional data.5-
- AlicenseAqualityDmaintenanceMCP server that searches hotels on Booking.com with 80+ filter options using Playwright browser automation.791MIT
- FlicenseNot gradedqualityAmaintenanceAn MCP server providing geocoding, routing, isochrones, and POI-by-proximity search through self-hosted OpenStreetMap backends.-

RollingGo Hotel MCPofficial
AlicenseNot gradedqualityBmaintenanceMCP server for searching, comparing, and booking hotels globally, with live rates and over 2 million properties, powered by DIDA.85MIT