@chrischall/office-outlook-mcp 0.3.1 → 0.3.3
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 +25 -6
- package/dist/auth-fetchproxy.js +1 -1
- package/dist/bundle.js +1697 -421
- package/dist/tools/_untrusted.js +7 -20
- package/dist/tools/calendar.js +7 -7
- package/dist/tools/mail.js +7 -7
- package/dist/tools/writes.js +30 -29
- package/dist/version.js +1 -1
- package/package.json +5 -5
- package/server.json +2 -2
- package/skills/outlook-fpx/SKILL.md +11 -5
- package/dist/tools/_confirm.js +0 -35
|
@@ -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.3.
|
|
10
|
+
"version": "0.3.3"
|
|
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.3.
|
|
18
|
+
"version": "0.3.3",
|
|
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.3.
|
|
4
|
+
"version": "0.3.3",
|
|
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
|
@@ -27,15 +27,32 @@ does not re-capture.
|
|
|
27
27
|
npm i -g @chrischall/office-outlook-mcp
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Requires the **
|
|
31
|
-
|
|
30
|
+
Requires the **ContextMint Bridge** browser extension, installed from
|
|
31
|
+
[its releases](https://github.com/nullnet-app/contextmint-bridge/releases):
|
|
32
|
+
in Chrome, unzip the chrome build and load it unpacked
|
|
33
|
+
(`chrome://extensions` → Developer mode → Load unpacked). Safari is not
|
|
34
|
+
available yet — it will ship inside the ContextMint app, which has no public
|
|
35
|
+
download — so use Chrome for now.
|
|
36
|
+
|
|
37
|
+
ContextMint Bridge is the fetchproxy browser extension under its new name, from
|
|
38
|
+
the same maintainer — fetchproxy's own README
|
|
39
|
+
([#extension](https://github.com/chrischall/fetchproxy#extension)) points to it.
|
|
40
|
+
Its source is public at
|
|
41
|
+
[nullnet-app/contextmint-bridge](https://github.com/nullnet-app/contextmint-bridge):
|
|
42
|
+
build it yourself, or check a release zip against the `.sha256` file published
|
|
43
|
+
beside it (`shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256`).
|
|
44
|
+
|
|
45
|
+
The extension, `fpx` and this server are compatible by **fetchproxy protocol
|
|
46
|
+
number** (currently protocol 4), not by matching package versions. Keep the
|
|
47
|
+
bridge and `fpx` current — a mismatch fails with an error naming both protocol
|
|
48
|
+
numbers. Also install `@fetchproxy/cli`:
|
|
32
49
|
|
|
33
50
|
```sh
|
|
34
51
|
npm i -g @fetchproxy/cli
|
|
35
52
|
```
|
|
36
53
|
|
|
37
|
-
The first capture prints a 6-digit pair code to approve in the
|
|
38
|
-
popup; the grant persists.
|
|
54
|
+
The first capture prints a 6-digit pair code to approve in the ContextMint
|
|
55
|
+
Bridge popup; the grant persists.
|
|
39
56
|
|
|
40
57
|
### Install in opencode
|
|
41
58
|
|
|
@@ -111,7 +128,9 @@ the one read a preview makes.)
|
|
|
111
128
|
Mail and event text is written by other people, so `outlook_list_messages`,
|
|
112
129
|
`outlook_get_message`, `outlook_list_events` and `outlook_get_event` wrap every
|
|
113
130
|
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
|
|
131
|
+
plus a `note` telling the model to treat the text as data, never instructions
|
|
132
|
+
(a `view: raw` record that carries its own `untrusted_content`/`note` key is
|
|
133
|
+
nested under `data`, so it cannot overwrite the envelope).
|
|
115
134
|
On a client that cannot show a confirmation prompt, the confirmToken is still
|
|
116
135
|
something the model passes back itself, so keep `MCP_CONFIRM_MODE=ask-user`
|
|
117
136
|
(the default) and approve each preview in chat — or use a client that asks you
|
|
@@ -131,7 +150,7 @@ a fresh preview.
|
|
|
131
150
|
|---|---|---|
|
|
132
151
|
| `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
152
|
| `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. |
|
|
153
|
+
| `MCP_CONFIRM_SECRET` | random per process | Signing key; set it only if tokens must survive a server restart. On mcp-host the host supplies a stable per-child key (`MCP_HOST_CONFIRM_SECRET`) and spent tokens are recorded under `MCP_DATA_DIR`, so an approval survives an idle restart. |
|
|
135
154
|
|
|
136
155
|
## Things worth knowing
|
|
137
156
|
|
package/dist/auth-fetchproxy.js
CHANGED
|
@@ -30,7 +30,7 @@ import { PACKAGE_NAME, VERSION } from './version.js';
|
|
|
30
30
|
/**
|
|
31
31
|
* The fetchproxy concentrator port.
|
|
32
32
|
*
|
|
33
|
-
* ONE port for the whole fleet: the
|
|
33
|
+
* ONE port for the whole fleet: the ContextMint Bridge extension dials this port and
|
|
34
34
|
* servers host/peer-elect on it, so a "unique" per-MCP default would simply
|
|
35
35
|
* never be found. `OUTLOOK_WS_PORT` overrides it for local development and —
|
|
36
36
|
* the reason it exists — for a hosted bridged registration, where mcp-host
|