Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for pls-touch-grass

Pod holds 12 of 12 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to pls-touch-grass.

Most discussed

Keep the MCP Registry entry in sync on release

The server is listed in the MCP Registry as io.github.Rinava/pls-touch-grass, powered by a hand-maintained server.json. Hand-maintained version fields drift; it's what they do.

Shape

  • Fold registry publishing into the release workflow from #5: after npm publish succeeds, update/validate server.json and push it to the registry with mcp-publisher (GitHub OIDC works in Actions — no long-lived secret)
  • The version in server.json should come from package.json at build time, same ph

Read the thread · 2026-08-20 · open · 0 comments

Plan B: when the weather is hostile, offer indoor grass-adjacent absolution

When it rains, grass_conditions says "you're forgiven until it stops" — and that's it. A dead end. The user came for absolution and got a rain check.

Shape

  • The hostile-weather verdicts (rain, 35°C+, and night/bad-air once #8/#9 land) should come with a plan B: stand near a window, water a houseplant, step onto a balcony, stretch — small, doable, indoors
  • A short curated list in src/lib/ (rotating through them beats repeating one), appended to the existing verdict text in `src/tools/g

Read the thread · 2026-08-20 · open · 0 comments

grass_stats: the weekly reckoning

The state file already remembers every time you touched grass. A grass_stats tool would turn that history into a weekly reckoning: days outside, longest indoor stretch, current streak (#3), rage incidents absolved.

Shape

  • New read-only tool in src/tools/, registered in src/index.ts like the other five
  • Derives everything from existing state in ~/.pls-touch-grass.json — if a stat needs new state, coordinate with #3 rather than inventing a second history
  • The description should mak

Read the thread · 2026-08-20 · open · 0 comments

It is 3am. Do not send the user to the park.

The server currently has no concept of night. Rage at your AI at 3:47am and frustration_detector will cheerfully route you toward a dark, closed park. This is legally distinct from wellness.

Shape

  • Open-Meteo's forecast API returns sunrise/sunset in the daily fields — one more parameter on the fetch that grass_conditions already makes
  • After dark, the verdict changes tone: acknowledge the hour, suggest the balcony/a window/going to bed, and forgive the grass debt until sunrise

Read the thread · 2026-08-20 · open · 0 comments

Air quality in grass_conditions — sometimes the outside is the hazard

grass_conditions checks temperature and rain, then shoves you out the door. But on a bad-air day the responsible thing is to keep you in. Open-Meteo has an air quality API — same provider, no key, same shape as what we already call:

https://air-quality-api.open-meteo.com/v1/air-quality?latitude=…&longitude=…&current=us_aqi

Shape

  • Second fetch in src/tools/grass-conditions.ts, same 3s timeout discipline; if it fails, weather alone still answers — air quality is a bonus, never a

Read the thread · 2026-08-20 · open · 0 comments

Wheelchair-accessible park filtering in where_to_touch_grass

Everyone deserves to be sent outside against their will. The Overpass query in src/tools/where-to-touch-grass.ts fetches leisure=park and nothing else — but OpenStreetMap tags accessibility (wheelchair=yes/limited/no) on many parks, and we're leaving that data on the table.

Shape

  • Ask Overpass for the wheelchair tag in the same query (it's out tags center 30 territory — no extra request)
  • Surface it in the results ("step-free" or similar) so the model can mention it
  • An optiona

Read the thread · 2026-08-20 · open · 0 comments

Windows: verify state path and add windows-latest to CI

CI runs on ubuntu-latest only. The README confidently tells Windows users where claude_desktop_config.json lives, but nothing actually verifies the server itself behaves on Windows — state file resolution (~/.pls-touch-grass.json), path handling, line endings in the stdio transport.

Shape

  • Add windows-latest to the matrix in .github/workflows/ci.yml and see what breaks (possibly nothing — that's a fine outcome, then this issue is just the matrix line)
  • If ~ resolution is done by

Read the thread · 2026-08-20 · open · 0 comments

Release workflow: build and attach the .mcpb on tag push

Releases currently mean running npm run build:mcpb locally and dragging the file onto a GitHub Release by hand. The robot should do this.

Shape

  • A workflow on v* tag push: npm ci, npm test, npm run build:mcpb, create the Release, attach pls-touch-grass-mcp-<version>.mcpb
  • The manifest already generates from package.json, so the version is the tag's problem alone
  • Bonus round: npm publish --provenance from the same workflow, so npm shows the green checkmark and the whole r

Read the thread · 2026-08-20 · open · 0 comments

Most recent

Demo spots for your own city

--demo mode ships curated Buenos Aires spots. Your city has parks too, and they deserve representation.

How

  • One object per park in src/lib/demo.ts, following the existing shape
  • The opinion is mandatory. "A park" is data; "the park where the parakeets have formed a government" is a demo spot. Look at the existing entries for calibration
  • npm test must stay green (test/demo.test.mjs checks the shapes)

This is a standing invitation, not a one-shot: PRs from any city, any time

Read the thread · 2026-08-20 · open · 0 comments

Streak tracking for consecutive grass days

You touched grass yesterday. And the day before. That's a streak, and streaks are how gyms and language apps have been manipulating humans for years — time to use that power for going outside.

Shape

  • touched_grass (src/tools/touched-grass.ts) already logs each event; derive or store the streak in src/lib/state.ts
  • Report it in the tool's reply so the model can celebrate ("day 7 — a full week of being a person")
  • Decide the edge honestly: does a day count by calendar date in local t

Read the thread · 2026-08-20 · open · 0 comments

Per-project thresholds instead of one global tolerance

Indoor tolerance is a single merciless global default (2 minutes). But some repos are greenhouses and some are basements: the threshold should be able to vary by project.

Shape

  • gotta_go already accepts threshold_minutes per call; this is about remembering a preference per project (working directory is a reasonable key)
  • State lives in ~/.pls-touch-grass.json (src/lib/state.ts) — extend it, don't multiply files
  • The model should be able to set it conversationally ("this repo ge

Read the thread · 2026-08-20 · open · 0 comments

HTTP transport: serve the same factory over fetch

Right now this server is stdio on your own machine, which is why claude.ai gets a flat "No" in the README. SDK v2's createMcpHandler can serve the same server factory over fetch, which is the road to remote use (and onto claude.ai as a custom connector).

Shape

  • Keep src/index.ts as the stdio entry; add an HTTP entry that reuses the exact same tool registration — one factory, two transports
  • State is currently one JSON file in ~; decide what state means when the server isn't on your

Read the thread · 2026-08-20 · open · 0 comments

The remaining reports are on the project's issue tracker.