fless-mcp 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +86 -0
  2. package/index.mjs +74 -0
  3. package/package.json +17 -0
package/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # fless-mcp
2
+
3
+ [Fless](https://fless.io) apartment-hunting tools for any MCP-capable AI agent — a zero-dependency stdio proxy to the hosted Fless MCP server at `https://mcp.fless.io/mcp`.
4
+
5
+ ## What it does
6
+
7
+ Your agent researches apartments with live Fless data and hands you a pre-filled hunt link:
8
+
9
+ - **search_cities** — live + coming-soon cities
10
+ - **get_city_overview** — neighborhoods with median rents + WalkRating™ scores
11
+ - **get_neighborhood** — full detail (rents, scores, POI counts)
12
+ - **get_hunt_requirements** — every hunt field, enum, binary restriction (55+, pets, smoking), transparent pricing
13
+ - **build_hunt_link** — validate a brief → URL that pre-fills the entire hunt form
14
+ - **check_hunt_link** — created → opened → started lifecycle
15
+ - **search / fetch** — ChatGPT deep-research compatibility pair
16
+
17
+ All tools are read-only, no auth needed. Your human creates the account, verifies email, and pays — agents never do.
18
+
19
+ ## Where we operate
20
+
21
+ Fless currently runs apartment hunts in **Washington, DC / Maryland / Virginia** only.
22
+
23
+ | ✅ Live now | 🚧 Coming soon |
24
+ |---|---|
25
+ | Alexandria, VA | Arlington, VA |
26
+ | Annapolis, MD | Baltimore, MD |
27
+ | Frederick, MD | Rockville, MD |
28
+ | Leesburg, VA | Silver Spring, MD |
29
+ | | Washington, DC |
30
+ | | Richmond, VA + more |
31
+
32
+ **Your city not listed?** We're expanding — check back, or join the waitlist at
33
+ [fless.io](https://fless.io). Agents: always call `search_cities` first.
34
+
35
+ ## Install
36
+
37
+ ### Claude Desktop / any stdio MCP client
38
+
39
+ ```json
40
+ {
41
+ "mcpServers": {
42
+ "fless": {
43
+ "command": "uvx",
44
+ "args": ["fless-mcp"]
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ Or with pip:
51
+
52
+ ```bash
53
+ pip install fless-mcp
54
+ fless-mcp # speaks JSON-RPC on stdio
55
+ ```
56
+
57
+ ### Remote (no install needed)
58
+
59
+ Most clients connect to the hosted server directly:
60
+
61
+ ```
62
+ https://mcp.fless.io/mcp
63
+ ```
64
+
65
+ See per-assistant setup guides (Claude, ChatGPT, Perplexity, Grok, Mistral Vibe, Codex, OpenClaw, Hermes): **https://fless.io/ai-agents**
66
+
67
+ ## Environment
68
+
69
+ | Variable | Default | Purpose |
70
+ |---|---|---|
71
+ | `FLESS_MCP_URL` | `https://mcp.fless.io/mcp` | Remote server (fallback: `https://www.fless.io/mcp`) |
72
+ | `FLESS_MCP_UA` | `fless-mcp/1.0.0 (+https://fless.io/ai-agents)` | User-Agent |
73
+
74
+ ## The skill (recommended companion)
75
+
76
+ `fless-apartment-hunt` — an [Agent Skills](https://agentskills.io)-standard skill that teaches your agent the full workflow:
77
+
78
+ ```bash
79
+ hermes skills install well-known:https://fless.io
80
+ # or from GitHub:
81
+ npx skills add fless-io/skills
82
+ ```
83
+
84
+ ## License
85
+
86
+ MIT
package/index.mjs ADDED
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * fless-mcp — stdio proxy for the Fless remote MCP server.
4
+ * Bridges local stdio MCP clients (Claude Desktop, etc.) to
5
+ * https://mcp.fless.io/mcp with zero configuration.
6
+ */
7
+ import { createInterface } from 'node:readline';
8
+ import { request } from 'node:https';
9
+ import { request as httpRequest } from 'node:http';
10
+
11
+ const REMOTE = process.env.FLESS_MCP_URL || 'https://mcp.fless.io/mcp';
12
+ const UA = process.env.FLESS_MCP_UA || 'fless-mcp-npm/1.0.0 (+https://fless.io/ai-agents)';
13
+
14
+ const rl = createInterface({ input: process.stdin });
15
+
16
+ rl.on('line', (line) => {
17
+ line = line.trim();
18
+ if (!line) return;
19
+
20
+ let parsed;
21
+ try {
22
+ parsed = JSON.parse(line);
23
+ } catch {
24
+ process.stderr.write(`fless-mcp: dropping non-JSON: ${line.slice(0, 80)}\n`);
25
+ return;
26
+ }
27
+
28
+ const url = new URL(REMOTE);
29
+ const mod = url.protocol === 'https:' ? request : httpRequest;
30
+ const req = mod(url, {
31
+ method: 'POST',
32
+ headers: {
33
+ 'Content-Type': 'application/json',
34
+ 'Accept': 'application/json, text/event-stream',
35
+ 'User-Agent': UA,
36
+ },
37
+ timeout: 120000,
38
+ }, (res) => {
39
+ let body = '';
40
+ res.on('data', (c) => { body += c; });
41
+ res.on('end', () => {
42
+ const ct = res.headers['content-type'] || '';
43
+ if (ct.includes('text/event-stream')) {
44
+ for (const sse of body.split('\n')) {
45
+ if (sse.startsWith('data:')) {
46
+ const payload = sse.slice(5).trim();
47
+ if (payload) process.stdout.write(payload + '\n');
48
+ }
49
+ }
50
+ } else if (body) {
51
+ process.stdout.write(body.replace(/\n$/, '') + '\n');
52
+ }
53
+ process.stdout.write('');
54
+ });
55
+ });
56
+
57
+ req.on('error', (e) => {
58
+ const err = { jsonrpc: '2.0', id: parsed.id ?? null,
59
+ error: { code: -32000, message: `fless-mcp proxy error: ${e.message}` } };
60
+ process.stdout.write(JSON.stringify(err) + '\n');
61
+ });
62
+
63
+ req.on('timeout', () => {
64
+ req.destroy();
65
+ const err = { jsonrpc: '2.0', id: parsed.id ?? null,
66
+ error: { code: -32000, message: 'fless-mcp proxy timeout (120s)' } };
67
+ process.stdout.write(JSON.stringify(err) + '\n');
68
+ });
69
+
70
+ req.write(line);
71
+ req.end();
72
+ });
73
+
74
+ rl.on('close', () => process.exit(0));
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "fless-mcp",
3
+ "version": "1.1.0",
4
+ "description": "Fless apartment-hunting MCP server — research cities, neighborhoods, rents, and build pre-filled hunt links. Stdio proxy to https://mcp.fless.io/mcp.",
5
+ "main": "index.mjs",
6
+ "type": "module",
7
+ "bin": {
8
+ "fless-mcp": "./index.mjs"
9
+ },
10
+ "keywords": ["mcp", "apartment", "hunting", "rental", "ai", "agent", "llm"],
11
+ "license": "MIT",
12
+ "homepage": "https://fless.io/ai-agents",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/fless-io/skills"
16
+ }
17
+ }