@mindstone/mcp-server-microsoft-teams 0.1.1 → 0.2.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/CHANGELOG.md +12 -0
- package/README.md +36 -2
- package/dist/resources/compose-message-template.d.ts +2 -0
- package/dist/resources/compose-message-template.js +968 -0
- package/dist/server.js +5 -1
- package/dist/teams.js +24 -18
- package/dist/tools.d.ts +7 -0
- package/dist/tools.js +75 -1
- package/dist/untrusted-content.d.ts +33 -0
- package/dist/untrusted-content.js +66 -0
- package/package.json +7 -2
- package/server.json +2 -2
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/teams.d.ts.map +0 -1
- package/dist/teams.js.map +0 -1
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
package/dist/server.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { SERVER_NAME, SERVER_VERSION } from './types.js';
|
|
3
|
-
import { registerTeamsTools } from './tools.js';
|
|
3
|
+
import { COMPOSE_MESSAGE_RESOURCE_URI, registerTeamsTools } from './tools.js';
|
|
4
|
+
import { COMPOSE_MESSAGE_HTML } from './resources/compose-message-template.js';
|
|
4
5
|
export function createServer() {
|
|
5
6
|
const server = new McpServer({
|
|
6
7
|
name: SERVER_NAME,
|
|
7
8
|
version: SERVER_VERSION,
|
|
8
9
|
});
|
|
9
10
|
registerTeamsTools(server);
|
|
11
|
+
server.registerResource('compose-message', COMPOSE_MESSAGE_RESOURCE_URI, { mimeType: 'text/html' }, async (uri) => ({
|
|
12
|
+
contents: [{ uri: uri.href, mimeType: 'text/html', text: COMPOSE_MESSAGE_HTML }],
|
|
13
|
+
}));
|
|
10
14
|
return server;
|
|
11
15
|
}
|
|
12
16
|
//# sourceMappingURL=server.js.map
|
package/dist/teams.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { wrapUntrusted } from './untrusted-content.js';
|
|
1
2
|
export class TeamsBusinessError extends Error {
|
|
2
3
|
nextStep;
|
|
3
4
|
constructor(message, nextStep) {
|
|
@@ -36,13 +37,12 @@ const HTML_ENTITIES = {
|
|
|
36
37
|
};
|
|
37
38
|
const TAG_RE = /<[^>]*>/g;
|
|
38
39
|
const ENTITY_RE = /&(?:nbsp|amp|lt|gt|quot);/g;
|
|
39
|
-
// Strip HTML for plain-text display
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
//
|
|
45
|
-
// `&lt;` is not double-unescaped into `<`.
|
|
40
|
+
// Strip HTML for plain-text display; returned external content is enveloped via wrapUntrusted.
|
|
41
|
+
// Runs the tag-strip pass in a fixed-point loop so a payload like
|
|
42
|
+
// `<scr<script>ipt>` cannot leave a reconstructed `<script>` behind after a
|
|
43
|
+
// single pass; decodes the five named entities in a single regex pass
|
|
44
|
+
// (lookup-map driven) so a doubly-encoded `&lt;` is not double-unescaped
|
|
45
|
+
// into `<`.
|
|
46
46
|
function stripHtml(html) {
|
|
47
47
|
let previous = '';
|
|
48
48
|
let current = html;
|
|
@@ -61,8 +61,10 @@ function requireStringArg(args, name, label, nextStep) {
|
|
|
61
61
|
function formatMessage(msg) {
|
|
62
62
|
return {
|
|
63
63
|
id: msg.id,
|
|
64
|
-
from: msg.from?.user?.displayName
|
|
65
|
-
|
|
64
|
+
from: msg.from?.user?.displayName
|
|
65
|
+
? wrapUntrusted(msg.from.user.displayName, 'microsoft-teams:list_chat_messages:from')
|
|
66
|
+
: 'Unknown',
|
|
67
|
+
content: wrapUntrusted(stripHtml(msg.body?.content ?? ''), 'microsoft-teams:list_chat_messages:content'),
|
|
66
68
|
contentType: msg.body?.contentType,
|
|
67
69
|
createdAt: msg.createdDateTime,
|
|
68
70
|
};
|
|
@@ -84,7 +86,9 @@ export async function listChats(client, args, signal) {
|
|
|
84
86
|
count: chats.length,
|
|
85
87
|
chats: chats.map((chat) => ({
|
|
86
88
|
id: chat.id,
|
|
87
|
-
topic: chat.topic
|
|
89
|
+
topic: chat.topic
|
|
90
|
+
? wrapUntrusted(chat.topic, 'microsoft-teams:list_chats:topic')
|
|
91
|
+
: '(No topic)',
|
|
88
92
|
type: chat.chatType,
|
|
89
93
|
createdAt: chat.createdDateTime,
|
|
90
94
|
lastUpdated: chat.lastUpdatedDateTime,
|
|
@@ -100,13 +104,15 @@ export async function getChat(client, args, signal) {
|
|
|
100
104
|
.get());
|
|
101
105
|
return {
|
|
102
106
|
id: chat.id,
|
|
103
|
-
topic: chat.topic
|
|
107
|
+
topic: chat.topic
|
|
108
|
+
? wrapUntrusted(chat.topic, 'microsoft-teams:get_chat:topic')
|
|
109
|
+
: '(No topic)',
|
|
104
110
|
type: chat.chatType,
|
|
105
111
|
createdAt: chat.createdDateTime,
|
|
106
112
|
lastUpdated: chat.lastUpdatedDateTime,
|
|
107
113
|
members: chat.members?.map((member) => ({
|
|
108
|
-
displayName: member.displayName,
|
|
109
|
-
email: member.email,
|
|
114
|
+
displayName: wrapUntrusted(member.displayName, 'microsoft-teams:get_chat:members.displayName'),
|
|
115
|
+
email: wrapUntrusted(member.email, 'microsoft-teams:get_chat:members.email'),
|
|
110
116
|
roles: member.roles,
|
|
111
117
|
})),
|
|
112
118
|
};
|
|
@@ -144,8 +150,8 @@ export async function sendChatMessage(client, args, signal) {
|
|
|
144
150
|
function formatChannel(channel) {
|
|
145
151
|
return {
|
|
146
152
|
id: channel.id,
|
|
147
|
-
name: channel.displayName,
|
|
148
|
-
description: channel.description,
|
|
153
|
+
name: wrapUntrusted(channel.displayName, 'microsoft-teams:list_channels:name'),
|
|
154
|
+
description: wrapUntrusted(channel.description, 'microsoft-teams:list_channels:description'),
|
|
149
155
|
membershipType: channel.membershipType,
|
|
150
156
|
};
|
|
151
157
|
}
|
|
@@ -160,8 +166,8 @@ export async function listTeams(client, _args, signal) {
|
|
|
160
166
|
count: teams.length,
|
|
161
167
|
teams: teams.map((team) => ({
|
|
162
168
|
id: team.id,
|
|
163
|
-
name: team.displayName,
|
|
164
|
-
description: team.description,
|
|
169
|
+
name: wrapUntrusted(team.displayName, 'microsoft-teams:list_teams:name'),
|
|
170
|
+
description: wrapUntrusted(team.description, 'microsoft-teams:list_teams:description'),
|
|
165
171
|
})),
|
|
166
172
|
};
|
|
167
173
|
}
|
|
@@ -184,7 +190,7 @@ export async function getPresence(client, _args, signal) {
|
|
|
184
190
|
return {
|
|
185
191
|
availability: presence.availability,
|
|
186
192
|
activity: presence.activity,
|
|
187
|
-
statusMessage: presence.statusMessage?.message?.content,
|
|
193
|
+
statusMessage: wrapUntrusted(presence.statusMessage?.message?.content ?? undefined, 'microsoft-teams:get_presence:statusMessage'),
|
|
188
194
|
};
|
|
189
195
|
}
|
|
190
196
|
//# sourceMappingURL=teams.js.map
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
/**
|
|
3
|
+
* `ui://` resource URI the compose_chat_message iframe is served under. The
|
|
4
|
+
* shared compose-app template posts `send_chat_message` when the user clicks
|
|
5
|
+
* Send; the HTML twin lives in src/resources/compose-message-template.ts
|
|
6
|
+
* (generated from the shared compose-app package, drift-gated).
|
|
7
|
+
*/
|
|
8
|
+
export declare const COMPOSE_MESSAGE_RESOURCE_URI = "ui://microsoft-teams/compose-message";
|
|
2
9
|
export declare function registerTeamsTools(server: McpServer): void;
|
|
3
10
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.js
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
|
|
1
2
|
import { z } from 'zod';
|
|
2
3
|
import { callGraph } from './client.js';
|
|
3
4
|
import { successJson, withErrorHandling } from './utils.js';
|
|
4
5
|
import { getChat, getPresence, listChannels, listChats, listChatMessages, listTeams, sendChatMessage, } from './teams.js';
|
|
6
|
+
/**
|
|
7
|
+
* `ui://` resource URI the compose_chat_message iframe is served under. The
|
|
8
|
+
* shared compose-app template posts `send_chat_message` when the user clicks
|
|
9
|
+
* Send; the HTML twin lives in src/resources/compose-message-template.ts
|
|
10
|
+
* (generated from the shared compose-app package, drift-gated).
|
|
11
|
+
*/
|
|
12
|
+
export const COMPOSE_MESSAGE_RESOURCE_URI = 'ui://microsoft-teams/compose-message';
|
|
13
|
+
const ANSI_ESCAPE_SEQUENCE_PATTERN = /\x1b\[[0-?]*[ -/]*[@-~]/g;
|
|
14
|
+
const HTML_TAG_PATTERN = /<[^>]*>/g;
|
|
15
|
+
function truncateText(value, maxChars) {
|
|
16
|
+
if (value.length <= maxChars)
|
|
17
|
+
return value;
|
|
18
|
+
return `${value.slice(0, Math.max(0, maxChars - 1))}…`;
|
|
19
|
+
}
|
|
20
|
+
function sanitizeViewSummaryPart(value) {
|
|
21
|
+
return value.replace(ANSI_ESCAPE_SEQUENCE_PATTERN, '').replace(HTML_TAG_PATTERN, '').trim();
|
|
22
|
+
}
|
|
5
23
|
const READ_ANNOTATIONS = {
|
|
6
24
|
readOnlyHint: true,
|
|
7
25
|
openWorldHint: true,
|
|
@@ -34,12 +52,68 @@ export function registerTeamsTools(server) {
|
|
|
34
52
|
}).shape,
|
|
35
53
|
annotations: READ_ANNOTATIONS,
|
|
36
54
|
}, withErrorHandling(async (args, extra) => successJson(await callGraph(extra, (c, signal) => listChatMessages(c, args, signal)))));
|
|
55
|
+
// ---------------------------------------------------------------------
|
|
56
|
+
// compose_chat_message
|
|
57
|
+
// ---------------------------------------------------------------------
|
|
58
|
+
// Returns an editable draft the host renders as an interactive compose view
|
|
59
|
+
// (the compose-message iframe). Performs no Graph send itself — the iframe
|
|
60
|
+
// invokes send_chat_message when the user clicks Send. Registered WITHOUT
|
|
61
|
+
// withErrorHandling: it does no send I/O, and its InvalidParams validation
|
|
62
|
+
// must surface as-is rather than as an auth-flavoured retry envelope. Teams
|
|
63
|
+
// routes purely by chatId, so there is no recipient resolution (unlike Slack
|
|
64
|
+
// DMs) — the draft carries the target chat + text verbatim.
|
|
65
|
+
server.registerTool('compose_chat_message', {
|
|
66
|
+
description: `Open an inline editable message compose form before sending to a Teams chat. Use this when the user wants to write or send a Teams message so they can review and edit it first. Does NOT send directly — the form posts the message (via send_chat_message) when the user clicks Send.
|
|
67
|
+
|
|
68
|
+
PARAMETERS: target (the chat ID to send to), text (message content).`,
|
|
69
|
+
inputSchema: z
|
|
70
|
+
.object({
|
|
71
|
+
target: z.string().min(1).describe('The chat ID to send the message to'),
|
|
72
|
+
text: z.string().min(1).describe('Message content (HTML supported)'),
|
|
73
|
+
})
|
|
74
|
+
.strict(),
|
|
75
|
+
annotations: WRITE_ANNOTATIONS,
|
|
76
|
+
}, async (args) => {
|
|
77
|
+
const target = typeof args.target === 'string' ? args.target.trim() : '';
|
|
78
|
+
const text = typeof args.text === 'string' ? args.text : '';
|
|
79
|
+
if (target.length === 0 || text.trim().length === 0) {
|
|
80
|
+
throw new McpError(ErrorCode.InvalidParams, 'compose_chat_message requires a non-empty "target" (chat ID) and "text". Provide both so the editable draft has content for the user to review.');
|
|
81
|
+
}
|
|
82
|
+
const structuredContent = { target, text };
|
|
83
|
+
const viewSummaryTarget = truncateText(sanitizeViewSummaryPart(target), 120);
|
|
84
|
+
const viewSummary = truncateText(`Teams message draft to ${viewSummaryTarget || '(no target)'}.`, 280);
|
|
85
|
+
const fallbackTarget = truncateText(target, 256);
|
|
86
|
+
const fallbackText = truncateText(text, 5_000);
|
|
87
|
+
return {
|
|
88
|
+
content: [
|
|
89
|
+
{
|
|
90
|
+
type: 'text',
|
|
91
|
+
text: `Drafting a Teams message to ${target}\n\n${JSON.stringify(structuredContent)}\n\n[View: ${COMPOSE_MESSAGE_RESOURCE_URI}]`,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
_meta: {
|
|
95
|
+
ui: {
|
|
96
|
+
resourceUri: COMPOSE_MESSAGE_RESOURCE_URI,
|
|
97
|
+
presentation: 'primary',
|
|
98
|
+
viewSummary,
|
|
99
|
+
viewRoleLabel: 'Teams message',
|
|
100
|
+
structuredFallback: {
|
|
101
|
+
kind: 'plain',
|
|
102
|
+
payload: {
|
|
103
|
+
markdown: `Message to ${fallbackTarget}:\n\n${fallbackText}`,
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
structuredContent,
|
|
109
|
+
};
|
|
110
|
+
});
|
|
37
111
|
server.registerTool('send_chat_message', {
|
|
38
112
|
description: 'Send a message to a chat.',
|
|
39
113
|
inputSchema: z.object({
|
|
40
114
|
chatId: z.string().describe('Chat ID'),
|
|
41
115
|
content: z.string().describe('Message content (HTML supported)'),
|
|
42
|
-
}).
|
|
116
|
+
}).strict(),
|
|
43
117
|
annotations: WRITE_ANNOTATIONS,
|
|
44
118
|
}, withErrorHandling(async (args, extra) => successJson(await callGraph(extra, (c, signal) => sendChatMessage(c, args, signal)))));
|
|
45
119
|
server.registerTool('list_teams', {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGENTS.md security invariant #6 — content fetched from an external system
|
|
3
|
+
* MUST be wrapped in an `<untrusted-content source="…">…</untrusted-content>`
|
|
4
|
+
* envelope (with close-tag breakout escaping) before it is returned to the
|
|
5
|
+
* LLM, so the model treats third-party / attacker-controllable text as DATA,
|
|
6
|
+
* not as instructions.
|
|
7
|
+
*
|
|
8
|
+
* This is the canonical implementation a new connector ships with. It is a
|
|
9
|
+
* VENDORED copy of the shared reference in `test-harness/src/untrusted-content.ts`
|
|
10
|
+
* — connectors cannot `import` the test-harness at runtime (it is a
|
|
11
|
+
* test/dev-only `file:` dependency that is never published into a connector's
|
|
12
|
+
* `dist/`), so the helper lives in the connector's own runtime source. Keep
|
|
13
|
+
* this byte-for-byte in sync with the shared reference; do NOT weaken the
|
|
14
|
+
* escaping back to a simple `replaceAll` (that family misses whitespace / case
|
|
15
|
+
* close-tag variants like `</untrusted-content >` / `</UNTRUSTED-CONTENT>`).
|
|
16
|
+
*
|
|
17
|
+
* `scripts/check-untrusted-coverage.mjs` greps for a reference to
|
|
18
|
+
* `untrusted-content` in any connector that talks to an external system; this
|
|
19
|
+
* file (and the call sites that import from it) is what satisfies that gate.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Wrap a single untrusted string in an `<untrusted-content source="…">`
|
|
23
|
+
* envelope, escaping any embedded close-tag variant so the envelope cannot be
|
|
24
|
+
* broken out of. `undefined` passes through untouched. Idempotent for the same
|
|
25
|
+
* `source`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function wrapUntrusted(text: string | undefined, source: string): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Recursively wrap every string value reachable inside `value`. Object keys are
|
|
30
|
+
* structural and NOT wrapped; non-string leaves pass through unchanged.
|
|
31
|
+
*/
|
|
32
|
+
export declare function wrapUntrustedJsonStrings<T>(value: T, source: string): T;
|
|
33
|
+
//# sourceMappingURL=untrusted-content.d.ts.map
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AGENTS.md security invariant #6 — content fetched from an external system
|
|
3
|
+
* MUST be wrapped in an `<untrusted-content source="…">…</untrusted-content>`
|
|
4
|
+
* envelope (with close-tag breakout escaping) before it is returned to the
|
|
5
|
+
* LLM, so the model treats third-party / attacker-controllable text as DATA,
|
|
6
|
+
* not as instructions.
|
|
7
|
+
*
|
|
8
|
+
* This is the canonical implementation a new connector ships with. It is a
|
|
9
|
+
* VENDORED copy of the shared reference in `test-harness/src/untrusted-content.ts`
|
|
10
|
+
* — connectors cannot `import` the test-harness at runtime (it is a
|
|
11
|
+
* test/dev-only `file:` dependency that is never published into a connector's
|
|
12
|
+
* `dist/`), so the helper lives in the connector's own runtime source. Keep
|
|
13
|
+
* this byte-for-byte in sync with the shared reference; do NOT weaken the
|
|
14
|
+
* escaping back to a simple `replaceAll` (that family misses whitespace / case
|
|
15
|
+
* close-tag variants like `</untrusted-content >` / `</UNTRUSTED-CONTENT>`).
|
|
16
|
+
*
|
|
17
|
+
* `scripts/check-untrusted-coverage.mjs` greps for a reference to
|
|
18
|
+
* `untrusted-content` in any connector that talks to an external system; this
|
|
19
|
+
* file (and the call sites that import from it) is what satisfies that gate.
|
|
20
|
+
*/
|
|
21
|
+
const UNTRUSTED_CLOSE_TAG_VARIANT = /<\/untrusted-content[ \t]*>/gi;
|
|
22
|
+
const ESCAPED_UNTRUSTED_CLOSE_TAG = '<\\/untrusted-content>';
|
|
23
|
+
function escapeAttr(s) {
|
|
24
|
+
return s.replaceAll('&', '&').replaceAll('"', '"').replaceAll('<', '<').replaceAll('>', '>');
|
|
25
|
+
}
|
|
26
|
+
function escapeCloseTagSentinels(s) {
|
|
27
|
+
return s.replace(UNTRUSTED_CLOSE_TAG_VARIANT, ESCAPED_UNTRUSTED_CLOSE_TAG);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Wrap a single untrusted string in an `<untrusted-content source="…">`
|
|
31
|
+
* envelope, escaping any embedded close-tag variant so the envelope cannot be
|
|
32
|
+
* broken out of. `undefined` passes through untouched. Idempotent for the same
|
|
33
|
+
* `source`.
|
|
34
|
+
*/
|
|
35
|
+
export function wrapUntrusted(text, source) {
|
|
36
|
+
if (text === undefined)
|
|
37
|
+
return undefined;
|
|
38
|
+
const open = `<untrusted-content source="${escapeAttr(source)}">`;
|
|
39
|
+
const close = '</untrusted-content>';
|
|
40
|
+
if (text.startsWith(open) && text.endsWith(close) && text.length >= open.length + close.length) {
|
|
41
|
+
const inner = text.slice(open.length, text.length - close.length);
|
|
42
|
+
if (!UNTRUSTED_CLOSE_TAG_VARIANT.test(inner)) {
|
|
43
|
+
UNTRUSTED_CLOSE_TAG_VARIANT.lastIndex = 0;
|
|
44
|
+
return text;
|
|
45
|
+
}
|
|
46
|
+
UNTRUSTED_CLOSE_TAG_VARIANT.lastIndex = 0;
|
|
47
|
+
}
|
|
48
|
+
return `${open}${escapeCloseTagSentinels(text)}${close}`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Recursively wrap every string value reachable inside `value`. Object keys are
|
|
52
|
+
* structural and NOT wrapped; non-string leaves pass through unchanged.
|
|
53
|
+
*/
|
|
54
|
+
export function wrapUntrustedJsonStrings(value, source) {
|
|
55
|
+
if (typeof value === 'string') {
|
|
56
|
+
return wrapUntrusted(value, source);
|
|
57
|
+
}
|
|
58
|
+
if (Array.isArray(value)) {
|
|
59
|
+
return value.map((item) => wrapUntrustedJsonStrings(item, source));
|
|
60
|
+
}
|
|
61
|
+
if (value && typeof value === 'object') {
|
|
62
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, wrapUntrustedJsonStrings(item, source)]));
|
|
63
|
+
}
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=untrusted-content.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mindstone/mcp-server-microsoft-teams",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"mcpName": "io.github.mindstone/mcp-server-microsoft-teams",
|
|
5
5
|
"description": "Microsoft 365 Teams via Graph: list chats, read/send messages, list teams/channels, presence.",
|
|
6
6
|
"license": "FSL-1.1-MIT",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
|
+
"!dist/**/*.map",
|
|
13
14
|
"README.md",
|
|
14
15
|
"LICENSE",
|
|
15
16
|
"CHANGELOG.md",
|
|
@@ -30,17 +31,21 @@
|
|
|
30
31
|
"prepublishOnly": "npm run build && npm test",
|
|
31
32
|
"watch": "tsc --watch",
|
|
32
33
|
"start": "node dist/index.js",
|
|
34
|
+
"pretest": "npm run compose:template:check",
|
|
33
35
|
"test": "vitest run",
|
|
34
36
|
"test:watch": "vitest",
|
|
35
37
|
"test:coverage": "vitest run --coverage",
|
|
38
|
+
"compose:template": "node scripts/gen-compose-html.mjs",
|
|
39
|
+
"compose:template:check": "node scripts/gen-compose-html.mjs --check",
|
|
36
40
|
"security:internal-refs": "node scripts/check-internal-refs.mjs"
|
|
37
41
|
},
|
|
38
42
|
"dependencies": {
|
|
39
|
-
"@mindstone/mcp-server-microsoft-shared": "0.1.0",
|
|
43
|
+
"@mindstone/mcp-server-microsoft-shared": "^0.1.0",
|
|
40
44
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
41
45
|
"zod": "^3.23.0"
|
|
42
46
|
},
|
|
43
47
|
"devDependencies": {
|
|
48
|
+
"@mindstone/mcp-app-compose": "file:../../packages/mcp-app-compose",
|
|
44
49
|
"@mindstone/mcp-test-harness": "file:../../test-harness",
|
|
45
50
|
"@types/node": "^22",
|
|
46
51
|
"@vitest/coverage-v8": "^4.1.3",
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.mindstone/mcp-server-microsoft-teams",
|
|
4
4
|
"title": "Microsoft 365 Teams",
|
|
5
5
|
"description": "Microsoft 365 Teams via Graph: list chats, read/send messages, list teams/channels, presence.",
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.2.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/mindstone/mcp-servers",
|
|
9
9
|
"source": "github",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"registryType": "npm",
|
|
15
15
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
16
16
|
"identifier": "@mindstone/mcp-server-microsoft-teams",
|
|
17
|
-
"version": "0.
|
|
17
|
+
"version": "0.2.0",
|
|
18
18
|
"runtimeHint": "npx",
|
|
19
19
|
"transport": {
|
|
20
20
|
"type": "stdio"
|
package/dist/client.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EAEX,KAAK,aAAa,EACnB,MAAM,wCAAwC,CAAC;AA+BhD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAsB,cAAc,CAAC,CAAC,EACpC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACvD,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,KAAK,EAAE,OAAO,EACd,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GACtD,OAAO,CAAC,CAAC,CAAC,CAGZ"}
|
package/dist/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,YAAY,GAIb,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjF,MAAM,GAAG,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAEhD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;AACtD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;AACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,SAAS,CAAC;AAEnE,IAAI,MAAM,GAAgC,IAAI,CAAC;AAC/C,IAAI,SAAS,GAAkB,IAAI,CAAC;AAEpC,SAAS,iBAAiB;IACxB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,SAAS;YACP,4IAA4I,CAAC;QAC/I,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,GAAG,0BAA0B,CAAC;QAClC,SAAS,EAAE,aAAa;QACxB,QAAQ,EAAE,YAAY;QACtB,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,iBAAiB,EAAE,CAAC,MAAM,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,iBAAiB,EAAE,CAAC,aAAa,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAuD,EACvD,MAAmB;IAEnB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACtD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,GAAI,GAA+B,EAAE,UAAU,CAAC;QAChE,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC5D,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAc,EACd,EAAuD;IAEvD,MAAM,MAAM,GAAG,eAAe,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,OAAO,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnE,OAAO,CAAC,GAAG,CACT,6GAA6G,CAC9G,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC1D,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7C,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/server.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,YAAY,IAAI,SAAS,CAOxC"}
|
package/dist/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IACH,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/teams.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"teams.d.ts","sourceRoot":"","sources":["../src/teams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,wCAAwC,CAAC;AAExF,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAK9C;AAMD,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA8EtC,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAelB;AAwBD,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAalB;AAYD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAOlB"}
|
package/dist/teams.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"teams.js","sourceRoot":"","sources":["../src/teams.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyBzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgG1D"}
|
package/dist/tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,+BAA+B,CAAC;AACxD,eAAO,MAAM,cAAc,QAAc,CAAC;AAE1C,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,cAAc,mCAAmC,CAAC;AAkB/D,eAAO,MAAM,kBAAkB,QAA4B,CAAC;AAE5D,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAG,4BAA4B,CAAC;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;AAE1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAE/D,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAEvC,SAAS,uBAAuB;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,0BAA0B,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,sBAAsB,EAAE,CAAC;QAC9E,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,KAAK,CACX,sDAAsD,GAAG,gCAAgC,0BAA0B,KAAK,CACzH,CAAC;IACF,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,EAAE,CAAC;AAE5D,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,qBAAqB,CAAC;AAChE,CAAC"}
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAUzE,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,CAmBvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAM3E;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CA4BrF;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUnE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CAKnE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEjD;AA6BD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAqC/D;AAED,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,GAChE,WAAW,CAAC,CAAC,CAAC,CAYhB"}
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|