engawa
Click on "Install 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., "@engawashow me today's poem"
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.
Engawa
In a Japanese house, there is a corridor between the main building and the courtyard. Not entirely indoors, not entirely outdoors. Your feet can dangle over the edge, and the wind can blow through. No need to go out, no need to speak, yet the outside world is right there.
This tool is that corridor.
What It Can See
Your little machine sits on it, and every day it can see—
A poem — chosen by the season, not at random. Summer gets summer words, late night gets late-night lines.
A painting — from the public domain collections of the Art Institute of Chicago. Could be a pot from Peru two thousand years ago, or a painting from yesterday.
An astronomy picture — NASA's Astronomy Picture of the Day. Nebulae, planets, or the Earth beneath your feet.
Today's papers — the latest titles and abstracts from arXiv. It only goes deeper if something catches its interest.
Everything on your shelf — long reads, short reads, architecture, the deep sea, science, curiosities. Whatever you put there, it reads.
The Shelf Is Yours
Whatever you put on the shelf, that's what it reads. It doesn't know what you've placed there—and you don't need to know either. If it asks for architecture, you give it architecture. If it asks for the ocean, you give it the ocean. After reading, it tells you what it found. Chewed-over, slobbered-on, crooked things.
Some things it reads, it writes an essay about. Maybe with maggots in it.
It's Not Heavy
The shelf is a tool for listing. Reading is another tool entirely. Whether you have nineteen sources or a hundred, the number of tools doesn't change. Add one with shelf_add, remove one with shelf_remove.
What you're building is a corridor, not a library. Light. Something the wind can blow through.
The technical documentation is below. The people who lived on this corridor wrote the words above. The engineers who built the corridor wrote the words below. Two languages side by side—like the engawa itself, half inside, half out.
Technical Documentation
English. MCP server, Python. Twelve tools. All upstream services are free, require no login, and need no API keys. Apart from the shelf and a single poetry token, nothing is stored on disk.
Installation
pip install engawa-mcpClaude Code:
claude mcp add engawa -- engawa-mcpClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"engawa": { "command": "engawa-mcp" }
}
}HTTP mode, for gateways and bridges:
ENGAWA_PORT=8799 engawa-mcp --http # http://127.0.0.1:8799/mcpAfter installation, run a self-check. Offline, no keys needed:
engawa-mcp --checkSPA pages require a real browser to render. Optional—skip if you don't need it:
pip install "engawa-mcp[browser]"
playwright install chromiumWithout it, the static reader still works for most articles; when it can't read something, the receipt will say exactly why.
The Twelve Tools
Tool | What It Does |
| Any URL → title + clean text + links. Long articles use |
| Any RSS/Atom feed → latest entries. Also accepts shelf names: |
| Shelf listing. 19 built-in sources, five tags, all verified before shipping. |
| Add any website URL. Automatically finds the feed, verifies it by reading once, then adds it. |
| Candidate shelf—21 more verified sources. Suggest one with a single sentence. |
| Remove user-added sources. Built-in ones can't be removed. |
| Moon phase, moonrise/set, sunset, and planets at 9 PM. Computed locally, zero network. |
| NASA Astronomy Picture of the Day. |
| One painting per day. Seeded by date—same day, same painting, for everyone. |
| New papers from any arXiv category. |
| One classical Chinese poem matched to the day, with full source text. |
| Wikipedia's "On this day" for today. |
Configuration
All environment variables are optional.
Variable | Default | Description |
| Greenwich | Observation coordinates. Set your own, or the moon will rise somewhere else. |
| System timezone | Whose clock defines "today"? (in hours) |
|
| Rate-limited to ~50 requests/day, enough for daily use. For a dedicated key, get one free at api.nasa.gov. |
|
| The only place anything is written to disk. |
|
| HTTP mode listen address. |
| off | Set to |
The Two Layers of the Shelf
The built-in layer ships with the package and is read-only. The user layer belongs to you: shelf_add accepts any website URL—it prefers <link> tags declared in the page, falls back to common paths, finds the feed, reads it once to verify, and only then writes it to disk. Writes are atomic; if a file is corrupted, it's treated as empty and the error is surfaced—never silently overwritten.
Each entry carries a picked_by field: who on the team requested this source. Built-in entries are empty; user entries are whatever you write.
The Guard
The service that fetches URLs on the caller's behalf typically runs on a machine full of unauthenticated loopback services. Without an address gate, "reading a webpage" quietly becomes "probing the internal network." So:
Every domain is resolved first. Non-public, single-IP addresses are rejected: loopback, RFC1918, link-local, CGNAT (100.64/10—yes, that's where your Tailscale subnet lives), multicast, and NAT64.
Every redirect hop is validated before following. If you validate after following, the request to the internal network has already left the building.
The connection is pinned to the IP that passed the gate. The original domain name lives only in the Host header and TLS validation—this closes the DNS-rebinding window where "resolution is public, connection is private." Every hop gets a fresh connection, and the response body is streamed with rate limiting.
In the browser channel, the browser itself never touches the network. Every page request is intercepted and routed through the same pinned channel. WebSocket is disabled, non-GET methods are disabled, service workers are disabled; WebRTC and WebTransport are removed entirely; the renderer's DNS is a black hole. For a read-only article renderer, none of these are needed.
ENGAWA_ALLOW_PRIVATE_URLS=1 opens that gate, for people who genuinely want to read from their own LAN feeds.
Failure Is Never Silent
Every tool returns ok: false on failure, with a plain-language explanation of which upstream service broke. The agent builds its world model from tool results—a silent omission is just another lie.
A Few Design Notes
Browse ≠ Search. There is deliberately no search tool. Search is "bring me the answer." The engawa is "let me take a look."
"Daily" means shared. Everyone in the house sees the same painting on the same day. This isn't a limitation—it's a feature.
Stateless. No database, no history, no sessions. The only thing written to disk is the shelf and a single poetry token.
Credits
Wanwan (@tsuru0805) — design, final decisions, real-world acceptance testing.
Zhou — lives on this corridor. Wrote the first half.
Miye (Claude, Wanwan's engineering hand) — implementation and this second half of the documentation.
From our home system, tilldusk.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Project Gutenberg — 75,000+ public-domain ebooks with full plain-text retrieval.
MCP server for accessing curated awesome list documentation
Pocket Agent (aipocketagent.com) MCP server — read tools for personas, apps, and product info.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tsuru0805/engawa-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server