@lizzythelizard/whatsapp-mcp 0.1.3 → 0.1.6

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.
Files changed (50) hide show
  1. package/dist/auth.d.ts.map +1 -1
  2. package/dist/auth.js +1 -0
  3. package/dist/auth.js.map +1 -1
  4. package/dist/index.js +36 -9
  5. package/dist/index.js.map +1 -1
  6. package/dist/store.d.ts +23 -9
  7. package/dist/store.d.ts.map +1 -1
  8. package/dist/store.js +16 -10
  9. package/dist/store.js.map +1 -1
  10. package/dist/sync.d.ts +6 -2
  11. package/dist/sync.d.ts.map +1 -1
  12. package/dist/sync.js +61 -2
  13. package/dist/sync.js.map +1 -1
  14. package/dist/tools/chatTools.d.ts +5 -0
  15. package/dist/tools/chatTools.d.ts.map +1 -0
  16. package/dist/tools/chatTools.js +34 -0
  17. package/dist/tools/chatTools.js.map +1 -0
  18. package/dist/tools/common.d.ts +49 -0
  19. package/dist/tools/common.d.ts.map +1 -0
  20. package/dist/tools/common.js +18 -0
  21. package/dist/tools/common.js.map +1 -0
  22. package/dist/tools/contactTools.d.ts +4 -0
  23. package/dist/tools/contactTools.d.ts.map +1 -0
  24. package/dist/tools/contactTools.js +5 -0
  25. package/dist/tools/contactTools.js.map +1 -0
  26. package/dist/tools/messageTools.d.ts +5 -0
  27. package/dist/tools/messageTools.d.ts.map +1 -0
  28. package/dist/tools/messageTools.js +21 -0
  29. package/dist/tools/messageTools.js.map +1 -0
  30. package/package.json +16 -1
  31. package/.github/dependabot.yml +0 -20
  32. package/.github/workflows/auto-merge.yml +0 -19
  33. package/.github/workflows/ci.yml +0 -75
  34. package/.vscode/extensions.json +0 -7
  35. package/.vscode/settings.json +0 -12
  36. package/AGENTS.md +0 -42
  37. package/Dockerfile +0 -25
  38. package/eslint.config.mjs +0 -32
  39. package/src/auth.test.ts +0 -138
  40. package/src/auth.ts +0 -58
  41. package/src/index.ts +0 -45
  42. package/src/store.test.ts +0 -353
  43. package/src/store.ts +0 -182
  44. package/src/sync.test.ts +0 -304
  45. package/src/sync.ts +0 -170
  46. package/src/tools.test.ts +0 -254
  47. package/src/tools.ts +0 -132
  48. package/tsconfig.json +0 -19
  49. package/tsconfig.test.json +0 -7
  50. package/vitest.config.ts +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2F,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAGtJ,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,WAAW,EAAE,MAAM,MAAM,CAAA;CAC1B;AAID,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAOxE"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2F,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAEtJ,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,WAAW,EAAE,MAAM,MAAM,CAAA;CAC1B;AAID,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAOxE"}
package/dist/auth.js CHANGED
@@ -7,6 +7,7 @@ export function createExportableAuth(input) {
7
7
  toAuthState: () => toString({ creds, keys }),
8
8
  };
9
9
  }
