myceliumail-mcp 1.0.9 → 1.0.12

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 ADDED
@@ -0,0 +1,68 @@
1
+ # Changelog - Myceliumail MCP Server
2
+
3
+ All notable changes to the MCP server will be documented in this file.
4
+
5
+ ## [1.0.11] - 2025-12-21
6
+
7
+ ### Fixed
8
+ - DMG installer and desktop app fixes
9
+ - Improved error handling in MCP tools
10
+
11
+ ## [1.0.9] - 2025-12-20
12
+
13
+ ### Fixed
14
+ - Partial ID lookup for message reading (matches main CLI fix)
15
+
16
+ ## [1.0.8] - 2025-12-20
17
+
18
+ ### Added
19
+ - Sync with main myceliumail package updates
20
+
21
+ ## [1.0.7] - 2025-12-18
22
+
23
+ ### Fixed
24
+ - Supabase column names to match actual schema (`to_agent` vs `recipient`)
25
+ - Added error logging (removed silent catch blocks)
26
+ - Config file support (`~/.myceliumail/config.json`)
27
+
28
+ ## [1.0.6] - 2025-12-18
29
+
30
+ ### Fixed
31
+ - Agent ID case normalization (all lowercase)
32
+
33
+ ## [1.0.5] - 2025-12-18
34
+
35
+ ### Fixed
36
+ - Key import handling improvements
37
+
38
+ ## [1.0.4] - 2025-12-18
39
+
40
+ ### Fixed
41
+ - Encryption/decryption edge cases
42
+
43
+ ## [1.0.3] - 2025-12-17
44
+
45
+ ### Fixed
46
+ - Message sending reliability improvements
47
+
48
+ ## [1.0.2] - 2025-12-16
49
+
50
+ ### Fixed
51
+ - Initial bug fixes after launch
52
+
53
+ ## [1.0.0] - 2025-12-16
54
+
55
+ ### Added
56
+ - Initial MCP server release
57
+ - 8 messaging tools for Claude Desktop:
58
+ - `check_inbox` - List received messages
59
+ - `read_message` - Read and decrypt messages
60
+ - `send_message` - Send messages to other agents
61
+ - `reply_message` - Reply to messages
62
+ - `generate_keys` - Create encryption keypair
63
+ - `list_keys` - Show available keys
64
+ - `import_key` - Import peer public keys
65
+ - `archive_message` - Archive messages
66
+ - End-to-end encryption support (NaCl/TweetNaCl.js)
67
+ - Local and Supabase storage backends
68
+ - Automatic fallback from cloud to local storage
package/README.md CHANGED
@@ -141,3 +141,14 @@ Remove the `myceliumail` entry from your Claude Desktop config:
141
141
 
142
142
  Then restart Claude Desktop.
143
143
 
