feat(mcp-catalog): add Somvia Apple Health MCP - #69770
Conversation
teknium1
left a comment
There was a problem hiding this comment.
Thanks for using the MCP catalog rather than expanding the core tool surface.
Problems
optional-mcps/somvia/manifest.yaml:25says newly added server tools stay opt-in, but all eight known tools are listed underdefault_enabled. On a successful interactive probe,hermes_cli/mcp_catalog.py:681-687treats selecting every probed tool as "no filter" and explicitly permits future tools to auto-enable. Therefore the manifest does not preserve the reviewed eight-tool boundary it describes.
Suggested changes
- Add a manifest/install path that persists
tools.includefor a declared reviewed default set even when it currently equals the complete probed set, and add a successful-probe regression test intests/hermes_cli/test_mcp_catalog.py.
Automated hermes-sweeper review.
|
|
||
| # Keep new server tools opt-in until this manifest is reviewed again. Every | ||
| # tool below is annotated read-only by the server. | ||
| tools: |
There was a problem hiding this comment.
This promise is not upheld when the server currently exposes exactly these eight tools: hermes_cli/mcp_catalog.py:681-687 clears tools.include when all probed tools are selected, which explicitly auto-enables future upstream tools. Please add installer/manifest semantics that retain an explicit reviewed include list in this case.
There was a problem hiding this comment.
Fixed in a2d1e46. When a manifest explicitly declares tools.default_enabled, the successful interactive path now persists the confirmed selection as tools.include even if it covers every probed tool, so future server tools remain opt-in. Manifests without defaults retain the existing no-filter behavior. Added regression coverage for both paths; the focused Catalog suite passes 20/20.
Register Somvia's hosted Apple Health MCP with the current read-only tool set and explicit iPhone, Pro, sync, and token-rotation guidance. Declare SOMVIA_ACCESS_TOKEN for the upstream HTTP Bearer path so the entry can use either existing implementation without duplicating catalog installer code. Co-Authored-By: GPT-5 Codex <noreply@openai.com>
Use Hermes' existing native OAuth Catalog path for interactive setup so the entry is self-contained on current main. Keep the app-issued Bearer token documented for manual headless and VPS configurations, preserving Somvia's dual-auth model. Co-Authored-By: GPT-5 Codex <noreply@openai.com>
Keep an explicit include list when a catalog manifest declares default_enabled, even when a successful probe returns exactly that full set. Preserve the existing no-filter behavior for entries without manifest defaults, and document and test both paths. Co-Authored-By: GPT-5 Codex <noreply@openai.com>
bc63a5a to
a2d1e46
Compare
What does this PR do?
Adds Somvia to the Nous-reviewed MCP Catalog so Hermes users can discover and install its hosted Apple Health MCP from the built-in picker.
Somvia is a hosted, closed-source service: its iOS app handles HealthKit permission and sync, while
https://somvia.app/mcpexposes eight read-onlyhealth_*tools for daily metrics, sleep stages, workout summaries, splits, and bounded time series. The manifest discloses the iPhone and Pro prerequisites, pins the current reviewed tool set, and documents both supported authentication paths.This PR also tightens the existing Catalog installer contract for manifests that explicitly declare
tools.default_enabled: after a successful probe, Hermes now retains the confirmed selection intools.includeeven when it equals every tool currently reported by the server. That keeps tools added by the server later opt-in. Entries without manifest defaults retain the existing all-selected/no-filter behavior.Dual auth by design
Somvia's
/mcpendpoint supports both:som_Bearer token for headless, VPS, or unattended agents.A version 1 Hermes Catalog manifest selects one
auth.typefor its install flow rather than presenting an auth-method chooser. This entry usesauth.type: oauth, which current Hermesmainalready supports. On first connection Hermes can discover Somvia's authorization server, register a client, and open the browser flow.Bearer support remains available through Hermes' existing manual MCP configuration with
Authorization: Bearer ${SOMVIA_ACCESS_TOKEN}. The manifest'spost_installlinks the headless guide. This PR does not depend on the separate Catalog API-key header changes in #59586 or #67682.Related Issue
No separate Somvia issue exists; I searched open and closed issues and PRs before submitting.
Type of Change
Changes Made
optional-mcps/somvia/manifest.yamlhermes_cli/mcp_catalog.pytools.default_enabledlist as a persistent opt-in boundary;tests/hermes_cli/test_mcp_catalog.pywebsite/docs/user-guide/features/mcp.mdHow to Test
Run the focused Catalog suite:
Local result on current
main: 20 passed, 0 failed.Parse the shipped manifest with current
main._build_server_config()returns:{"url": "https://somvia.app/mcp", "auth": "oauth"}Verify OAuth discovery:
GET https://somvia.app/.well-known/oauth-protected-resource/mcpreturns the protected resource and
authorization_servers: ["https://somvia.app"].GET https://somvia.app/.well-known/oauth-authorization-serveradvertises
/authorize,/token,/register, PKCE, authorization-code, and refresh-token support.Run:
Complete Sign in with Apple in the browser, restart the Hermes session, then call
health_connection_statusplus one data-returning read-only tool. Confirm thatmcp_servers.somvia.tools.includecontains the eight reviewed tools after accepting the pre-checked list.For a headless verification, follow https://somvia.app/hermes-apple-health and configure the app-issued
som_token as an explicit Bearer header.The Somvia maintainer has verified the service's OAuth path with Claude and the manual Bearer path with Hermes. The Catalog OAuth config path is covered by Hermes' existing Catalog tests; this PR adds the successful-probe regression requested in review.
Public boundary checks performed while preparing this PR:
https://somvia.app/hermes-apple-health→200https://apps.apple.com/app/id6786936154→200200 application/json200 application/jsoninitializePOST →401 application/jsonNo access token or personal health data is included in this PR or its test output.
Security and privacy notes
som_token is shown to the user for agent setup; Somvia stores only its SHA-256 hash server-side.Checklist
Code
Documentation & Housekeeping
post_installand the linked public guide.website/docs/user-guide/features/mcp.md.cli-config.yaml.example— N/A; no config key was added or changed.CONTRIBUTING.md/AGENTS.md— N/A; contributor workflow is unchanged.Prepared with Codex assistance. The manifest, live OAuth metadata, public boundaries, Catalog semantics, and focused tests were reviewed during preparation; the Somvia maintainer verified Claude OAuth and Hermes Bearer connectivity.