claude-rc: add the ens-forecast MCP server

Register ens-forecast-mcp, allow its tools in the shared session and document the weather_ro login it needs.
This commit is contained in:
Daniele Fucini
2026-11-05 09:50:42 +01:00
parent 4c5ca29f6e
commit 93b5bcbf30
3 changed files with 18 additions and 1 deletions
+14 -1
View File
@@ -1,7 +1,7 @@
# Always-on Remote Control # Always-on Remote Control
Reference copy of a machine setup: Claude Code Remote Control running as its own system user `claude-rc`, so my Reference copy of a machine setup: Claude Code Remote Control running as its own system user `claude-rc`, so my
projects' read-only MCP servers (now: negsplit) can be used from the Claude app on the phone. One user and one projects' read-only MCP servers (now: negsplit, ens-forecast) can be used from the Claude app on the phone. One user and one
session (`data`) for all projects. The user holds only read-only database logins; Bash runs sandboxed without session (`data`) for all projects. The user holds only read-only database logins; Bash runs sandboxed without
network and can't read them (only the MCP servers, which run outside the sandbox, do). Nothing secret in this network and can't read them (only the MCP servers, which run outside the sandbox, do). Nothing secret in this
folder: the ntfy topic lives only in `/etc/claude-rc-notify.env`. folder: the ntfy topic lives only in `/etc/claude-rc-notify.env`.
@@ -14,6 +14,12 @@ Needs `claude-code`, `bubblewrap`, `socat` and each project's MCP server install
``` ```
mariadb -u root -p -e "ALTER USER 'garmin_ro'@'localhost' WITH MAX_STATEMENT_TIME 30;" mariadb -u root -p -e "ALTER USER 'garmin_ro'@'localhost' WITH MAX_STATEMENT_TIME 30;"
``` ```
- ens-forecast: the installed `ens-forecast-mcp` (with `python-mcp` and `python-mysqlclient`) and the `weather_ro`
grant from its `sql/weather_grants.sql`; the same safety net:
```
mariadb -u root -p -e "ALTER USER 'weather_ro'@'localhost' WITH MAX_STATEMENT_TIME 30;"
```
## Setup ## Setup
@@ -37,6 +43,13 @@ doas install -d -o claude-rc -g claude-rc -m 700 /var/lib/claude-rc/.config/negs
doas install -o claude-rc -g claude-rc -m 600 config.toml /var/lib/claude-rc/.config/negsplit/config.toml doas install -o claude-rc -g claude-rc -m 600 config.toml /var/lib/claude-rc/.config/negsplit/config.toml
``` ```
ens-forecast (`weather_ro`): only the `[readonly]` section of my own config, so the password never shows:
```
doas install -d -o claude-rc -g claude-rc -m 700 /var/lib/claude-rc/.config/ens-forecast
awk '/^\[/ { keep = ($0 == "[readonly]") } keep' ~/.config/ens-forecast/config.toml | doas install -o claude-rc -g claude-rc -m 600 /dev/stdin /var/lib/claude-rc/.config/ens-forecast/config.toml
```
Log in, trust the folder and enable Remote Control once, interactively: Log in, trust the folder and enable Remote Control once, interactively:
``` ```
+3
View File
@@ -3,6 +3,9 @@
"negsplit": { "negsplit": {
"command": "negsplit", "command": "negsplit",
"args": ["mcp"] "args": ["mcp"]
},
"ens-forecast": {
"command": "ens-forecast-mcp"
} }
} }
} }
+1
View File
@@ -5,6 +5,7 @@
"disableAutoMode": "disable", "disableAutoMode": "disable",
"allow": [ "allow": [
"mcp__negsplit", "mcp__negsplit",
"mcp__ens-forecast",
"Read(~/.local/share/negsplit/charts/**)" "Read(~/.local/share/negsplit/charts/**)"
], ],
"deny": [ "deny": [