mcp-twake-mail 0.1.0 → 1.0.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/README.md +77 -48
- package/build/cli/commands/setup.js +54 -12
- package/build/cli/commands/setup.js.map +1 -1
- package/build/cli/prompts/setup-wizard.d.ts +33 -1
- package/build/cli/prompts/setup-wizard.js +134 -2
- package/build/cli/prompts/setup-wizard.js.map +1 -1
- package/build/cli/prompts/setup-wizard.test.d.ts +1 -0
- package/build/cli/prompts/setup-wizard.test.js +161 -0
- package/build/cli/prompts/setup-wizard.test.js.map +1 -0
- package/build/config/schema.d.ts +2 -0
- package/build/config/schema.js +3 -0
- package/build/config/schema.js.map +1 -1
- package/build/discovery/dns-srv.d.ts +18 -0
- package/build/discovery/dns-srv.js +60 -0
- package/build/discovery/dns-srv.js.map +1 -0
- package/build/discovery/dns-srv.test.d.ts +4 -0
- package/build/discovery/dns-srv.test.js +79 -0
- package/build/discovery/dns-srv.test.js.map +1 -0
- package/build/discovery/index.d.ts +9 -0
- package/build/discovery/index.js +13 -0
- package/build/discovery/index.js.map +1 -0
- package/build/discovery/oauth-discovery.d.ts +34 -0
- package/build/discovery/oauth-discovery.js +160 -0
- package/build/discovery/oauth-discovery.js.map +1 -0
- package/build/discovery/oauth-discovery.test.d.ts +1 -0
- package/build/discovery/oauth-discovery.test.js +198 -0
- package/build/discovery/oauth-discovery.test.js.map +1 -0
- package/build/discovery/orchestrator.d.ts +31 -0
- package/build/discovery/orchestrator.js +87 -0
- package/build/discovery/orchestrator.js.map +1 -0
- package/build/discovery/orchestrator.test.d.ts +4 -0
- package/build/discovery/orchestrator.test.js +242 -0
- package/build/discovery/orchestrator.test.js.map +1 -0
- package/build/discovery/types.d.ts +18 -0
- package/build/discovery/types.js +15 -0
- package/build/discovery/types.js.map +1 -0
- package/build/discovery/well-known.d.ts +21 -0
- package/build/discovery/well-known.js +52 -0
- package/build/discovery/well-known.js.map +1 -0
- package/build/discovery/well-known.test.d.ts +4 -0
- package/build/discovery/well-known.test.js +120 -0
- package/build/discovery/well-known.test.js.map +1 -0
- package/build/mcp/server.d.ts +5 -3
- package/build/mcp/server.js +11 -5
- package/build/mcp/server.js.map +1 -1
- package/build/mcp/tools/email-sending.d.ts +10 -1
- package/build/mcp/tools/email-sending.js +60 -15
- package/build/mcp/tools/email-sending.js.map +1 -1
- package/build/mcp/tools/index.d.ts +10 -1
- package/build/mcp/tools/index.js +4 -3
- package/build/mcp/tools/index.js.map +1 -1
- package/build/signature/converter.d.ts +2 -0
- package/build/signature/converter.js +23 -0
- package/build/signature/converter.js.map +1 -0
- package/build/signature/converter.test.d.ts +1 -0
- package/build/signature/converter.test.js +84 -0
- package/build/signature/converter.test.js.map +1 -0
- package/build/signature/index.d.ts +2 -0
- package/build/signature/index.js +3 -0
- package/build/signature/index.js.map +1 -0
- package/build/signature/loader.d.ts +6 -0
- package/build/signature/loader.js +31 -0
- package/build/signature/loader.js.map +1 -0
- package/build/signature/loader.test.d.ts +1 -0
- package/build/signature/loader.test.js +85 -0
- package/build/signature/loader.test.js.map +1 -0
- package/docs/auto-discovery.md +210 -0
- package/docs/oidc-configuration.md +261 -0
- package/package.json +3 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* .well-known/jmap endpoint discovery
|
|
3
|
+
* RFC 8620 Section 2.2 - Service Discovery via .well-known URI
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Verify JMAP URL by making a request and checking response
|
|
7
|
+
* Accepts both 200 (public session) and 401 (needs auth) as valid endpoints
|
|
8
|
+
*
|
|
9
|
+
* @param url - URL to verify
|
|
10
|
+
* @param timeout - Timeout in milliseconds (default: 10000)
|
|
11
|
+
* @returns Final URL after redirects, or null if not a valid JMAP endpoint
|
|
12
|
+
*/
|
|
13
|
+
export declare function verifyJmapUrl(url: string, timeout?: number): Promise<string | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Fetch .well-known/jmap endpoint for a domain
|
|
16
|
+
* Always uses HTTPS per RFC 8620 security requirements
|
|
17
|
+
*
|
|
18
|
+
* @param domain - Email domain (e.g., "example.com")
|
|
19
|
+
* @returns Session URL after redirects, or null if not found
|
|
20
|
+
*/
|
|
21
|
+
export declare function fetchWellKnownJmap(domain: string): Promise<string | null>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* .well-known/jmap endpoint discovery
|
|
3
|
+
* RFC 8620 Section 2.2 - Service Discovery via .well-known URI
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Verify JMAP URL by making a request and checking response
|
|
7
|
+
* Accepts both 200 (public session) and 401 (needs auth) as valid endpoints
|
|
8
|
+
*
|
|
9
|
+
* @param url - URL to verify
|
|
10
|
+
* @param timeout - Timeout in milliseconds (default: 10000)
|
|
11
|
+
* @returns Final URL after redirects, or null if not a valid JMAP endpoint
|
|
12
|
+
*/
|
|
13
|
+
export async function verifyJmapUrl(url, timeout = 10000) {
|
|
14
|
+
try {
|
|
15
|
+
const controller = new AbortController();
|
|
16
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
17
|
+
const response = await fetch(url, {
|
|
18
|
+
redirect: 'follow',
|
|
19
|
+
signal: controller.signal,
|
|
20
|
+
});
|
|
21
|
+
clearTimeout(timeoutId);
|
|
22
|
+
// Accept both 200 (public session info) and 401 (needs auth) as valid JMAP endpoints
|
|
23
|
+
if (response.status === 200 || response.status === 401) {
|
|
24
|
+
// Return final URL after any redirects
|
|
25
|
+
return response.url;
|
|
26
|
+
}
|
|
27
|
+
// Other status codes (404, 500, etc.) mean this is not a JMAP endpoint
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
// Network errors, timeouts, and other fetch failures
|
|
32
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
33
|
+
console.warn(`JMAP URL verification timeout for ${url}`);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.warn(`JMAP URL verification failed for ${url}:`, error);
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Fetch .well-known/jmap endpoint for a domain
|
|
43
|
+
* Always uses HTTPS per RFC 8620 security requirements
|
|
44
|
+
*
|
|
45
|
+
* @param domain - Email domain (e.g., "example.com")
|
|
46
|
+
* @returns Session URL after redirects, or null if not found
|
|
47
|
+
*/
|
|
48
|
+
export async function fetchWellKnownJmap(domain) {
|
|
49
|
+
const url = `https://${domain}/.well-known/jmap`;
|
|
50
|
+
return verifyJmapUrl(url);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=well-known.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-known.js","sourceRoot":"","sources":["../../src/discovery/well-known.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,OAAO,GAAG,KAAK;IAEf,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,qFAAqF;QACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,uCAAuC;YACvC,OAAO,QAAQ,CAAC,GAAG,CAAC;QACtB,CAAC;QAED,uEAAuE;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qDAAqD;QACrD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,oCAAoC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,MAAM,GAAG,GAAG,WAAW,MAAM,mBAAmB,CAAC;IACjD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Well-known JMAP endpoint discovery tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
5
|
+
import { verifyJmapUrl, fetchWellKnownJmap } from './well-known.js';
|
|
6
|
+
// Mock fetch globally
|
|
7
|
+
const mockFetch = vi.fn();
|
|
8
|
+
global.fetch = mockFetch;
|
|
9
|
+
describe('verifyJmapUrl', () => {
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
vi.clearAllMocks();
|
|
12
|
+
});
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
vi.restoreAllMocks();
|
|
15
|
+
});
|
|
16
|
+
it('returns final URL on successful 200 response', async () => {
|
|
17
|
+
mockFetch.mockResolvedValue({
|
|
18
|
+
status: 200,
|
|
19
|
+
url: 'https://jmap.example.com/session',
|
|
20
|
+
});
|
|
21
|
+
const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
|
|
22
|
+
expect(result).toBe('https://jmap.example.com/session');
|
|
23
|
+
expect(mockFetch).toHaveBeenCalledWith('https://example.com/.well-known/jmap', {
|
|
24
|
+
redirect: 'follow',
|
|
25
|
+
signal: expect.any(AbortSignal),
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
it('returns final URL on 401 response (needs auth)', async () => {
|
|
29
|
+
mockFetch.mockResolvedValue({
|
|
30
|
+
status: 401,
|
|
31
|
+
url: 'https://jmap.example.com/session',
|
|
32
|
+
});
|
|
33
|
+
const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
|
|
34
|
+
expect(result).toBe('https://jmap.example.com/session');
|
|
35
|
+
});
|
|
36
|
+
it('follows redirects and returns final URL', async () => {
|
|
37
|
+
mockFetch.mockResolvedValue({
|
|
38
|
+
status: 200,
|
|
39
|
+
url: 'https://jmap.example.com/api/session', // Different from requested URL
|
|
40
|
+
});
|
|
41
|
+
const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
|
|
42
|
+
// Should return the response.url (final URL after redirects)
|
|
43
|
+
expect(result).toBe('https://jmap.example.com/api/session');
|
|
44
|
+
});
|
|
45
|
+
it('returns null on 404 response (no JMAP)', async () => {
|
|
46
|
+
mockFetch.mockResolvedValue({
|
|
47
|
+
status: 404,
|
|
48
|
+
url: 'https://example.com/.well-known/jmap',
|
|
49
|
+
});
|
|
50
|
+
const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
|
|
51
|
+
expect(result).toBeNull();
|
|
52
|
+
});
|
|
53
|
+
it('returns null on network error', async () => {
|
|
54
|
+
mockFetch.mockRejectedValue(new Error('Network unreachable'));
|
|
55
|
+
const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
|
|
56
|
+
expect(result).toBeNull();
|
|
57
|
+
});
|
|
58
|
+
it('returns null on timeout', async () => {
|
|
59
|
+
// Mock a fetch that respects AbortSignal and rejects when aborted
|
|
60
|
+
mockFetch.mockImplementation((_url, options) => new Promise((_resolve, reject) => {
|
|
61
|
+
const signal = options?.signal;
|
|
62
|
+
if (signal) {
|
|
63
|
+
signal.addEventListener('abort', () => {
|
|
64
|
+
const error = new Error('The operation was aborted');
|
|
65
|
+
error.name = 'AbortError';
|
|
66
|
+
reject(error);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
// Never resolves naturally - will be aborted by timeout
|
|
70
|
+
}));
|
|
71
|
+
const result = await verifyJmapUrl('https://slow.example.com/.well-known/jmap', 100);
|
|
72
|
+
expect(result).toBeNull();
|
|
73
|
+
});
|
|
74
|
+
it('returns null on 500 server error', async () => {
|
|
75
|
+
mockFetch.mockResolvedValue({
|
|
76
|
+
status: 500,
|
|
77
|
+
url: 'https://example.com/.well-known/jmap',
|
|
78
|
+
});
|
|
79
|
+
const result = await verifyJmapUrl('https://example.com/.well-known/jmap');
|
|
80
|
+
expect(result).toBeNull();
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe('fetchWellKnownJmap', () => {
|
|
84
|
+
beforeEach(() => {
|
|
85
|
+
vi.clearAllMocks();
|
|
86
|
+
});
|
|
87
|
+
afterEach(() => {
|
|
88
|
+
vi.restoreAllMocks();
|
|
89
|
+
});
|
|
90
|
+
it('constructs HTTPS URL and returns session URL', async () => {
|
|
91
|
+
mockFetch.mockResolvedValue({
|
|
92
|
+
status: 200,
|
|
93
|
+
url: 'https://jmap.example.com/session',
|
|
94
|
+
});
|
|
95
|
+
const result = await fetchWellKnownJmap('example.com');
|
|
96
|
+
expect(result).toBe('https://jmap.example.com/session');
|
|
97
|
+
expect(mockFetch).toHaveBeenCalledWith('https://example.com/.well-known/jmap', {
|
|
98
|
+
redirect: 'follow',
|
|
99
|
+
signal: expect.any(AbortSignal),
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
it('returns null when well-known endpoint not found', async () => {
|
|
103
|
+
mockFetch.mockResolvedValue({
|
|
104
|
+
status: 404,
|
|
105
|
+
url: 'https://example.com/.well-known/jmap',
|
|
106
|
+
});
|
|
107
|
+
const result = await fetchWellKnownJmap('example.com');
|
|
108
|
+
expect(result).toBeNull();
|
|
109
|
+
});
|
|
110
|
+
it('uses HTTPS only (security requirement)', async () => {
|
|
111
|
+
mockFetch.mockResolvedValue({
|
|
112
|
+
status: 200,
|
|
113
|
+
url: 'https://jmap.example.com/session',
|
|
114
|
+
});
|
|
115
|
+
await fetchWellKnownJmap('example.com');
|
|
116
|
+
const calledUrl = mockFetch.mock.calls[0][0];
|
|
117
|
+
expect(calledUrl).toMatch(/^https:\/\//);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=well-known.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-known.test.js","sourceRoot":"","sources":["../../src/discovery/well-known.test.ts"],"names":[],"mappings":"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"}
|
package/build/mcp/server.d.ts
CHANGED
|
@@ -6,16 +6,18 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
6
6
|
import { type Config } from '../config/schema.js';
|
|
7
7
|
import { type Logger } from '../config/logger.js';
|
|
8
8
|
import { JMAPClient } from '../jmap/client.js';
|
|
9
|
+
import { type SignatureContent } from '../signature/index.js';
|
|
9
10
|
/**
|
|
10
11
|
* Create MCP server instance with JMAP client.
|
|
11
12
|
* @param config Validated configuration
|
|
12
13
|
* @param logger Pino logger (stderr only)
|
|
13
|
-
* @returns Object with server and
|
|
14
|
+
* @returns Object with server, jmapClient, and signatureContent
|
|
14
15
|
*/
|
|
15
|
-
export declare function createMCPServer(config: Config, logger: Logger): {
|
|
16
|
+
export declare function createMCPServer(config: Config, logger: Logger): Promise<{
|
|
16
17
|
server: McpServer;
|
|
17
18
|
jmapClient: JMAPClient;
|
|
18
|
-
|
|
19
|
+
signatureContent?: SignatureContent;
|
|
20
|
+
}>;
|
|
19
21
|
/**
|
|
20
22
|
* Start the MCP server with JMAP validation.
|
|
21
23
|
* Validates JMAP connection before accepting MCP requests.
|
package/build/mcp/server.js
CHANGED
|
@@ -9,6 +9,7 @@ import { createLogger } from '../config/logger.js';
|
|
|
9
9
|
import { JMAPClient } from '../jmap/client.js';
|
|
10
10
|
import { formatStartupError } from '../errors.js';
|
|
11
11
|
import { registerAllTools } from './tools/index.js';
|
|
12
|
+
import { loadSignature } from '../signature/index.js';
|
|
12
13
|
/** Server version (matches package.json) */
|
|
13
14
|
const SERVER_VERSION = '0.1.0';
|
|
14
15
|
/** Server name for MCP identification */
|
|
@@ -17,15 +18,17 @@ const SERVER_NAME = 'mcp-twake-mail';
|
|
|
17
18
|
* Create MCP server instance with JMAP client.
|
|
18
19
|
* @param config Validated configuration
|
|
19
20
|
* @param logger Pino logger (stderr only)
|
|
20
|
-
* @returns Object with server and
|
|
21
|
+
* @returns Object with server, jmapClient, and signatureContent
|
|
21
22
|
*/
|
|
22
|
-
export function createMCPServer(config, logger) {
|
|
23
|
+
export async function createMCPServer(config, logger) {
|
|
23
24
|
const server = new McpServer({
|
|
24
25
|
name: SERVER_NAME,
|
|
25
26
|
version: SERVER_VERSION,
|
|
26
27
|
});
|
|
27
28
|
const jmapClient = new JMAPClient(config, logger);
|
|
28
|
-
|
|
29
|
+
// Load signature if configured
|
|
30
|
+
const signatureContent = await loadSignature(config.JMAP_SIGNATURE_PATH, logger);
|
|
31
|
+
return { server, jmapClient, signatureContent };
|
|
29
32
|
}
|
|
30
33
|
/**
|
|
31
34
|
* Start the MCP server with JMAP validation.
|
|
@@ -43,12 +46,15 @@ export async function startServer() {
|
|
|
43
46
|
logger = createLogger(config.LOG_LEVEL);
|
|
44
47
|
logger.info({ version: SERVER_VERSION }, 'Starting mcp-twake-mail server');
|
|
45
48
|
// Step 3: Create MCP server and JMAP client
|
|
46
|
-
const { server, jmapClient } = createMCPServer(config, logger);
|
|
49
|
+
const { server, jmapClient, signatureContent } = await createMCPServer(config, logger);
|
|
47
50
|
// Step 4: Validate JMAP connection BEFORE accepting MCP requests
|
|
48
51
|
const session = await jmapClient.fetchSession();
|
|
49
52
|
logger.info({ accountId: session.accountId }, 'JMAP connection validated');
|
|
50
53
|
// Step 5: Register all MCP tools
|
|
51
|
-
registerAllTools(server, jmapClient, logger
|
|
54
|
+
registerAllTools(server, jmapClient, logger, {
|
|
55
|
+
signatureContent,
|
|
56
|
+
defaultFrom: config.JMAP_DEFAULT_FROM,
|
|
57
|
+
});
|
|
52
58
|
// Step 6: Connect MCP server via stdio transport
|
|
53
59
|
const transport = new StdioServerTransport();
|
|
54
60
|
await server.connect(transport);
|
package/build/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAyB,MAAM,uBAAuB,CAAC;AAE7E,4CAA4C;AAC5C,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,yCAAyC;AACzC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAErC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElD,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAEjF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,UAA8B,CAAC;IACnC,IAAI,MAA0B,CAAC;IAE/B,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAErC,oEAAoE;QACpE,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,gCAAgC,CAAC,CAAC;QAE3E,4CAA4C;QAC5C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEvF,iEAAiE;QACjE,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,2BAA2B,CAAC,CAAC;QAE3E,iCAAiC;QACjC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;YAC3C,gBAAgB;YAChB,WAAW,EAAE,MAAM,CAAC,iBAAiB;SACtC,CAAC,CAAC;QAEH,iDAAiD;QACjD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wCAAwC;QACxC,MAAM,YAAY,GAAG,kBAAkB,CACrC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,UAAU,CACX,CAAC;QAEF,2DAA2D;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { JMAPClient } from '../../jmap/client.js';
|
|
3
3
|
import type { Logger } from '../../config/logger.js';
|
|
4
|
+
import type { SignatureContent } from '../../signature/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Options for email sending tools.
|
|
7
|
+
*/
|
|
8
|
+
export interface EmailSendingOptions {
|
|
9
|
+
signatureContent?: SignatureContent;
|
|
10
|
+
defaultFrom?: string;
|
|
11
|
+
}
|
|
4
12
|
/**
|
|
5
13
|
* Register email sending MCP tools with the server.
|
|
6
14
|
* @param server MCP server instance
|
|
7
15
|
* @param jmapClient JMAP client for API calls
|
|
8
16
|
* @param logger Pino logger
|
|
17
|
+
* @param options Optional signature and defaultFrom configuration
|
|
9
18
|
*/
|
|
10
|
-
export declare function registerEmailSendingTools(server: McpServer, jmapClient: JMAPClient, logger: Logger): void;
|
|
19
|
+
export declare function registerEmailSendingTools(server: McpServer, jmapClient: JMAPClient, logger: Logger, options?: EmailSendingOptions): void;
|
|
@@ -21,13 +21,34 @@ const SUBMISSION_USING = [
|
|
|
21
21
|
'urn:ietf:params:jmap:mail',
|
|
22
22
|
'urn:ietf:params:jmap:submission',
|
|
23
23
|
];
|
|
24
|
+
/**
|
|
25
|
+
* Append signature to email body.
|
|
26
|
+
* @param body Email body content
|
|
27
|
+
* @param signature Signature content to append
|
|
28
|
+
* @param isHtml Whether this is HTML content
|
|
29
|
+
* @returns Body with signature appended
|
|
30
|
+
*/
|
|
31
|
+
function appendSignature(body, signature, isHtml) {
|
|
32
|
+
if (!signature)
|
|
33
|
+
return body;
|
|
34
|
+
if (isHtml) {
|
|
35
|
+
// HTML: use <br> tags and -- separator
|
|
36
|
+
return `${body}<br/><br/>-- <br/>${signature}`;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Plain text: RFC-compliant "-- \n" delimiter
|
|
40
|
+
return `${body}\n\n-- \n${signature}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
24
43
|
/**
|
|
25
44
|
* Register email sending MCP tools with the server.
|
|
26
45
|
* @param server MCP server instance
|
|
27
46
|
* @param jmapClient JMAP client for API calls
|
|
28
47
|
* @param logger Pino logger
|
|
48
|
+
* @param options Optional signature and defaultFrom configuration
|
|
29
49
|
*/
|
|
30
|
-
export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
50
|
+
export function registerEmailSendingTools(server, jmapClient, logger, options = {}) {
|
|
51
|
+
const { signatureContent, defaultFrom } = options;
|
|
31
52
|
// send_email - compose and send a new email (EMAIL-01)
|
|
32
53
|
server.registerTool('send_email', {
|
|
33
54
|
title: 'Send Email',
|
|
@@ -42,10 +63,11 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
42
63
|
subject: z.string().describe('Email subject line'),
|
|
43
64
|
body: z.string().optional().describe('Plain text email body'),
|
|
44
65
|
htmlBody: z.string().optional().describe('HTML email body'),
|
|
66
|
+
from: z.string().email().optional().describe('Sender email address (uses default if not specified)'),
|
|
45
67
|
},
|
|
46
68
|
annotations: EMAIL_SEND_ANNOTATIONS,
|
|
47
|
-
}, async ({ to, cc, bcc, subject, body, htmlBody }) => {
|
|
48
|
-
logger.debug({ to, cc, bcc, subject, hasBody: !!body, hasHtmlBody: !!htmlBody }, 'send_email called');
|
|
69
|
+
}, async ({ to, cc, bcc, subject, body, htmlBody, from }) => {
|
|
70
|
+
logger.debug({ to, cc, bcc, subject, hasBody: !!body, hasHtmlBody: !!htmlBody, from }, 'send_email called');
|
|
49
71
|
try {
|
|
50
72
|
const session = jmapClient.getSession();
|
|
51
73
|
// Step 1: Get identity and mailboxes in a single batch
|
|
@@ -124,16 +146,27 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
124
146
|
const bodyValues = {};
|
|
125
147
|
if (body) {
|
|
126
148
|
textBody = [{ partId: 'text', type: 'text/plain' }];
|
|
127
|
-
|
|
149
|
+
// Inject signature into plain text body
|
|
150
|
+
const finalBody = signatureContent
|
|
151
|
+
? appendSignature(body, signatureContent.text, false)
|
|
152
|
+
: body;
|
|
153
|
+
bodyValues.text = { value: finalBody };
|
|
128
154
|
}
|
|
129
155
|
if (htmlBody) {
|
|
130
156
|
htmlBodyParts = [{ partId: 'html', type: 'text/html' }];
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
157
|
+
// Inject signature into HTML body
|
|
158
|
+
const finalHtml = signatureContent
|
|
159
|
+
? appendSignature(htmlBody, signatureContent.html, true)
|
|
160
|
+
: htmlBody;
|
|
161
|
+
bodyValues.html = { value: finalHtml };
|
|
162
|
+
}
|
|
163
|
+
// Step 3: Build email object with sender address priority chain
|
|
164
|
+
// Priority: explicit from parameter > defaultFrom config > identity.email
|
|
165
|
+
const senderEmail = from || defaultFrom || identity.email;
|
|
166
|
+
const senderName = identity.name; // Always use identity name
|
|
134
167
|
const emailCreate = {
|
|
135
168
|
mailboxIds: { [draftsMailboxId]: true },
|
|
136
|
-
from: [{ name:
|
|
169
|
+
from: [{ name: senderName, email: senderEmail }],
|
|
137
170
|
to: to.map((email) => ({ email })),
|
|
138
171
|
subject,
|
|
139
172
|
bodyValues,
|
|
@@ -320,10 +353,11 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
320
353
|
.boolean()
|
|
321
354
|
.default(false)
|
|
322
355
|
.describe('If true, reply to all original recipients'),
|
|
356
|
+
from: z.string().email().optional().describe('Sender email address (uses default if not specified)'),
|
|
323
357
|
},
|
|
324
358
|
annotations: EMAIL_SEND_ANNOTATIONS,
|
|
325
|
-
}, async ({ originalEmailId, body, htmlBody, replyAll }) => {
|
|
326
|
-
logger.debug({ originalEmailId, hasBody: !!body, hasHtmlBody: !!htmlBody, replyAll }, 'reply_email called');
|
|
359
|
+
}, async ({ originalEmailId, body, htmlBody, replyAll, from }) => {
|
|
360
|
+
logger.debug({ originalEmailId, hasBody: !!body, hasHtmlBody: !!htmlBody, replyAll, from }, 'reply_email called');
|
|
327
361
|
try {
|
|
328
362
|
const session = jmapClient.getSession();
|
|
329
363
|
// Step 1: Get identity, mailboxes, and original email in a single batch
|
|
@@ -488,16 +522,27 @@ export function registerEmailSendingTools(server, jmapClient, logger) {
|
|
|
488
522
|
const bodyValues = {};
|
|
489
523
|
if (body) {
|
|
490
524
|
textBody = [{ partId: 'text', type: 'text/plain' }];
|
|
491
|
-
|
|
525
|
+
// Inject signature into plain text body
|
|
526
|
+
const finalBody = signatureContent
|
|
527
|
+
? appendSignature(body, signatureContent.text, false)
|
|
528
|
+
: body;
|
|
529
|
+
bodyValues.text = { value: finalBody };
|
|
492
530
|
}
|
|
493
531
|
if (htmlBody) {
|
|
494
532
|
htmlBodyParts = [{ partId: 'html', type: 'text/html' }];
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
533
|
+
// Inject signature into HTML body
|
|
534
|
+
const finalHtml = signatureContent
|
|
535
|
+
? appendSignature(htmlBody, signatureContent.html, true)
|
|
536
|
+
: htmlBody;
|
|
537
|
+
bodyValues.html = { value: finalHtml };
|
|
538
|
+
}
|
|
539
|
+
// Step 6: Build email object with sender address priority chain
|
|
540
|
+
// Priority: explicit from parameter > defaultFrom config > identity.email
|
|
541
|
+
const senderEmail = from || defaultFrom || identity.email;
|
|
542
|
+
const senderName = identity.name; // Always use identity name
|
|
498
543
|
const emailCreate = {
|
|
499
544
|
mailboxIds: { [draftsMailboxId]: true },
|
|
500
|
-
from: [{ name:
|
|
545
|
+
from: [{ name: senderName, email: senderEmail }],
|
|
501
546
|
to: toAddresses,
|
|
502
547
|
subject: replySubject,
|
|
503
548
|
inReplyTo,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-sending.js","sourceRoot":"","sources":["../../../src/mcp/tools/email-sending.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"email-sending.js","sourceRoot":"","sources":["../../../src/mcp/tools/email-sending.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,19 @@
|
|
|
5
5
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
6
|
import type { JMAPClient } from '../../jmap/client.js';
|
|
7
7
|
import type { Logger } from '../../config/logger.js';
|
|
8
|
+
import type { SignatureContent } from '../../signature/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Options for email sending tools.
|
|
11
|
+
*/
|
|
12
|
+
export interface EmailSendingOptions {
|
|
13
|
+
signatureContent?: SignatureContent;
|
|
14
|
+
defaultFrom?: string;
|
|
15
|
+
}
|
|
8
16
|
/**
|
|
9
17
|
* Register all MCP tools with the server.
|
|
10
18
|
* @param server MCP server instance
|
|
11
19
|
* @param jmapClient JMAP client for API calls
|
|
12
20
|
* @param logger Pino logger
|
|
21
|
+
* @param emailSendingOptions Optional signature and defaultFrom for email sending
|
|
13
22
|
*/
|
|
14
|
-
export declare function registerAllTools(server: McpServer, jmapClient: JMAPClient, logger: Logger): void;
|
|
23
|
+
export declare function registerAllTools(server: McpServer, jmapClient: JMAPClient, logger: Logger, emailSendingOptions?: EmailSendingOptions): void;
|
package/build/mcp/tools/index.js
CHANGED
|
@@ -9,8 +9,9 @@ import { registerThreadTools } from './thread.js';
|
|
|
9
9
|
* @param server MCP server instance
|
|
10
10
|
* @param jmapClient JMAP client for API calls
|
|
11
11
|
* @param logger Pino logger
|
|
12
|
+
* @param emailSendingOptions Optional signature and defaultFrom for email sending
|
|
12
13
|
*/
|
|
13
|
-
export function registerAllTools(server, jmapClient, logger) {
|
|
14
|
+
export function registerAllTools(server, jmapClient, logger, emailSendingOptions) {
|
|
14
15
|
logger.debug('Registering MCP tools...');
|
|
15
16
|
// Register email tools (get_email, search_emails, get_email_labels)
|
|
16
17
|
registerEmailTools(server, jmapClient, logger);
|
|
@@ -18,8 +19,8 @@ export function registerAllTools(server, jmapClient, logger) {
|
|
|
18
19
|
registerMailboxTools(server, jmapClient, logger);
|
|
19
20
|
// Register email operation tools (mark_as_read, mark_as_unread, delete_email)
|
|
20
21
|
registerEmailOperationTools(server, jmapClient, logger);
|
|
21
|
-
// Register email sending tools (send_email)
|
|
22
|
-
registerEmailSendingTools(server, jmapClient, logger);
|
|
22
|
+
// Register email sending tools (send_email, reply_email) with signature and defaultFrom
|
|
23
|
+
registerEmailSendingTools(server, jmapClient, logger, emailSendingOptions);
|
|
23
24
|
// Register attachment tools (get_attachments)
|
|
24
25
|
registerAttachmentTools(server, jmapClient, logger);
|
|
25
26
|
// Register thread tools (get_thread, get_thread_emails)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAUlD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,UAAsB,EACtB,MAAc,EACd,mBAAyC;IAEzC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEzC,oEAAoE;IACpE,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/C,uDAAuD;IACvD,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEjD,8EAA8E;IAC9E,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAExD,wFAAwF;IACxF,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAE3E,8CAA8C;IAC9C,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEpD,wDAAwD;IACxD,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { marked } from 'marked';
|
|
2
|
+
// Configure marked for email-safe output (module-level, runs once)
|
|
3
|
+
marked.setOptions({
|
|
4
|
+
gfm: false, // Disable GitHub Flavored Markdown
|
|
5
|
+
breaks: true, // Convert \n to <br> for email readability
|
|
6
|
+
});
|
|
7
|
+
export function markdownToHtml(markdown) {
|
|
8
|
+
return marked.parse(markdown, { async: false });
|
|
9
|
+
}
|
|
10
|
+
export function markdownToPlainText(markdown) {
|
|
11
|
+
// Strip markdown formatting for plain text emails
|
|
12
|
+
return markdown
|
|
13
|
+
.replace(/^#{1,6}\s+/gm, '') // Remove heading markers
|
|
14
|
+
.replace(/\*\*(.+?)\*\*/g, '$1') // Remove bold **text**
|
|
15
|
+
.replace(/\*(.+?)\*/g, '$1') // Remove italic *text*
|
|
16
|
+
.replace(/__(.+?)__/g, '$1') // Remove bold __text__
|
|
17
|
+
.replace(/_(.+?)_/g, '$1') // Remove italic _text_
|
|
18
|
+
.replace(/\[(.+?)\]\((.+?)\)/g, '$1 ($2)') // Convert [text](url) to text (url)
|
|
19
|
+
.replace(/`(.+?)`/g, '$1') // Remove inline code backticks
|
|
20
|
+
.replace(/^[*\-+]\s+/gm, '• ') // Convert list markers to bullets
|
|
21
|
+
.trim();
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../src/signature/converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,mEAAmE;AACnE,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,KAAK,EAAQ,mCAAmC;IACrD,MAAM,EAAE,IAAI,EAAM,2CAA2C;CAC9D,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAW,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,kDAAkD;IAClD,OAAO,QAAQ;SACZ,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAY,yBAAyB;SAChE,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAQ,uBAAuB;SAC9D,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAY,uBAAuB;SAC9D,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAY,uBAAuB;SAC9D,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAc,uBAAuB;SAC9D,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,oCAAoC;SAC9E,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAc,+BAA+B;SACtE,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAQ,kCAAkC;SACvE,IAAI,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|