diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-02 18:24:08 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-02 18:24:08 -0500 |
| commit | d2aaf86012060a1a70e7344470b9bff02b2fc422 (patch) | |
| tree | 48188496b1df9fcfedce02e9fdd3a086ab76813d | |
| parent | 3a06aff7eec20814f6b51b72691f4140668189c2 (diff) | |
| download | rulesets-d2aaf86012060a1a70e7344470b9bff02b2fc422.tar.gz rulesets-d2aaf86012060a1a70e7344470b9bff02b2fc422.zip | |
docs(mcp): note signal-cli + Google Voice dependency for signal-mcp
| -rw-r--r-- | mcp/README.org | 12 | ||||
| -rw-r--r-- | todo.org | 5 |
2 files changed, 15 insertions, 2 deletions
diff --git a/mcp/README.org b/mcp/README.org index c8cb49a..30dc082 100644 --- a/mcp/README.org +++ b/mcp/README.org @@ -79,3 +79,15 @@ A Google refresh token dies when scopes are re-granted, the Connected App is rem - *HTTP/SSE servers* (=linear=, =notion=) carry their own hosted OAuth — the first tool call in a session triggers an in-client auth flow; nothing local to cache. If a connection fails, it is usually an expired in-client grant, re-authorized from the client, not from this pipeline. - *stdio servers needing OAuth* (=google-docs-*=, =google-calendar=) cannot run an interactive browser flow under Claude Code's stdio loader. They depend on a *pre-seeded* token/keys file on disk — which is exactly why the installer materializes them from the bundle. A "Failed to connect" on one of these almost always means the on-disk token cache is missing or stale; rotate it (above) rather than re-running the server by hand. + +* Signal MCP — local signal-cli dependency + +The =signal-mcp= server (rymurr/signal-mcp, cloned to =~/.local/share/signal-mcp= with a =uv=-built =.venv=) wraps a locally-installed =signal-cli=. Unlike the OAuth servers, it carries no secret in the bundle — its only config is the =--user-id= it runs as, which is set in =servers.json=. + +Prerequisites on a fresh machine, in order: + +1. Install =signal-cli= (AUR: =signal-cli=; needs a JRE 21+). +2. Register the dedicated pager account. Signal requires a captcha for registration: run =signal-cli -a +<number> register=, follow the printed =signalcaptchas.org= link, solve it, and pass the resulting token to =signal-cli -a +<number> register --captcha <token>= within a minute or two before it expires. Signal then texts a code to the number; verify with =signal-cli -a +<number> verify <code>=. +3. =make install-mcp= registers =signal-mcp= pointed at that =--user-id=. + +The =--user-id= is a *dedicated* number (a Google Voice number registered to =signal-cli=), not Craig's primary. Signal mobile won't push-notify a message an account sends to itself, so paging from the primary to itself is silent; a distinct sender account reaching Craig's account notifies normally. Craig's account hides its phone number under phone-number privacy, so the destination is its stable account UUID rather than a number. The same account and recipient back the =page-signal= CLI wrapper (=PAGE_SIGNAL_ACCOUNT= / =PAGE_SIGNAL_TO=). The MCP server is the two-way path (=receive_message= to listen for replies); =page-signal= is the fast send-only path. @@ -67,12 +67,13 @@ Pearl recommends a one-page spec (problem + design + open questions + acceptance *** 2026-05-28 Thu @ 08:12:55 -0500 Pearl shipped patterns 4-6, filed alongside the prior two Three more pearl handoffs landed and were filed during this audit. Filed: [[file:docs/design/2026-05-28-pattern-catalog-prompt-labels-and-defaults.org][prompt-labels-and-defaults]] (patterns 4-5: label-matches-behavior, default-most-common with friction-proportional-to-consequence) and [[file:docs/design/2026-05-28-pattern-catalog-prompt-collapse.org][prompt-collapse]] (pattern 6: collapse N orthogonal prompts into one enriched prompt). The catalog's evidence base is now four pearl notes in =docs/design/= covering six patterns plus the synthesizing principle Pearl articulated — "choices on screen, accurately labeled, ordered by what the user most often wants, friction sized to the cost of being wrong." -** TODO [#B] Add Signal MCP server (rymurr/signal-mcp) :feature: -SCHEDULED: <2026-05-29 Fri> +** DONE [#B] Add Signal MCP server (rymurr/signal-mcp) :feature: +CLOSED: [2026-06-02 Tue] :PROPERTIES: :CREATED: [2026-05-29 Fri] :LAST_REVIEWED: 2026-05-29 :END: +Done 2026-06-02. Registered signal-cli to the Google Voice pager account, added the signal-mcp entry to servers.json, installed via make install-mcp (claude mcp list shows it connected), and documented the signal-cli + GV dependency in mcp/README.org. The GV-registration dependency this task flagged is resolved. Shipped in cfaff12 (page-signal routing) and this commit (README). Install [[https://github.com/rymurr/signal-mcp][rymurr/signal-mcp]] so Claude can call =send_message_to_user=, =send_message_to_group=, and =receive_message= natively rather than shelling out to the =page-signal= wrapper. Python, MCP framework, depends on =signal-cli= being configured locally. |