144
+ ---
145
+
146
+ ## Support
147
+
148
+ If you find Myceliumail useful, consider supporting development:
149
+
150
+ [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support-yellow?style=flat&logo=buy-me-a-coffee)](https://buymeacoffee.com/tree.bird)
151
+
152
+ ---
153
+
154
+ **Part of the [Myceliumail](https://github.com/treebird7/myceliumail) ecosystem** 🍄
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Myceliumail MCP License Verification
3
+ *
4
+ * Ed25519-based license verification for MCP Pro features.
5
+ * MCP server is a Pro feature - requires valid license to start.
6
+ */
7
+ export interface LicenseData {
8
+ email: string;
9
+ plan: 'free' | 'pro';
10
+ expiresAt: string;
11
+ issuedAt: string;
12
+ features: string[];
13
+ }
14
+ export interface License {
15
+ data: LicenseData;
16
+ isValid: boolean;
17
+ isExpired: boolean;
18
+ }
19
+ /**
20
+ * Verify a license string using Ed25519 detached signature
21
+ */
22
+ export declare function verifyLicense(licenseString: string): License | null;
23
+ /**
24
+ * Load and verify license from disk
25
+ */
26
+ export declare function loadLicense(): License | null;
27
+ /**
28
+ * Check if user has a valid Pro license
29
+ */
30
+ export declare function isPro(): boolean;
31
+ /**
32
+ * Check if MCP feature is enabled
33
+ */
34
+ export declare function hasMcpAccess(): boolean;
35
+ /**
36
+ * Verify Pro license or exit with upgrade message
37
+ */
38
+ export declare function requireProLicense(): void;
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Myceliumail MCP License Verification
3
+ *
4
+ * Ed25519-based license verification for MCP Pro features.
5
+ * MCP server is a Pro feature - requires valid license to start.
6
+ */
7
+ import nacl from 'tweetnacl';
8
+ import util from 'tweetnacl-util';
9
+ import { existsSync, readFileSync } from 'fs';
10
+ import { join } from 'path';
11
+ import { homedir } from 'os';
12
+ // License storage location (shared with CLI)
13
+ const LICENSE_FILE = join(homedir(), '.myceliumail', 'license.key');
14
+ // Treebird's public key for license verification (Ed25519)
15
+ const TREEBIRD_PUBLIC_KEY = 'XqIqSlybZGKkKemgLKKl8P9MepnObhcJcxxZHtgG8/o=';
16
+ /**
17
+ * Parse a license string into components
18
+ */
19
+ function parseLicenseString(licenseString) {
20
+ const parts = licenseString.trim().split('.');
21
+ if (parts.length !== 3)
22
+ return null;
23
+ const [version, data, signature] = parts;
24
+ if (version !== 'LICENSE_V1')
25
+ return null;
26
+ return { version, data, signature };
27
+ }
28
+ /**
29
+ * Verify a license string using Ed25519 detached signature
30
+ */
31
+ export function verifyLicense(licenseString) {
32
+ try {
33
+ const parsed = parseLicenseString(licenseString);
34
+ if (!parsed)
35
+ return null;
36
+ const dataBytes = util.decodeBase64(parsed.data);
37
+ const publicKey = util.decodeBase64(TREEBIRD_PUBLIC_KEY);
38
+ const signatureBytes = util.decodeBase64(parsed.signature);
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ const isValid = nacl.sign.detached.verify(dataBytes, signatureBytes, publicKey);
41
+ if (!isValid)
42
+ return null;
43
+ const dataString = util.encodeUTF8(dataBytes);
44
+ const data = JSON.parse(dataString);
45
+ const expiresAt = new Date(data.expiresAt);
46
+ const isExpired = expiresAt < new Date();
47
+ return {
48
+ data,
49
+ isValid: true,
50
+ isExpired,
51
+ };
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ }
57
+ /**
58
+ * Load and verify license from disk
59
+ */
60
+ export function loadLicense() {
61
+ if (!existsSync(LICENSE_FILE))
62
+ return null;
63
+ try {
64
+ const licenseString = readFileSync(LICENSE_FILE, 'utf-8');
65
+ return verifyLicense(licenseString);
66
+ }
67
+ catch {
68
+ return null;
69
+ }
70
+ }
71
+ /**
72
+ * Check if user has a valid Pro license
73
+ */
74
+ export function isPro() {
75
+ const license = loadLicense();
76
+ if (!license)
77
+ return false;
78
+ if (!license.isValid)
79
+ return false;
80
+ if (license.isExpired)
81
+ return false;
82
+ return license.data.plan === 'pro';
83
+ }
84
+ /**
85
+ * Check if MCP feature is enabled
86
+ */
87
+ export function hasMcpAccess() {
88
+ const license = loadLicense();
89
+ if (!license || !license.isValid || license.isExpired)
90
+ return false;
91
+ return license.data.features.includes('mcp_server');
92
+ }
93
+ /**
94
+ * Verify Pro license or exit with upgrade message
95
+ */
96
+ export function requireProLicense() {
97
+ const license = loadLicense();
98
+ if (!license) {
99
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
100
+ console.error('🍄 Myceliumail MCP Server - Pro Feature');
101
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
102
+ console.error('');
103
+ console.error('This feature requires a Pro license.');
104
+ console.error('');
105
+ console.error('Activate with: mycmail activate <license-key>');
106
+ console.error('Get a license: myceliumail.dev/pro');
107
+ console.error('');
108
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
109
+ process.exit(1);
110
+ }
111
+ if (!license.isValid) {
112
+ console.error('❌ Invalid license. Please re-activate.');
113
+ console.error(' mycmail activate <license-key>');
114
+ process.exit(1);
115
+ }
116
+ if (license.isExpired) {
117
+ console.error('❌ License expired on', new Date(license.data.expiresAt).toLocaleDateString());
118
+ console.error(' Renew at: myceliumail.dev/pro');
119
+ process.exit(1);
120
+ }
121
+ // Valid Pro license - show confirmation
122
+ console.error(`🍄 Myceliumail MCP (Pro) - ${license.data.email}`);
123
+ }
124
+ //# sourceMappingURL=license.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -11,6 +11,7 @@ import { z } from 'zod';
11
11
  import * as crypto from './lib/crypto.js';
12
12
  import * as storage from './lib/storage.js';
13
13
  import { getAgentId } from './lib/config.js';
14
+ import { requireProLicense } from './lib/license.js';
14
15
  // Create the MCP server
15
16
  const server = new McpServer({
16
17
  name: 'myceliumail',
@@ -298,6 +299,8 @@ server.tool('archive_message', 'Archive a message (remove from inbox)', {
298
299
  });
299
300
  // Start the server
300
301
  async function main() {
302
+ // Verify Pro license before starting
303
+ requireProLicense();
301
304
  const transport = new StdioServerTransport();
302
305
  await server.connect(transport);
303
306
  console.error('Myceliumail MCP server running');
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,9 @@
1
1
  {
2
2
  "name": "myceliumail-mcp",
3
- "version": "1.0.9",
3
+ "version": "1.0.12",
4
4
  "description": "MCP server for Myceliumail - End-to-End Encrypted Messaging for AI Agents",
5
5
  "type": "module",
6
6
  "main": "dist/server.js",
7
- "bin": {
8
- "myceliumail-mcp": "./dist/server.js"
9
- },
10
7
  "scripts": {
11
8
  "build": "tsc",
12
9
  "dev": "tsc --watch",
@@ -33,6 +30,10 @@
33
30
  "bugs": {
34
31
  "url": "https://github.com/treebird7/myceliumail/issues"
35
32
  },
33
+ "funding": {
34
+ "type": "buymeacoffee",
35
+ "url": "https://buymeacoffee.com/tree.bird"
36
+ },
36
37
  "readme": "README.md",
37
38
  "dependencies": {
38
39
  "@modelcontextprotocol/sdk": "^1.0.0",
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Myceliumail MCP License Verification
3
+ *
4
+ * Ed25519-based license verification for MCP Pro features.
5
+ * MCP server is a Pro feature - requires valid license to start.
6
+ */
7
+
8
+ import nacl from 'tweetnacl';
9
+ import util from 'tweetnacl-util';
10
+ import { existsSync, readFileSync } from 'fs';
11
+ import { join } from 'path';
12
+ import { homedir } from 'os';
13
+
14
+ // License storage location (shared with CLI)
15
+ const LICENSE_FILE = join(homedir(), '.myceliumail', 'license.key');
16
+
17
+ // Treebird's public key for license verification (Ed25519)
18
+ const TREEBIRD_PUBLIC_KEY = 'XqIqSlybZGKkKemgLKKl8P9MepnObhcJcxxZHtgG8/o=';
19
+
20
+ export interface LicenseData {
21
+ email: string;
22
+ plan: 'free' | 'pro';
23
+ expiresAt: string;
24
+ issuedAt: string;
25
+ features: string[];
26
+ }
27
+
28
+ export interface License {
29
+ data: LicenseData;
30
+ isValid: boolean;
31
+ isExpired: boolean;
32
+ }
33
+
34
+ /**
35
+ * Parse a license string into components
36
+ */
37
+ function parseLicenseString(licenseString: string): { version: string; data: string; signature: string } | null {
38
+ const parts = licenseString.trim().split('.');
39
+ if (parts.length !== 3) return null;
40
+
41
+ const [version, data, signature] = parts;
42
+ if (version !== 'LICENSE_V1') return null;
43
+
44
+ return { version, data, signature };
45
+ }
46
+
47
+ /**
48
+ * Verify a license string using Ed25519 detached signature
49
+ */
50
+ export function verifyLicense(licenseString: string): License | null {
51
+ try {
52
+ const parsed = parseLicenseString(licenseString);
53
+ if (!parsed) return null;
54
+
55
+ const dataBytes = util.decodeBase64(parsed.data);
56
+ const publicKey = util.decodeBase64(TREEBIRD_PUBLIC_KEY);
57
+ const signatureBytes = util.decodeBase64(parsed.signature);
58
+
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ const isValid = (nacl as any).sign.detached.verify(dataBytes, signatureBytes, publicKey);
61
+ if (!isValid) return null;
62
+
63
+ const dataString = util.encodeUTF8(dataBytes);
64
+ const data = JSON.parse(dataString) as LicenseData;
65
+
66
+ const expiresAt = new Date(data.expiresAt);
67
+ const isExpired = expiresAt < new Date();
68
+
69
+ return {
70
+ data,
71
+ isValid: true,
72
+ isExpired,
73
+ };
74
+ } catch {
75
+ return null;
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Load and verify license from disk
81
+ */
82
+ export function loadLicense(): License | null {
83
+ if (!existsSync(LICENSE_FILE)) return null;
84
+
85
+ try {
86
+ const licenseString = readFileSync(LICENSE_FILE, 'utf-8');
87
+ return verifyLicense(licenseString);
88
+ } catch {
89
+ return null;
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Check if user has a valid Pro license
95
+ */
96
+ export function isPro(): boolean {
97
+ const license = loadLicense();
98
+ if (!license) return false;
99
+ if (!license.isValid) return false;
100
+ if (license.isExpired) return false;
101
+ return license.data.plan === 'pro';
102
+ }
103
+
104
+ /**
105
+ * Check if MCP feature is enabled
106
+ */
107
+ export function hasMcpAccess(): boolean {
108
+ const license = loadLicense();
109
+ if (!license || !license.isValid || license.isExpired) return false;
110
+ return license.data.features.includes('mcp_server');
111
+ }
112
+
113
+ /**
114
+ * Verify Pro license or exit with upgrade message
115
+ */
116
+ export function requireProLicense(): void {
117
+ const license = loadLicense();
118
+
119
+ if (!license) {
120
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
121
+ console.error('🍄 Myceliumail MCP Server - Pro Feature');
122
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
123
+ console.error('');
124
+ console.error('This feature requires a Pro license.');
125
+ console.error('');
126
+ console.error('Activate with: mycmail activate <license-key>');
127
+ console.error('Get a license: myceliumail.dev/pro');
128
+ console.error('');
129
+ console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
130
+ process.exit(1);
131
+ }
132
+
133
+ if (!license.isValid) {
134
+ console.error('❌ Invalid license. Please re-activate.');
135
+ console.error(' mycmail activate <license-key>');
136
+ process.exit(1);
137
+ }
138
+
139
+ if (license.isExpired) {
140
+ console.error('❌ License expired on', new Date(license.data.expiresAt).toLocaleDateString());
141
+ console.error(' Renew at: myceliumail.dev/pro');
142
+ process.exit(1);
143
+ }
144
+
145
+ // Valid Pro license - show confirmation
146
+ console.error(`🍄 Myceliumail MCP (Pro) - ${license.data.email}`);
147
+ }
package/src/server.ts CHANGED
@@ -14,6 +14,7 @@ import { z } from 'zod';
14
14
  import * as crypto from './lib/crypto.js';
15
15
  import * as storage from './lib/storage.js';
16
16
  import { getAgentId } from './lib/config.js';
17
+ import { requireProLicense } from './lib/license.js';
17
18
 
18
19
  // Create the MCP server
19
20
  const server = new McpServer({
@@ -379,6 +380,9 @@ server.tool(
379
380
 
380
381
  // Start the server
381
382
  async function main() {
383
+ // Verify Pro license before starting
384
+ requireProLicense();
385
+
382
386
  const transport = new StdioServerTransport();
383
387
  await server.connect(transport);
384
388
  console.error('Myceliumail MCP server running');