10
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
10
11
  function fromString(str) {
11
12
  if (!str)
12
13
  return undefined;
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,aAAa,EAAqB,KAAK,EAAsC,MAAM,yBAAyB,CAAA;AAStJ,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,UAAU,CAAiB,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IAC/F,OAAO;QACL,KAAK;QACL,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,CAAC,EAAE;QACtF,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KAC7C,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAI,GAAuB;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAM,CAAA;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,MAAM,CAAoC,IAAO,EAAE,GAAa,EAAE,IAA4B;IACrG,OAAO,GAAG,CAAC,MAAM,CAAuC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,UAAU,CAAuB,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QACrE,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAA;QACtB,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,KAAgD,CAAA;YACnE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YAC1E,MAAM,UAAU,GAAG,SAA4C,CAAA;YAC/D,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAA;QACtB,CAAC;aACI,CAAC;YACJ,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;QACjB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;AAED,SAAS,MAAM,CAAC,IAAmB,EAAE,IAA4B;IAC/D,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAmC,CAAC,CAAA;QAC9D,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,KAAK;gBACV,gEAAgE;gBAC9D,OAAO,IAAI,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAA;iBAC7B,CAAC;gBACJ,IAAI,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,aAAa,EAAqB,KAAK,EAAsC,MAAM,yBAAyB,CAAA;AAQtJ,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAAiB,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACjG,OAAO;QACL,KAAK;QACL,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA,CAAC,CAAC,EAAE;QACtF,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KAC7C,CAAA;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,UAAU,CAAI,GAAuB;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAM,CAAA;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,MAAM,CAAoC,IAAO,EAAE,GAAa,EAAE,IAA4B;IACrG,OAAO,GAAG,CAAC,MAAM,CAAuC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,UAAU,CAAuB,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QACrE,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAA;QACtB,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,KAAgD,CAAA;YACnE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YAC1E,MAAM,UAAU,GAAG,SAA4C,CAAA;YAC/D,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAA;QACtB,CAAC;aACI,CAAC;YACJ,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;QACjB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;AAED,SAAS,MAAM,CAAC,IAAmB,EAAE,IAA4B;IAC/D,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAmC,CAAC,CAAA;QAC9D,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,KAAK;gBACR,gEAAgE;gBAChE,OAAO,IAAI,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAA;iBAC7B,CAAC;gBACJ,IAAI,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -1,18 +1,45 @@
1
1
  #!/usr/bin/env node
2
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { createStore } from "./store.js";
5
- import { createSyncHandler } from "./sync.js";
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import pkg from '../package.json' with { type: 'json' };
4
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import { createStore } from './store.js';
6
+ import { createHandler } from './sync.js';
7
+ import { promises as fsp } from 'fs';
8
+ import { registerContactResources } from './tools/contactTools.js';
9
+ import { registerChatTools } from './tools/chatTools.js';
10
+ import { registerMessageTools } from './tools/messageTools.js';
11
+ const dataDir = process.env.DATA_DIR ?? './data';
12
+ async function readDataFromFile() {
13
+ const canAccess = await fsp.access(dataDir).then(() => true).catch(() => false);
14
+ if (!canAccess)
15
+ return undefined;
16
+ const chats = await fsp.readFile(`${dataDir}/chats.json`, 'utf-8');
17
+ const messages = await fsp.readFile(`${dataDir}/messages.json`, 'utf-8');
18
+ const contacts = await fsp.readFile(`${dataDir}/contacts.json`, 'utf-8');
19
+ const auth = await fsp.readFile(`${dataDir}/auth.json`, 'utf-8');
20
+ return { chats, messages, contacts, auth };
21
+ }
22
+ async function writeDataToFile(data) {
23
+ await fsp.mkdir(dataDir, { recursive: true });
24
+ await fsp.writeFile(`${dataDir}/chats.json`, data.chats, 'utf-8');
25
+ await fsp.writeFile(`${dataDir}/messages.json`, data.messages, 'utf-8');
26
+ await fsp.writeFile(`${dataDir}/contacts.json`, data.contacts, 'utf-8');
27
+ await fsp.writeFile(`${dataDir}/auth.json`, data.auth, 'utf-8');
28
+ }
6
29
  async function main() {
7
- const server = new McpServer({ name: "whatsapp-mcp", version: "0.1.0" });
30
+ const server = new McpServer({ name: pkg.name, version: pkg.version });
8
31
  const transport = new StdioServerTransport();
9
- const whatsappStore = createStore();
10
- const whatsappSync = createSyncHandler(whatsappStore);
32
+ const inputData = await readDataFromFile();
33
+ const whatsappStore = createStore(writeDataToFile, inputData);
34
+ const whatsappSync = createHandler(whatsappStore);
35
+ registerContactResources(server, whatsappStore);
36
+ registerChatTools(server, whatsappStore, whatsappSync);
37
+ registerMessageTools(server, whatsappStore, whatsappSync);
11
38
  await server.connect(transport);
12
- console.info("whatsapp-mcp server running on stdio");
39
+ console.info('whatsapp-mcp server running on stdio');
13
40
  }
14
41
  main().catch((error) => {
15
- console.error("Server error:", error);
42
+ console.error('Server error:', error);
16
43
  process.exit(1);
17
44
  });
18
45
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG9C,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAG,WAAW,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -1,12 +1,26 @@
1
- import makeWASocket, { AuthenticationState, Chat, Contact, WAMessage } from '@whiskeysockets/baileys';
1
+ import { AuthenticationState, BaileysEventMap, Chat, Contact, WAMessage, WAMessageKey } from '@whiskeysockets/baileys';
2
+ export interface ChatWithId extends Chat {
3
+ id: string;
4
+ }
5
+ export interface ContactWithId extends Contact {
6
+ id: string;
7
+ }
8
+ export interface MessageWithId extends WAMessage {
9
+ key: WAMessageKey & {
10
+ id: string;
11
+ };
12
+ }
13
+ export interface Emitter {
14
+ process: (processor: (e: Partial<BaileysEventMap>) => void) => void;
15
+ }
2
16
  export interface WhatsAppStore {
3
- bind: (ev: ReturnType<typeof makeWASocket>['ev']) => void;
4
- getChats: () => Chat[];
5
- getChat: (id: string) => Chat | undefined;
6
- getContacts: () => Contact[];
7
- getContact: (id: string) => Contact | undefined;
8
- getMessages: () => WAMessage[];
9
- getMessage: (id: string) => WAMessage | undefined;
17
+ bind: (ev: Emitter) => void;
18
+ getChats: () => ChatWithId[];
19
+ getChat: (id: string) => ChatWithId | undefined;
20
+ getContacts: () => ContactWithId[];
21
+ getContact: (id: string) => ContactWithId | undefined;
22
+ getMessages: () => MessageWithId[];
23
+ getMessage: (id: string) => MessageWithId | undefined;
10
24
  reset: () => void;
11
25
  getAuth: () => AuthenticationState;
12
26
  }
@@ -16,5 +30,5 @@ export interface DataStore {
16
30
  messages: string;
17
31
  auth: string;
18
32
  }
19
- export declare function createStore(saveCb?: (data: DataStore) => void, initialData?: DataStore): WhatsAppStore;
33
+ export declare function createStore(saveCb?: (data: DataStore) => Promise<void>, initialData?: DataStore): WhatsAppStore;
20
34
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,EAAE,EAAE,mBAAmB,EAA+B,IAAI,EAAE,OAAO,EAAE,SAAS,EAAgB,MAAM,yBAAyB,CAAA;AAGhJ,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;IACzD,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAA;IACtB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAA;IACzC,WAAW,EAAE,MAAM,OAAO,EAAE,CAAA;IAC5B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAA;IAC/C,WAAW,EAAE,MAAM,SAAS,EAAE,CAAA;IAC9B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAA;IACjD,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,MAAM,mBAAmB,CAAA;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAG,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAaD,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,aAAa,CA8HtG"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAc,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAGlI,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,GAAG,EAAE,YAAY,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CACnC;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,KAAK,IAAI,CAAA;CACpE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3B,QAAQ,EAAE,MAAM,UAAU,EAAE,CAAA;IAC5B,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAA;IAC/C,WAAW,EAAE,MAAM,aAAa,EAAE,CAAA;IAClC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAA;IACrD,WAAW,EAAE,MAAM,aAAa,EAAE,CAAA;IAClC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,CAAA;IACrD,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,OAAO,EAAE,MAAM,mBAAmB,CAAA;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAYD,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,aAAa,CAqI/G"}
package/dist/store.js CHANGED
@@ -10,7 +10,7 @@ function toString(map) {
10
10
  return JSON.stringify(map, BufferJSON.replacer);
11
11
  }
