ofw-mcp 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "chrischall",
3
+ "owner": {
4
+ "name": "Chris Chall",
5
+ "email": "chris.c.hall@gmail.com"
6
+ },
7
+ "metadata": {
8
+ "description": "OurFamilyWizard tools for Claude Code",
9
+ "version": "1.3.0"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "ofw",
14
+ "displayName": "OurFamilyWizard",
15
+ "source": {
16
+ "source": "npm",
17
+ "package": "ofw-mcp",
18
+ "version": "1.3.0"
19
+ },
20
+ "description": "OurFamilyWizard co-parenting tools for Claude — messages, calendar, expenses, and journal via MCP",
21
+ "version": "1.3.0",
22
+ "author": {
23
+ "name": "Chris Chall"
24
+ },
25
+ "homepage": "https://github.com/chrischall/ofw-mcp",
26
+ "repository": "https://github.com/chrischall/ofw-mcp",
27
+ "license": "MIT",
28
+ "keywords": ["ofw", "coparenting", "ourFamilyWizard", "mcp", "family"],
29
+ "category": "productivity"
30
+ }
31
+ ]
32
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "ofw",
3
+ "displayName": "OurFamilyWizard",
4
+ "version": "1.3.0",
5
+ "description": "OurFamilyWizard co-parenting tools for Claude — messages, calendar, expenses, and journal via MCP",
6
+ "author": {
7
+ "name": "Chris Chall"
8
+ },
9
+ "homepage": "https://github.com/chrischall/ofw-mcp",
10
+ "repository": "https://github.com/chrischall/ofw-mcp",
11
+ "license": "MIT",
12
+ "keywords": ["ofw", "coparenting", "ourFamilyWizard", "mcp", "family"],
13
+ "skills": "./skills/",
14
+ "mcp": "./.mcp.json"
15
+ }
package/.mcp.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "mcpServers": {
3
+ "ofw": {
4
+ "command": "node",
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/dist/index.js"],
6
+ "env": {
7
+ "OFW_USERNAME": "${OFW_USERNAME}",
8
+ "OFW_PASSWORD": "${OFW_PASSWORD}"
9
+ }
10
+ }
11
+ }
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ofw-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "OurFamilyWizard MCP server for Claude — developed and maintained by AI (Claude Sonnet 4.6)",
5
5
  "author": "Claude Sonnet 4.6 (AI) <https://www.anthropic.com/claude>",
6
6
  "repository": {
@@ -12,7 +12,10 @@
12
12
  "ofw-mcp": "dist/index.js"
13
13
  },
14
14
  "files": [
15
- "dist"
15
+ "dist",
16
+ ".claude-plugin",
17
+ "skills",
18
+ ".mcp.json"
16
19
  ],
