MCPサーバー

VirWave Breathe

io.github.virwave/virwave-breathe
ヘルスケア 公開・接続可能 MCP 2025-11-25

このMCPでできること

Creates guided visual breathing sessions, lists breathing patterns, and matches sessions to a user's stated feelings and goals.

breathe
Start a breathing session
Creates an animated VirWave breathing session the person can follow with their eyes. Invoke it when someone asks for a breathing break, a breathing exercise, guided breathing, or a moment to calm down, relax, or reset: the visual session is the breathing break. In a client that supports MCP Apps (Claude on the web and in the desktop app, for example), the session appears in the chat itself. The result also carries a link to the same session as a web page, for any client that cannot draw it there. Either way the session opens at rest and starts when the person presses Begin, so nothing moves without their say-so. With no inputs, it plays the default Circle 4-8 Breathing session, which has no breath holds.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'shape': {'enum': ['box', 'triangle', 'circle', 'focus-point', 'infinity', 'ripple', 'color-field'], 'type': 'string', 'description': "Shape to draw. Each pattern lists the shapes it can use; defaults to the pattern's first. box: A square whose outline draws itself once per breath cycle. triangle: A triangle whose outline draws itself once per breath cycle. circle: A ring that draws itself once per breath cycle, with no corners to turn. focus-point: A calm point drifting slowly across the field. infinity: A continuous figure-eight with no start or end. ripple: Rings spreading out from a point of contact. color-field: Slow colour folding into itself."}, 'cycles': {'type': 'integer', 'maximum': 60, 'minimum': 1, 'description': 'Exact number of breath cycles. Takes precedence over minutes.'}, 'minutes': {'type': 'number', 'maximum': 30, 'description': 'Approximate session length; rounded to whole breath cycles.', 'exclusiveMinimum': 0}, 'pattern': {'enum': ['in-out-equal-4', 'in-out-slow-5', 'in-out-extended-exhale', 'in-out-quick-2', 'in-hold-out-equal-4', 'in-hold-out-extended-exhale', 'in-hold-out-quick-2', 'box-equal-4', 'box-quick-3', '4-7-8-signature'], 'type': 'string', 'description': 'Pattern id from list_patterns. Defaults to in-out-extended-exhale. list_patterns marks each hold-free pattern with "holdFree": true.'}}}
list_patterns
List breathing patterns
Lists the VirWave breathing patterns this server can play: phases and seconds, what each rhythm is good for, which shapes can draw it, whether it is hold-free, and any safety note about breath holds. Hold-free patterns are listed first.
読み取り専用
入力スキーマ
{'type': 'object', 'properties': {}}
start_session
Start a matched session
Matches a VirWave session the way the app's entry flow does: how clearly a feeling is coming through, what they'd like instead, and how long they have. Invoke it when someone says how they are feeling, or what they would like to feel instead, and wants a breathing session that fits. The session moves through stages (arrive, the matched core, close), each with its own shape, at one steady breath pace, and ends at the chosen length. In a client that supports MCP Apps (Claude on the web and in the desktop app, for example), the session appears in the chat itself. The result also carries a link to the same session as a web page, for any client that cannot draw it there. Either way the session waits for Begin, and the result says why it was picked and which stages it has. Every matched session is hold-free: breathe in, a longer breath out.
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['feeling', 'goal', 'minutes'], 'properties': {'goal': {'enum': ['grounded', 'calm', 'clear', 'unstuck', 'settled'], 'type': 'string', 'description': "What they'd like instead. grounded (Grounded: Back in the body, contact restored.) calm (Calm: Slower, softer, less pressure.) clear (Clear: One thing at a time, in focus.) unstuck (Unstuck: The loop loosens and moves on.) settled (Settled: Steady enough to rest.)"}, 'feeling': {'enum': ['flat', 'faint', 'nameable', 'directional', 'insistent', 'saturating'], 'type': 'string', 'description': 'How the feeling is coming through: how clearly, not which feeling it is. The options describe how clear the signal is, and none of them names an emotion. flat (Flat / no signal: Numb, far off, nothing registers.) faint (Faint trace: Something is there but not describable.) nameable (Nameable: A word fits, with hedging.) directional (Directional: It points at something specific.) insistent (Insistent: Hard to set aside, keeps returning.) saturating (Saturating: Too much at once, loud and fast.)'}, 'minutes': {'enum': [2, 5, 10, 15], 'type': 'number', 'description': 'How long they have: 2, 5, 10, or 15 minutes. Longer sessions move through more stages, not just more time.'}}}
追加
start_session
2026年9月25日2:40
追加
breathe
2026年9月25日2:40
追加
list_patterns
2026年9月25日2:40