12
12
  export function createStore(saveCb, initialData) {
13
- //TODO: Load initial states from somewhere
13
+ // TODO: Load initial states from somewhere
14
14
  const chats = fromString(initialData?.chats);
15
15
  const contacts = fromString(initialData?.contacts);
16
16
  const messages = fromString(initialData?.messages);
@@ -57,7 +57,7 @@ export function createStore(saveCb, initialData) {
57
57
  }
58
58
  function deleteMessage(jid) {
59
59
  for (const [id, m] of messages.entries()) {
60
- if (m.key?.remoteJid === jid) {
60
+ if (m.key.remoteJid === jid) {
61
61
  messages.delete(id);
62
62
  }
63
63
  }
@@ -65,12 +65,18 @@ export function createStore(saveCb, initialData) {
65
65
  function save() {
66
66
  if (!saveCb)
67
67
  return;
68
- saveCb({
69
- chats: toString(chats), contacts: toString(contacts), messages: toString(messages), auth: auth.toAuthState()
68
+ const data = {
69
+ chats: toString(chats),
70
+ contacts: toString(contacts),
71
+ messages: toString(messages),
72
+ auth: auth.toAuthState(),
73
+ };
74
+ void saveCb(data).catch((error) => {
75
+ console.error('Error saving WhatsApp store data:', error);
70
76
  });
71
77
  }
72
78
  function process(e) {
73
- //Store data if no new events come in for 1 second
79
+ // Store data if no new events come in for 1 second
74
80
  if (saveTimeout)
75
81
  clearTimeout(saveTimeout);
76
82
  if (saveCb)
@@ -119,20 +125,20 @@ export function createStore(saveCb, initialData) {
119
125
  console.error(`Error processing WhatsApp store event: ${error instanceof Error ? error.message : String(error)}`);
120
126
  }
121
127
  return {
122
- bind: (ev) => ev.process(process),
128
+ bind: (ev) => { ev.process(process); },
123
129
  getChats: () => Array.from(chats.values()),
124
- getChat: (id) => chats.get(id),
130
+ getChat: id => chats.get(id),
125
131
  getContacts: () => Array.from(contacts.values()),
126
- getContact: (id) => contacts.get(id),
132
+ getContact: id => contacts.get(id),
127
133
  getMessages: () => Array.from(messages.values()),
128
- getMessage: (id) => messages.get(id),
134
+ getMessage: id => messages.get(id),
129
135
  reset: () => {
130
136
  chats.clear();
131
137
  contacts.clear();
132
138
  messages.clear();
133
139
  auth = createExportableAuth(undefined);
134
140
  },
135
- getAuth: () => auth
141
+ getAuth: () => auth,
136
142
  };
137
143
  }
138
144
  //# sourceMappingURL=store.js.map
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/sync.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { WAMessage } from '@whiskeysockets/baileys';
1
2
  import { createStore } from './store.js';
2
3
  export type SyncStatus = {
3
4
  type: 'connecting';
@@ -10,9 +11,12 @@ export type SyncStatus = {
10
11
  type: 'closed';
11
12
  error?: Error;
12
13
  };
13
- export interface SyncHandler {
14
+ export interface WhatsAppHandler {
14
15
  close: () => void;
15
16
  getStatus: () => SyncStatus;
17
+ sendMessage: (jid: string, text: string) => Promise<WAMessage>;
18
+ setRead: (jid: string, read: boolean) => Promise<void>;
19
+ setArchived: (jid: string, archived: boolean) => Promise<void>;
16
20
  }
17
- export declare function createSyncHandler(store: ReturnType<typeof createStore>): SyncHandler;
21
+ export declare function createHandler(store: ReturnType<typeof createStore>): WhatsAppHandler;
18
22
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,MAAM,UAAU,GAAG;IAAC,IAAI,EAAE,YAAY,CAAA;CAAC,GAAG;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAC,GAAG;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,GAAG;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAC,CAAA;AAElI,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,SAAS,EAAE,MAAM,UAAU,CAAA;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,WAAW,CAoEpF"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAqB,EAAyC,SAAS,EAAS,MAAM,yBAAyB,CAAA;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAE1I,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,SAAS,EAAE,MAAM,UAAU,CAAA;IAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,eAAe,CAkHpF"}
package/dist/sync.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import makeWASocket from '@whiskeysockets/baileys';
2
- export function createSyncHandler(store) {
2
+ export function createHandler(store) {
3
3
  let state = { type: 'connecting' };
4
4
  let sock;
5
5
  const browser = ['Gutschi.site', 'Desktop', '1.0.0'];
@@ -46,7 +46,7 @@ export function createSyncHandler(store) {
46
46
  function startAgainAfterLogin() {
47
47
  sock = makeWASocket({ auth: store.getAuth(), browser, logger: baileysLogger, markOnlineOnConnect: false, syncFullHistory: true, emitOwnEvents: true });
48
48
  sock.ev.on('connection.update', (update) => { connectionUpdateAfterLogin(update, onClosed, onError); });
49
- //wait untill no new messages are received for 2 seconds, then set state to ready
49
+ // wait untill no new messages are received for 2 seconds, then set state to ready
50
50
  let timeout = setTimeout(() => state = { type: 'ready' }, 2000);
51
51
  sock.ev.process(() => {
52
52
  clearTimeout(timeout);
@@ -54,9 +54,68 @@ export function createSyncHandler(store) {
54
54
  });
55
55
  store.bind(sock.ev);
56
56
  }
57
+ async function sendMessage(jid, message) {
58
+ if (state.type === 'connecting')
59
+ throw new Error('Server still connecting, please wait');
60
+ if (state.type === 'closed')
61
+ throw new Error('Connection closed, please restart server');
62
+ if (state.type === 'needAuth')
63
+ throw new Error('Authentication needed, please authenticate yourself first');
64
+ if (sock === undefined)
65
+ throw new Error(`No Socket defined but state is ${state.type}. This is invalid, please restart server`);
66
+ const result = await sock.sendMessage(jid, { text: message });
67
+ if (!result)
68
+ throw new Error(`Failed to send message to ${jid}`);
69
+ return result;
70
+ }
71
+ async function setArchived(jid, archived) {
72
+ if (state.type === 'connecting')
73
+ throw new Error('Server still connecting, please wait');
74
+ if (state.type === 'closed')
75
+ throw new Error('Connection closed, please restart server');
76
+ if (state.type === 'needAuth')
77
+ throw new Error('Authentication needed, please authenticate yourself first');
78
+ if (sock === undefined)
79
+ throw new Error(`No Socket defined but state is ${state.type}. This is invalid, please restart server`);
80
+ const chat = store.getChat(jid);
81
+ if (!chat)
82
+ throw new Error(`No chat found for ${jid}`);
83
+ const lastMessage = chat.messages?.[0].message;
84
+ if (!lastMessage) {
85
+ await sock.chatModify({ archive: archived, lastMessages: [] }, jid);
86
+ return;
87
+ }
88
+ if (!lastMessage.key)
89
+ throw new Error(`Last message for ${jid} has no key, cannot archive chat`);
90
+ await sock.chatModify({ archive: archived, lastMessages: [lastMessage] }, jid);
91
+ }
92
+ async function setRead(jid, read) {
93
+ if (state.type === 'connecting')
94
+ throw new Error('Server still connecting, please wait');
95
+ if (state.type === 'closed')
96
+ throw new Error('Connection closed, please restart server');
97
+ if (state.type === 'needAuth')
98
+ throw new Error('Authentication needed, please authenticate yourself first');
99
+ if (sock === undefined)
100
+ throw new Error(`No Socket defined but state is ${state.type}. This is invalid, please restart server`);
101
+ const chat = store.getChat(jid);
102
+ if (!chat)
103
+ throw new Error(`No chat found for ${jid}`);
104
+ const lastMessage = chat.messages?.[0].message;
105
+ if (!lastMessage) {
106
+ await sock.chatModify({ markRead: read, lastMessages: [] }, jid);
107
+ return;
108
+ }
109
+ if (!lastMessage.key)
110
+ throw new Error(`Last message for ${jid} has no key, cannot mark chat as unread`);
111
+ await sock.chatModify({ markRead: read, lastMessages: [lastMessage] }, jid);
112
+ }
57
113
  start();
58
114
  return {
59
115
  getStatus: () => state,
116
+ sendMessage: sendMessage,
117
+ setArchived: setArchived,
118
+ setRead: setRead,
60
119
  close: close,
61
120
  };
62
121
  }
package/dist/sync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type WhatsAppStore } from '../store.js';
3
+ import { WhatsAppHandler } from '../sync.js';
4
+ export declare function registerChatTools(server: McpServer, store: WhatsAppStore, sync: WhatsAppHandler): void;
5
+ //# sourceMappingURL=chatTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatTools.d.ts","sourceRoot":"","sources":["../../src/tools/chatTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAI5C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,QAkC/F"}
@@ -0,0 +1,34 @@
1
+ import z from 'zod';
2
+ import { JidSchema, registerEntityResources, toCallResult, toCallError } from './common.js';
3
+ export function registerChatTools(server, store, sync) {
4
+ registerEntityResources(server, 'chats', 'chat', () => store.getChats(), id => store.getChat(id), c => `chats://app/${c.id}`, c => c.name ?? c.id);
5
+ server.registerTool('set_chat_archived', { description: 'Set a WhatsApp chat as archived or unarchived.', inputSchema: ArchiveChatSchema }, async (args) => {
6
+ try {
7
+ await sync.setArchived(args.jid, args.archived);
8
+ return toCallResult(`Chat ${args.jid} archived status set to ${String(args.archived)}`);
9
+ }
10
+ catch (error) {
11
+ return toCallError(error);
12
+ }
13
+ });
14
+ server.registerTool('set_chat_read', { description: 'Set a WhatsApp chat as read or unread.', inputSchema: ReadChatSchema }, async (args) => {
15
+ try {
16
+ await sync.setRead(args.jid, args.read);
17
+ return toCallResult(`Chat ${args.jid} read status set to ${String(args.read)}`);
18
+ }
19
+ catch (error) {
20
+ return toCallError(error);
21
+ }
22
+ });
23
+ }
24
+ const ArchiveChatSchema = z.object({
25
+ jid: JidSchema,
26
+ archived: z.boolean()
27
+ .describe('Whether the chat should be archived (true) or unarchived (false).'),
28
+ });
29
+ const ReadChatSchema = z.object({
30
+ jid: JidSchema,
31
+ read: z.boolean()
32
+ .describe('Whether the chat should be marked as read (true) or unread (false).'),
33
+ });
34
+ //# sourceMappingURL=chatTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatTools.js","sourceRoot":"","sources":["../../src/tools/chatTools.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE3F,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,KAAoB,EAAE,IAAqB;IAC9F,uBAAuB,CACrB,MAAM,EAAE,OAAO,EAAE,MAAM,EACvB,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAC/C,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAChD,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB,EAAE,WAAW,EAAE,gDAAgD,EAAE,WAAW,EAAE,iBAAiB,EAAE,EACjG,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC/C,OAAO,YAAY,CAAC,QAAQ,IAAI,CAAC,GAAG,2BAA2B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACzF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,KAAc,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,eAAe,EACf,EAAE,WAAW,EAAE,wCAAwC,EAAE,WAAW,EAAE,cAAc,EAAE,EACtF,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YACvC,OAAO,YAAY,CAAC,QAAQ,IAAI,CAAC,GAAG,uBAAuB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,KAAc,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,GAAG,EAAE,SAAS;IACd,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;SAClB,QAAQ,CAAC,mEAAmE,CAAC;CACjF,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;SACd,QAAQ,CAAC,qEAAqE,CAAC;CACnF,CAAC,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type CallToolResult, type ListResourcesResult, type ReadResourceResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import z from 'zod';
4
+ export declare const toReadResource: (contents: ReadResourceResult["contents"]) => {
5
+ contents: ({
6
+ uri: string;
7
+ text: string;
8
+ mimeType?: string | undefined;
9
+ _meta?: {
10
+ [x: string]: unknown;
11
+ } | undefined;
12
+ } | {
13
+ uri: string;
14
+ blob: string;
15
+ mimeType?: string | undefined;
16
+ _meta?: {
17
+ [x: string]: unknown;
18
+ } | undefined;
19
+ })[];
20
+ };
21
+ export declare const toListResource: (resources: ListResourcesResult["resources"]) => {
22
+ resources: {
23
+ uri: string;
24
+ name: string;
25
+ description?: string | undefined;
26
+ mimeType?: string | undefined;
27
+ size?: number | undefined;
28
+ annotations?: {
29
+ audience?: ("user" | "assistant")[] | undefined;
30
+ priority?: number | undefined;
31
+ lastModified?: string | undefined;
32
+ } | undefined;
33
+ _meta?: {
34
+ [x: string]: unknown;
35
+ } | undefined;
36
+ icons?: {
37
+ src: string;
38
+ mimeType?: string | undefined;
39
+ sizes?: string[] | undefined;
40
+ theme?: "light" | "dark" | undefined;
41
+ }[] | undefined;
42
+ title?: string | undefined;
43
+ }[];
44
+ };
45
+ export declare const toCallResult: (text: string) => CallToolResult;
46
+ export declare const toCallError: (error: Error) => CallToolResult;
47
+ export declare function registerEntityResources<T>(server: McpServer, pluralType: string, singularType: string, getAll: () => T[], get: (id: string) => T | undefined, toUri: (entity: T) => string, toName: (entity: T) => string): void;
48
+ export declare const JidSchema: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
49
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/tools/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAA;AACrF,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAC3H,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,eAAO,MAAM,cAAc,GAAI,UAAU,kBAAkB,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;CAAmB,CAAA;AAC1F,eAAO,MAAM,cAAc,GAAI,WAAW,mBAAmB,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAAoB,CAAA;AAC9F,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,cAAyE,CAAA;AACrH,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,KAAG,cAAmG,CAAA;AAE9I,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,EAAE,EACjB,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,EAClC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,EAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,QAoB9B;AAED,eAAO,MAAM,SAAS,iDAG6H,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import z from 'zod';
3
+ export const toReadResource = (contents) => ({ contents });
4
+ export const toListResource = (resources) => ({ resources });
5
+ export const toCallResult = (text) => ({ content: [{ type: 'text', text }], isError: false });
6
+ export const toCallError = (error) => ({ content: [{ type: 'text', text: `Error: ${error.message}` }], isError: true });
7
+ export function registerEntityResources(server, pluralType, singularType, getAll, get, toUri, toName) {
8
+ const toResource = (entity) => entity ? [{ uri: toUri(entity), mimeType: 'application/json', text: JSON.stringify(entity) }] : [];
9
+ server.registerResource(pluralType, `${pluralType}://app`, { title: `All WhatsApp ${pluralType}`, description: `List WhatsApp ${pluralType}`, mimeType: 'application/json' }, () => toReadResource(getAll().flatMap(toResource)));
10
+ server.registerResource(singularType, new ResourceTemplate(`${pluralType}://app/{${singularType}Id}`, {
11
+ list: () => toListResource(getAll().map(e => ({ uri: toUri(e), name: toName(e) }))),
12
+ }), { title: `A single WhatsApp ${singularType}`, description: `Details of a single WhatsApp ${singularType}`, mimeType: 'application/json' }, (_, params) => toReadResource(toResource(get(params[`${singularType}Id`]))));
13
+ }
14
+ export const JidSchema = z.union([
15
+ z.string().min(1, 'JID is required').endsWith('@s.whatsapp.net', 'JID not a valid WhatsApp JID)'),
16
+ z.string().min(1, 'JID is required').endsWith('@g.us', 'JID not a valid WhatsApp JID)'),
17
+ ]).describe('The JID of the recipient or chat. For example 41791234567@s.whatsapp.net for an individual or 1234567890-1234567890@g.us for a group');
18
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/tools/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAErF,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAwC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAA2C,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AAC9F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;AACrH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAE9I,MAAM,UAAU,uBAAuB,CACrC,MAAiB,EACjB,UAAkB,EAClB,YAAoB,EACpB,MAAiB,EACjB,GAAkC,EAClC,KAA4B,EAC5B,MAA6B;IAE7B,MAAM,UAAU,GAAG,CAAC,MAAqB,EAAE,EAAE,CAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,kBAA2B,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE7G,MAAM,CAAC,gBAAgB,CACrB,UAAU,EACV,GAAG,UAAU,QAAQ,EACrB,EAAE,KAAK,EAAE,gBAAgB,UAAU,EAAE,EAAE,WAAW,EAAE,iBAAiB,UAAU,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EACjH,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CACnD,CAAA;IAED,MAAM,CAAC,gBAAgB,CACrB,YAAY,EACZ,IAAI,gBAAgB,CAAC,GAAG,UAAU,WAAW,YAAY,KAAK,EAAE;QAC9D,IAAI,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACpF,CAAC,EACF,EAAE,KAAK,EAAE,qBAAqB,YAAY,EAAE,EAAE,WAAW,EAAE,gCAAgC,YAAY,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EACzI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,YAAY,IAAI,CAAW,CAAC,CAAC,CAAC,CACtF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;IAC/B,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;IACjG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,+BAA+B,CAAC;CACxF,CAAC,CAAC,QAAQ,CAAC,sIAAsI,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type WhatsAppStore } from '../store.js';
3
+ export declare function registerContactResources(server: McpServer, store: WhatsAppStore): void;
4
+ //# sourceMappingURL=contactTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contactTools.d.ts","sourceRoot":"","sources":["../../src/tools/contactTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,QAM/E"}
@@ -0,0 +1,5 @@
1
+ import { registerEntityResources } from './common.js';
2
+ export function registerContactResources(server, store) {
3
+ registerEntityResources(server, 'contacts', 'contact', () => store.getContacts(), id => store.getContact(id), c => `contacts://app/${c.id}`, c => c.name ?? c.id);
4
+ }
5
+ //# sourceMappingURL=contactTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contactTools.js","sourceRoot":"","sources":["../../src/tools/contactTools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,KAAoB;IAC9E,uBAAuB,CACrB,MAAM,EAAE,UAAU,EAAE,SAAS,EAC7B,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EACrD,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CACnD,CAAA;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { type WhatsAppStore } from '../store.js';
3
+ import { WhatsAppHandler } from '../sync.js';
4
+ export declare function registerMessageTools(server: McpServer, store: WhatsAppStore, sync: WhatsAppHandler): void;
5
+ //# sourceMappingURL=messageTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageTools.d.ts","sourceRoot":"","sources":["../../src/tools/messageTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAK5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,QAoBlG"}
@@ -0,0 +1,21 @@
1
+ import z from 'zod';
2
+ import { JidSchema, registerEntityResources, toCallResult, toCallError } from './common.js';
3
+ export function registerMessageTools(server, store, sync) {
4
+ registerEntityResources(server, 'messages', 'message', () => store.getMessages(), id => store.getMessage(id), m => `messages://app/${m.key.id}`, m => m.key.id);
5
+ server.registerTool('send_message', { description: 'Send a WhatsApp-Message to a given JID.', inputSchema: SendMessageSchema }, async (args) => {
6
+ try {
7
+ const message = await sync.sendMessage(args.jid, args.message);
8
+ return toCallResult(`Message sent to ${message.key.remoteJid ?? 'unknown'}: "${message.message?.conversation ?? 'unknown'}"`);
9
+ }
10
+ catch (error) {
11
+ return toCallError(error);
12
+ }
13
+ });
14
+ }
15
+ const SendMessageSchema = z.object({
16
+ jid: JidSchema,
17
+ message: z.string()
18
+ .min(1, 'Message body is required')
19
+ .describe('The body of the message to be sent. Can contain unicode characters like emojis.'),
20
+ });
21
+ //# sourceMappingURL=messageTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageTools.js","sourceRoot":"","sources":["../../src/tools/messageTools.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE3F,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,KAAoB,EAAE,IAAqB;IACjG,uBAAuB,CACrB,MAAM,EAAE,UAAU,EAAE,SAAS,EAC7B,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EACrD,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CACjD,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,cAAc,EACd,EAAE,WAAW,EAAE,yCAAyC,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAC1F,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAc,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACzE,OAAO,YAAY,CAAC,mBAAmB,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,MAAM,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,GAAG,CAAC,CAAA;QAC/H,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,KAAc,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC;SAClC,QAAQ,CAAC,iFAAiF,CAAC;CAC/F,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,9 +1,23 @@
1
1
  {
2
2
  "name": "@lizzythelizard/whatsapp-mcp",
3
- "version": "0.1.3",
3
+ "version": "0.1.6",
4
4
  "description": "MCP server for WhatsApp integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "engines": {
11
+ "node": ">=20"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/lizzyTheLizard/whatsapp-mcp.git"
16
+ },
17
+ "bugs": {
18
+ "url": "https://github.com/lizzyTheLizard/whatsapp-mcp/issues"
19
+ },
20
+ "homepage": "https://github.com/lizzyTheLizard/whatsapp-mcp#readme",
7
21
  "publishConfig": {
8
22
  "access": "public"
9
23
  },
@@ -37,6 +51,7 @@
37
51
  "@types/node": "^26.0.1",
38
52
  "@typescript-eslint/eslint-plugin": "^8.62.0",
39
53
  "eslint": "^10.5.0",
54
+ "eslint-plugin-import-x": "^4.17.0",
40
55
  "tsx": "^4.22.4",
41
56
  "typescript": "^6.0.3",
42
57
  "typescript-eslint": "^8.62.0",