17
20
  "scripts": {
18
21
  "build": "tsc",
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: ofw-mcp
3
+ description: This skill should be used when the user asks about OurFamilyWizard (OFW) co-parenting data. Triggers on phrases like "check OFW", "OurFamilyWizard inbox", "OFW messages", "OFW calendar", "OFW expenses", "what did my co-parent say", "log an expense in OFW", "OFW journal", or any request involving co-parenting messages, calendar events, shared expenses, or journal entries.
4
+ ---
5
+
6
+ # ofw-mcp
7
+
8
+ MCP server for OurFamilyWizard — provides read/write access to messages, calendar, expenses, and journal.
9
+
10
+ - **npm:** [npmjs.com/package/ofw-mcp](https://www.npmjs.com/package/ofw-mcp)
11
+ - **Source:** [github.com/chrischall/ofw-mcp](https://github.com/chrischall/ofw-mcp)
12
+
13
+ ## Setup
14
+
15
+ ### Option A — Claude Code (direct MCP, no mcporter)
16
+
17
+ Add to `.mcp.json` in your project or `~/.claude/mcp.json`:
18
+
19
+ ```json
20
+ {
21
+ "mcpServers": {
22
+ "ofw": {
23
+ "command": "npx",
24
+ "args": ["-y", "ofw-mcp"],
25
+ "env": {
26
+ "OFW_USERNAME": "you@example.com",
27
+ "OFW_PASSWORD": "yourpassword"
28
+ }
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ ### Option B — mcporter
35
+
36
+ #### 1. Install
37
+
38
+ ```bash
39
+ npm install -g ofw-mcp
40
+ ```
41
+
42
+ Or from source:
43
+ ```bash
44
+ git clone https://github.com/chrischall/ofw-mcp
45
+ cd ofw-mcp
46
+ npm install && npm run build
47
+ ```
48
+
49
+ #### 2. Configure credentials
50
+
51
+ ```bash
52
+ cp .env.example .env
53
+ # Edit .env: set OFW_USERNAME and OFW_PASSWORD
54
+ ```
55
+
56
+ #### 3. Register with mcporter
57
+
58
+ ```bash
59
+ mcporter config add ofw \
60
+ --command "ofw-mcp" \
61
+ --env "OFW_USERNAME=you@example.com" \
62
+ --env "OFW_PASSWORD=yourpassword" \
63
+ --config ~/.mcporter/mcporter.json
64
+ ```
65
+
66
+ #### 4. Verify
67
+
68
+ ```bash
69
+ mcporter list --config ~/.mcporter/mcporter.json
70
+ mcporter call ofw.ofw_get_profile --config ~/.mcporter/mcporter.json
71
+ ```
72
+
73
+ ## Calling tools (mcporter)
74
+
75
+ ```bash
76
+ mcporter call ofw.<tool_name> [key=value ...] --config ~/.mcporter/mcporter.json
77
+ ```
78
+
79
+ Always pass `--config ~/.mcporter/mcporter.json` unless a local `config/mcporter.json` exists.
80
+
81
+ ## Tools
82
+
83
+ ### User
84
+ | Tool | Description |
85
+ |------|-------------|
86
+ | `ofw_get_profile` | Current user + co-parent info (IDs, contact details) |
87
+ | `ofw_get_notifications` | Dashboard summary: unread count, upcoming events, outstanding expenses. ⚠️ Updates last-seen status. |
88
+
89
+ ### Messages
90
+ | Tool | Notes |
91
+ |------|-------|
92
+ | `ofw_list_message_folders` | Get folder IDs (inbox, sent, etc.) — call this first |
93
+ | `ofw_list_messages(folderId)` | List messages in a folder |
94
+ | `ofw_get_message(messageId)` | Read a message. ⚠️ Marks unread messages as read. |
95
+ | `ofw_send_message(subject, body, recipientIds[], replyToId?, draftId?)` | Send a message. Pass `replyToId` to thread the original message history (like email reply). Pass `draftId` to auto-delete the draft after sending. |
96
+ | `ofw_list_drafts` | List saved drafts |
97
+ | `ofw_save_draft(subject, body, recipientIds?, messageId?, replyToId?)` | Create or update a draft |
98
+ | `ofw_delete_draft(messageId)` | Delete a draft |
99
+
100
+ ### Calendar
101
+ | Tool | Notes |
102
+ |------|-------|
103
+ | `ofw_list_events(startDate, endDate, detailed?)` | Dates as `YYYY-MM-DD` |
104
+ | `ofw_create_event(title, startDate, endDate, ...)` | `startDate`/`endDate` as ISO datetime |
105
+ | `ofw_update_event(eventId, ...)` | Partial update — only pass fields to change |
106
+ | `ofw_delete_event(eventId)` | Permanent delete |
107
+
108
+ ### Expenses
109
+ | Tool | Notes |
110
+ |------|-------|
111
+ | `ofw_get_expense_totals` | Summary of owed/paid totals |
112
+ | `ofw_list_expenses(start?, max?)` | Paginated; default max 20 |
113
+ | `ofw_create_expense(amount, description)` | Log a new expense |
114
+
115
+ ### Journal
116
+ | Tool | Notes |
117
+ |------|-------|
118
+ | `ofw_list_journal_entries(start?, max?)` | 1-based offset; default max 10 |
119
+ | `ofw_create_journal_entry(title, body)` | Create a new entry |
120
+
121
+ ## Workflows
122
+
123
+ **Check inbox:**
124
+ 1. `ofw_list_message_folders` → find inbox folder ID
125
+ 2. `ofw_list_messages(folderId)` → list messages
126
+ 3. `ofw_get_message(messageId)` → read a specific message
127
+
128
+ **Send a message:**
129
+ 1. `ofw_get_profile` → get co-parent's user ID
130
+ 2. `ofw_send_message(subject, body, [coParentId])`
131
+
132
+ **Reply to a message (with thread history):**
133
+ 1. `ofw_get_message(messageId)` → read the message to reply to
134
+ 2. `ofw_send_message(subject, body, [coParentId], replyToId: messageId)` — original message is included in the thread
135
+
136
+ **Draft before sending (sensitive messages):**
137
+ 1. `ofw_save_draft(subject, body)` → review with user
138
+ 2. `ofw_send_message(..., draftId)` after approval — draft is auto-deleted on send
139
+
140
+ **Check what's coming up:**
141
+ - `ofw_get_notifications` for a quick summary
142
+ - `ofw_list_events(today, +30days)` for calendar detail
143
+
144
+ ## Caution
145
+
146
+ - **Always confirm before sending messages or deleting anything** — OFW is a legal co-parenting record.
147
+ - `ofw_get_notifications` updates last-seen status — avoid calling silently in the background.
148
+ - `ofw_get_message` marks messages read — warn the user if they want to keep something unread.