@chrischall/office-outlook-mcp 0.1.5 → 0.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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +33 -7
- package/dist/bundle.js +754 -212
- package/dist/client.js +25 -7
- package/dist/tools/_confirm.js +28 -20
- package/dist/tools/_paging.js +32 -0
- package/dist/tools/_untrusted.js +22 -0
- package/dist/tools/calendar.js +18 -15
- package/dist/tools/directory.js +11 -7
- package/dist/tools/mail.js +25 -19
- package/dist/tools/writes.js +80 -21
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "MCP server for Outlook / Microsoft 365 — mail, calendar, contacts and tasks via natural language",
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.3.0"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"displayName": "Outlook (Microsoft 365)",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "MCP server for Outlook / Microsoft 365 — read mail, folders, calendar, contacts and tasks, and send mail with confirmation",
|
|
18
|
-
"version": "0.
|
|
18
|
+
"version": "0.3.0",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "office-outlook-mcp",
|
|
3
3
|
"displayName": "Outlook (Microsoft 365)",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"description": "Outlook / Microsoft 365 for Claude — read mail, folders, calendar, contacts and tasks, and send mail with confirmation, using your signed-in browser session",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Chris Hall",
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# office-outlook-mcp
|
|
2
2
|
|
|
3
3
|
MCP server for **Outlook / Microsoft 365** — mail, folders, calendar, contacts
|
|
4
|
-
and tasks, with
|
|
4
|
+
and tasks, with confirmation-gated sending.
|
|
5
5
|
|
|
6
6
|
> This project was developed and is maintained by AI (Claude Code). Use at your
|
|
7
7
|
> own discretion.
|
|
@@ -95,17 +95,43 @@ Everything is optional — with nothing set, the server captures from the browse
|
|
|
95
95
|
`outlook_get_mailbox_settings`, `outlook_list_contacts`, `outlook_list_people`,
|
|
96
96
|
`outlook_list_tasks`
|
|
97
97
|
|
|
98
|
-
**Write** (all
|
|
98
|
+
**Write** (all ask you to confirm first — see [Confirmations](#confirmations)) — `outlook_send_mail`,
|
|
99
99
|
`outlook_create_draft`, `outlook_mark_read`, `outlook_move_message`,
|
|
100
100
|
`outlook_create_event`
|
|
101
101
|
|
|
102
102
|
**Diagnostics** — `outlook_healthcheck`
|
|
103
103
|
|
|
104
104
|
Every read tool takes `view: compact | full | raw`, defaulting to **compact**.
|
|
105
|
-
Mutating tools **write nothing**
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
Mutating tools **write nothing** until you confirm — see
|
|
106
|
+
[Confirmations](#confirmations). The preview shows exactly what would be sent
|
|
107
|
+
(action, method, path and body). (`outlook_create_event` first reads the
|
|
108
|
+
mailbox time zone, so its preview can name the zone it would book in; that is
|
|
109
|
+
the one read a preview makes.)
|
|
110
|
+
|
|
111
|
+
Mail and event text is written by other people, so `outlook_list_messages`,
|
|
112
|
+
`outlook_get_message`, `outlook_list_events` and `outlook_get_event` wrap every
|
|
113
|
+
result (all views) in an untrusted-content envelope — `untrusted_content: true`
|
|
114
|
+
plus a `note` telling the model to treat the text as data, never instructions.
|
|
115
|
+
On a client that cannot show a confirmation prompt, the confirmToken is still
|
|
116
|
+
something the model passes back itself, so keep `MCP_CONFIRM_MODE=ask-user`
|
|
117
|
+
(the default) and approve each preview in chat — or use a client that asks you
|
|
118
|
+
before running non-read-only tools — as the real guard on outbound sends.
|
|
119
|
+
|
|
120
|
+
## Confirmations
|
|
121
|
+
|
|
122
|
+
Every write asks you to confirm before anything is sent or changed. A client
|
|
123
|
+
that can show a confirmation prompt (Claude Code) shows one. On a client that
|
|
124
|
+
cannot, the first call does nothing and returns a `confirmation-required`
|
|
125
|
+
preview plus a `confirmToken`; only a repeat call with that token performs the
|
|
126
|
+
write. The token is single-use, expires, and is bound to the exact arguments —
|
|
127
|
+
change anything between the two calls and it is refused (`DRAFT_CHANGED`) with
|
|
128
|
+
a fresh preview.
|
|
129
|
+
|
|
130
|
+
| variable | default | |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| `MCP_CONFIRM_MODE` | `ask-user` | What a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). `ask-user`: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. `auto`: the same two steps, but the model may use the token after reviewing the preview itself. `refuse`: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt. An unrecognised value is treated as `refuse`. |
|
|
133
|
+
| `MCP_CONFIRM_TTL_SECONDS` | `600` | How long a token stays valid. |
|
|
134
|
+
| `MCP_CONFIRM_SECRET` | random per process | Signing key; set it only if tokens must survive a server restart. |
|
|
109
135
|
|
|
110
136
|
## Things worth knowing
|
|
111
137
|
|
|
@@ -130,7 +156,7 @@ in; that is the one read a dry run makes.)
|
|
|
130
156
|
If you only need Outlook access from Claude Code on this machine, the
|
|
131
157
|
`skills/outlook-fpx` access skill in this repo does the same reads with `fpx` +
|
|
132
158
|
`curl` and no server at all. The MCP earns its keep when you want typed tools,
|
|
133
|
-
|
|
159
|
+
confirmation-gated writes, or reach from claude.ai.
|
|
134
160
|
|
|
135
161
|
## Development
|
|
136
162
|
|