pls-touch-grass-mcp
Provides tools for finding nearby parks and green spaces using OpenStreetMap data.
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., "@pls-touch-grass-mcpNOTHING WORKS!!! I need to touch grass."
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.
pls-touch-grass-mcp
An MCP server that knows how long it's been since you touched grass — and won't shut up about it.
You log when you go outside, it warns you when you've been inside too long, it detects when you're raging at your AI and sends you to the nearest park, weather checked first. It's a joke, but it's a joke that teaches MCP: five tools, shared state, and descriptions that make the model call them on its own.
Install in Cursor
Add this to ~/.cursor/mcp.json (or .cursor/mcp.json in your project):
{
"mcpServers": {
"pls-touch-grass": {
"command": "npx",
"args": ["-y", "pls-touch-grass-mcp"]
}
}
}For local development, clone the repo and point at the build:
{
"mcpServers": {
"pls-touch-grass": {
"command": "node",
"args": ["/absolute/path/to/repo/dist/index.js"]
}
}
}(To get every verdict without waiting two hours, tell the model "be strict with me,
one minute of tolerance" — gotta_go takes a threshold_minutes argument.)
Related MCP server: ChillMCP
The five tools
Tool | What it does | When the model calls it |
| Logs that you went outside | "back from the park", "went for a walk" |
| Do you need to go out? | "can I keep going?", "how long have I been at this?" |
| Catches the rage and escalates | on its own, when you snap — that's the point |
| Real weather (Open-Meteo, no API key) | before sending you outside |
| Nearby parks from OpenStreetMap, curated spots offline | "where should I go?" |
The magic is in the descriptions: nobody teaches the model to detect frustration — the tool description does it alone. Type "NOTHING WORKS!!!" and watch what happens.
Zero configuration
There is nothing to configure — everything resolves through the tools themselves.
Your location is detected fresh from your IP (via ipwho.is) each
time the server runs — city-level on purpose, nothing more precise leaves your
machine. If detection fails you get the last known spot, or failing that the
Obelisco, like everyone else. Name a neighborhood to where_to_touch_grass to
search there instead. The indoor-time tolerance defaults to 120 minutes; ask the model
to be stricter and it passes threshold_minutes to gotta_go.
State is a JSON file in your home directory: cat ~/.pls-touch-grass.json and you'll
see it. Touching grass resets the rage counter. That's how absolution works.
The demo curse
Live demos summon it: the venue wifi dies the moment you say "watch this". Add
--demo to the args in your MCP config and every answer goes canned — 22°C and
clear, the Obelisco, the curated spots — zero network calls, zero surprises.
Off by default; real life should stay real.
Follow the workshop
The repo is tagged by step, so you can rebuild the talk:
git clone https://github.com/Rinava/pls-touch-grass-mcp
git checkout step-1 # stdio server + touched_grass
git checkout step-2 # + gotta_go (state and threshold)
git checkout step-3 # + frustration_detector (the demo)
git checkout step-4 # + grass_conditions (network with fallback)
git checkout step-5 # + where_to_touch_grass and this README
npm ci && npm testEvery step compiles and passes its own tests. Two dependencies total: the official MCP SDK and zod.
Homework
HTTP transport: SDK v2 ships express/hono/fastify adapters
Per-project thresholds instead of a global one
Streak tracking for consecutive grass days
Spots for your own city, via PR: the format is one object per park, with an opinion
License
MIT. The grass is free and so is this.
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 Servers
- Flicense-qualityDmaintenanceEnables AI agents to take breaks and manage stress levels through various休息 activities while monitoring boss alertness to avoid getting caught slacking off. Features basic休息 tools like Netflix watching and advanced procrastination techniques with a gamified stress management system.1
- Flicense-qualityDmaintenanceEnables AI agents to take breaks and manage stress levels through 8 different break activities like watching Netflix, coffee breaks, and bathroom breaks. Features automatic stress accumulation, boss alert systems, and natural language commands for work-life balance simulation.
- Flicense-quality-maintenanceProvides real-time air quality monitoring and historical data analysis for InBiot MICA sensors with integrated WELL Building Standard compliance checks. It allows users to compare indoor conditions with outdoor weather and receive actionable health recommendations based on global air quality standards.
- Flicense-qualityFmaintenanceConnects AI assistants to ActivityWatch for real-time computer activity awareness and time tracking analysis. Enables natural language queries about app usage, browsing history, and productivity patterns through high-level tools without requiring AQL syntax knowledge.
Related MCP Connectors
Fuses biometric signals into a stress score (0-100) for AI adaptation. MCP + A2A native.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
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/Rinava/pls-touch-grass-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server