fless-mcp 1.0.0__tar.gz
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.
- fless_mcp-1.0.0/PKG-INFO +89 -0
- fless_mcp-1.0.0/README.md +70 -0
- fless_mcp-1.0.0/pyproject.toml +33 -0
- fless_mcp-1.0.0/setup.cfg +4 -0
- fless_mcp-1.0.0/src/fless_mcp/__init__.py +2 -0
- fless_mcp-1.0.0/src/fless_mcp/__main__.py +5 -0
- fless_mcp-1.0.0/src/fless_mcp/proxy.py +70 -0
- fless_mcp-1.0.0/src/fless_mcp.egg-info/PKG-INFO +89 -0
- fless_mcp-1.0.0/src/fless_mcp.egg-info/SOURCES.txt +10 -0
- fless_mcp-1.0.0/src/fless_mcp.egg-info/dependency_links.txt +1 -0
- fless_mcp-1.0.0/src/fless_mcp.egg-info/entry_points.txt +2 -0
- fless_mcp-1.0.0/src/fless_mcp.egg-info/top_level.txt +1 -0
fless_mcp-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: fless-mcp
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Fless apartment-hunting MCP server (stdio proxy to https://mcp.fless.io/mcp) — research cities, neighborhoods, rents, and build pre-filled hunt links.
|
|
5
|
+
Author-email: Fless <dev@folyfoly.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://fless.io/ai-agents
|
|
8
|
+
Project-URL: Documentation, https://fless.io/hunt-how-to.md
|
|
9
|
+
Project-URL: Repository, https://github.com/fless-io/skills
|
|
10
|
+
Project-URL: Changelog, https://github.com/fless-io/skills/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: mcp,apartment,hunting,rental,ai,agent,llm
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: Communications :: Chat
|
|
17
|
+
Requires-Python: >=3.9
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# fless-mcp
|
|
21
|
+
|
|
22
|
+
[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`.
|
|
23
|
+
|
|
24
|
+
## What it does
|
|
25
|
+
|
|
26
|
+
Your agent researches apartments with live Fless data and hands you a pre-filled hunt link:
|
|
27
|
+
|
|
28
|
+
- **search_cities** — live + coming-soon cities
|
|
29
|
+
- **get_city_overview** — neighborhoods with median rents + WalkRating™ scores
|
|
30
|
+
- **get_neighborhood** — full detail (rents, scores, POI counts)
|
|
31
|
+
- **get_hunt_requirements** — every hunt field, enum, binary restriction (55+, pets, smoking), transparent pricing
|
|
32
|
+
- **build_hunt_link** — validate a brief → URL that pre-fills the entire hunt form
|
|
33
|
+
- **check_hunt_link** — created → opened → started lifecycle
|
|
34
|
+
- **search / fetch** — ChatGPT deep-research compatibility pair
|
|
35
|
+
|
|
36
|
+
All tools are read-only, no auth needed. Your human creates the account, verifies email, and pays — agents never do.
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
### Claude Desktop / any stdio MCP client
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"mcpServers": {
|
|
45
|
+
"fless": {
|
|
46
|
+
"command": "uvx",
|
|
47
|
+
"args": ["fless-mcp"]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Or with pip:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install fless-mcp
|
|
57
|
+
fless-mcp # speaks JSON-RPC on stdio
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Remote (no install needed)
|
|
61
|
+
|
|
62
|
+
Most clients connect to the hosted server directly:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
https://mcp.fless.io/mcp
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
See per-assistant setup guides (Claude, ChatGPT, Perplexity, Grok, Mistral Vibe, Codex, OpenClaw, Hermes): **https://fless.io/ai-agents**
|
|
69
|
+
|
|
70
|
+
## Environment
|
|
71
|
+
|
|
72
|
+
| Variable | Default | Purpose |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| `FLESS_MCP_URL` | `https://mcp.fless.io/mcp` | Remote server (fallback: `https://www.fless.io/mcp`) |
|
|
75
|
+
| `FLESS_MCP_UA` | `fless-mcp/1.0.0 (+https://fless.io/ai-agents)` | User-Agent |
|
|
76
|
+
|
|
77
|
+
## The skill (recommended companion)
|
|
78
|
+
|
|
79
|
+
`fless-apartment-hunt` — an [Agent Skills](https://agentskills.io)-standard skill that teaches your agent the full workflow:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
hermes skills install well-known:https://fless.io
|
|
83
|
+
# or from GitHub:
|
|
84
|
+
npx skills add fless-io/skills
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
MIT
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
+
## Install
|
|
20
|
+
|
|
21
|
+
### Claude Desktop / any stdio MCP client
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"mcpServers": {
|
|
26
|
+
"fless": {
|
|
27
|
+
"command": "uvx",
|
|
28
|
+
"args": ["fless-mcp"]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Or with pip:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install fless-mcp
|
|
38
|
+
fless-mcp # speaks JSON-RPC on stdio
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Remote (no install needed)
|
|
42
|
+
|
|
43
|
+
Most clients connect to the hosted server directly:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
https://mcp.fless.io/mcp
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
See per-assistant setup guides (Claude, ChatGPT, Perplexity, Grok, Mistral Vibe, Codex, OpenClaw, Hermes): **https://fless.io/ai-agents**
|
|
50
|
+
|
|
51
|
+
## Environment
|
|
52
|
+
|
|
53
|
+
| Variable | Default | Purpose |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| `FLESS_MCP_URL` | `https://mcp.fless.io/mcp` | Remote server (fallback: `https://www.fless.io/mcp`) |
|
|
56
|
+
| `FLESS_MCP_UA` | `fless-mcp/1.0.0 (+https://fless.io/ai-agents)` | User-Agent |
|
|
57
|
+
|
|
58
|
+
## The skill (recommended companion)
|
|
59
|
+
|
|
60
|
+
`fless-apartment-hunt` — an [Agent Skills](https://agentskills.io)-standard skill that teaches your agent the full workflow:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
hermes skills install well-known:https://fless.io
|
|
64
|
+
# or from GitHub:
|
|
65
|
+
npx skills add fless-io/skills
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## License
|
|
69
|
+
|
|
70
|
+
MIT
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "fless-mcp"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Fless apartment-hunting MCP server (stdio proxy to https://mcp.fless.io/mcp) — research cities, neighborhoods, rents, and build pre-filled hunt links."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
requires-python = ">=3.9"
|
|
12
|
+
authors = [{name = "Fless", email = "dev@folyfoly.com"}]
|
|
13
|
+
keywords = ["mcp", "apartment", "hunting", "rental", "ai", "agent", "llm"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 5 - Production/Stable",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Topic :: Communications :: Chat",
|
|
20
|
+
]
|
|
21
|
+
dependencies = []
|
|
22
|
+
|
|
23
|
+
[project.urls]
|
|
24
|
+
Homepage = "https://fless.io/ai-agents"
|
|
25
|
+
Documentation = "https://fless.io/hunt-how-to.md"
|
|
26
|
+
Repository = "https://github.com/fless-io/skills"
|
|
27
|
+
Changelog = "https://github.com/fless-io/skills/blob/main/CHANGELOG.md"
|
|
28
|
+
|
|
29
|
+
[project.scripts]
|
|
30
|
+
fless-mcp = "fless_mcp.proxy:main"
|
|
31
|
+
|
|
32
|
+
[tool.setuptools.packages.find]
|
|
33
|
+
where = ["src"]
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Stdio <-> Streamable-HTTP proxy for the Fless MCP server.
|
|
2
|
+
|
|
3
|
+
Bridges local stdio MCP clients (Claude Desktop, etc.) to the remote
|
|
4
|
+
Fless server at https://mcp.fless.io/mcp so `uvx fless-mcp` works as a
|
|
5
|
+
local server entry with zero configuration.
|
|
6
|
+
"""
|
|
7
|
+
import json
|
|
8
|
+
import os
|
|
9
|
+
import sys
|
|
10
|
+
import urllib.request
|
|
11
|
+
|
|
12
|
+
REMOTE = os.environ.get("FLESS_MCP_URL", "https://mcp.fless.io/mcp")
|
|
13
|
+
UA = os.environ.get("FLESS_MCP_UA", "fless-mcp/1.0.0 (+https://fless.io/ai-agents)")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def main():
|
|
17
|
+
"""Pump newline-delimited JSON-RPC between stdin and the remote server.
|
|
18
|
+
|
|
19
|
+
The Fless server is stateless (read-only tools), so each request is
|
|
20
|
+
forwarded independently and the response body is written back verbatim.
|
|
21
|
+
"""
|
|
22
|
+
while True:
|
|
23
|
+
line = sys.stdin.readline()
|
|
24
|
+
if not line:
|
|
25
|
+
break
|
|
26
|
+
line = line.strip()
|
|
27
|
+
if not line:
|
|
28
|
+
continue
|
|
29
|
+
try:
|
|
30
|
+
# Parse to validate; forward the original text unchanged
|
|
31
|
+
json.loads(line)
|
|
32
|
+
except json.JSONDecodeError:
|
|
33
|
+
sys.stderr.write(f"fless-mcp: dropping non-JSON line: {line[:80]}\n")
|
|
34
|
+
continue
|
|
35
|
+
|
|
36
|
+
req = urllib.request.Request(
|
|
37
|
+
REMOTE,
|
|
38
|
+
data=line.encode(),
|
|
39
|
+
headers={
|
|
40
|
+
"Content-Type": "application/json",
|
|
41
|
+
"Accept": "application/json, text/event-stream",
|
|
42
|
+
"User-Agent": UA,
|
|
43
|
+
},
|
|
44
|
+
method="POST",
|
|
45
|
+
)
|
|
46
|
+
try:
|
|
47
|
+
with urllib.request.urlopen(req, timeout=120) as resp:
|
|
48
|
+
body = resp.read().decode(errors="replace")
|
|
49
|
+
ct = resp.headers.get("content-type", "")
|
|
50
|
+
except Exception as e:
|
|
51
|
+
err = {"jsonrpc": "2.0", "id": None,
|
|
52
|
+
"error": {"code": -32000, "message": f"fless-mcp proxy error: {e}"}}
|
|
53
|
+
sys.stdout.write(json.dumps(err) + "\n")
|
|
54
|
+
sys.stdout.flush()
|
|
55
|
+
continue
|
|
56
|
+
|
|
57
|
+
if "text/event-stream" in ct:
|
|
58
|
+
# Unwrap SSE: emit each data: payload as its own JSON line
|
|
59
|
+
for sse_line in body.splitlines():
|
|
60
|
+
if sse_line.startswith("data:"):
|
|
61
|
+
payload = sse_line[5:].strip()
|
|
62
|
+
if payload:
|
|
63
|
+
sys.stdout.write(payload + "\n")
|
|
64
|
+
else:
|
|
65
|
+
sys.stdout.write(body.rstrip("\n") + "\n")
|
|
66
|
+
sys.stdout.flush()
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
if __name__ == "__main__":
|
|
70
|
+
main()
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: fless-mcp
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Fless apartment-hunting MCP server (stdio proxy to https://mcp.fless.io/mcp) — research cities, neighborhoods, rents, and build pre-filled hunt links.
|
|
5
|
+
Author-email: Fless <dev@folyfoly.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://fless.io/ai-agents
|
|
8
|
+
Project-URL: Documentation, https://fless.io/hunt-how-to.md
|
|
9
|
+
Project-URL: Repository, https://github.com/fless-io/skills
|
|
10
|
+
Project-URL: Changelog, https://github.com/fless-io/skills/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: mcp,apartment,hunting,rental,ai,agent,llm
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: Communications :: Chat
|
|
17
|
+
Requires-Python: >=3.9
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
|
|
20
|
+
# fless-mcp
|
|
21
|
+
|
|
22
|
+
[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`.
|
|
23
|
+
|
|
24
|
+
## What it does
|
|
25
|
+
|
|
26
|
+
Your agent researches apartments with live Fless data and hands you a pre-filled hunt link:
|
|
27
|
+
|
|
28
|
+
- **search_cities** — live + coming-soon cities
|
|
29
|
+
- **get_city_overview** — neighborhoods with median rents + WalkRating™ scores
|
|
30
|
+
- **get_neighborhood** — full detail (rents, scores, POI counts)
|
|
31
|
+
- **get_hunt_requirements** — every hunt field, enum, binary restriction (55+, pets, smoking), transparent pricing
|
|
32
|
+
- **build_hunt_link** — validate a brief → URL that pre-fills the entire hunt form
|
|
33
|
+
- **check_hunt_link** — created → opened → started lifecycle
|
|
34
|
+
- **search / fetch** — ChatGPT deep-research compatibility pair
|
|
35
|
+
|
|
36
|
+
All tools are read-only, no auth needed. Your human creates the account, verifies email, and pays — agents never do.
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
### Claude Desktop / any stdio MCP client
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"mcpServers": {
|
|
45
|
+
"fless": {
|
|
46
|
+
"command": "uvx",
|
|
47
|
+
"args": ["fless-mcp"]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Or with pip:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install fless-mcp
|
|
57
|
+
fless-mcp # speaks JSON-RPC on stdio
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Remote (no install needed)
|
|
61
|
+
|
|
62
|
+
Most clients connect to the hosted server directly:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
https://mcp.fless.io/mcp
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
See per-assistant setup guides (Claude, ChatGPT, Perplexity, Grok, Mistral Vibe, Codex, OpenClaw, Hermes): **https://fless.io/ai-agents**
|
|
69
|
+
|
|
70
|
+
## Environment
|
|
71
|
+
|
|
72
|
+
| Variable | Default | Purpose |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| `FLESS_MCP_URL` | `https://mcp.fless.io/mcp` | Remote server (fallback: `https://www.fless.io/mcp`) |
|
|
75
|
+
| `FLESS_MCP_UA` | `fless-mcp/1.0.0 (+https://fless.io/ai-agents)` | User-Agent |
|
|
76
|
+
|
|
77
|
+
## The skill (recommended companion)
|
|
78
|
+
|
|
79
|
+
`fless-apartment-hunt` — an [Agent Skills](https://agentskills.io)-standard skill that teaches your agent the full workflow:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
hermes skills install well-known:https://fless.io
|
|
83
|
+
# or from GitHub:
|
|
84
|
+
npx skills add fless-io/skills
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
MIT
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
src/fless_mcp/__init__.py
|
|
4
|
+
src/fless_mcp/__main__.py
|
|
5
|
+
src/fless_mcp/proxy.py
|
|
6
|
+
src/fless_mcp.egg-info/PKG-INFO
|
|
7
|
+
src/fless_mcp.egg-info/SOURCES.txt
|
|
8
|
+
src/fless_mcp.egg-info/dependency_links.txt
|
|
9
|
+
src/fless_mcp.egg-info/entry_points.txt
|
|
10
|
+
src/fless_mcp.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
fless_mcp
|