@exileum/meta-mcp 4.0.0 → 6.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.
Files changed (76) hide show
  1. package/README.md +81 -12
  2. package/dist/config.d.ts +10 -8
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +65 -8
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +8 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/resources/instagram.d.ts.map +1 -1
  10. package/dist/resources/instagram.js +19 -13
  11. package/dist/resources/instagram.js.map +1 -1
  12. package/dist/resources/threads.d.ts.map +1 -1
  13. package/dist/resources/threads.js +19 -13
  14. package/dist/resources/threads.js.map +1 -1
  15. package/dist/schemas.d.ts +14 -0
  16. package/dist/schemas.d.ts.map +1 -1
  17. package/dist/schemas.js +14 -0
  18. package/dist/schemas.js.map +1 -1
  19. package/dist/services/meta-client.d.ts +47 -5
  20. package/dist/services/meta-client.d.ts.map +1 -1
  21. package/dist/services/meta-client.js +120 -27
  22. package/dist/services/meta-client.js.map +1 -1
  23. package/dist/tools/instagram/comments.d.ts.map +1 -1
  24. package/dist/tools/instagram/comments.js +35 -29
  25. package/dist/tools/instagram/comments.js.map +1 -1
  26. package/dist/tools/instagram/hashtags.d.ts.map +1 -1
  27. package/dist/tools/instagram/hashtags.js +19 -11
  28. package/dist/tools/instagram/hashtags.js.map +1 -1
  29. package/dist/tools/instagram/media.d.ts.map +1 -1
  30. package/dist/tools/instagram/media.js +17 -15
  31. package/dist/tools/instagram/media.js.map +1 -1
  32. package/dist/tools/instagram/mentions.d.ts.map +1 -1
  33. package/dist/tools/instagram/mentions.js +16 -12
  34. package/dist/tools/instagram/mentions.js.map +1 -1
  35. package/dist/tools/instagram/messaging.d.ts.map +1 -1
  36. package/dist/tools/instagram/messaging.js +34 -24
  37. package/dist/tools/instagram/messaging.js.map +1 -1
  38. package/dist/tools/instagram/profile.d.ts +2 -0
  39. package/dist/tools/instagram/profile.d.ts.map +1 -1
  40. package/dist/tools/instagram/profile.js +46 -21
  41. package/dist/tools/instagram/profile.js.map +1 -1
  42. package/dist/tools/instagram/publishing.d.ts.map +1 -1
  43. package/dist/tools/instagram/publishing.js +14 -13
  44. package/dist/tools/instagram/publishing.js.map +1 -1
  45. package/dist/tools/meta/auth.d.ts.map +1 -1
  46. package/dist/tools/meta/auth.js +7 -6
  47. package/dist/tools/meta/auth.js.map +1 -1
  48. package/dist/tools/threads/insights.d.ts.map +1 -1
  49. package/dist/tools/threads/insights.js +8 -8
  50. package/dist/tools/threads/insights.js.map +1 -1
  51. package/dist/tools/threads/media.d.ts.map +1 -1
  52. package/dist/tools/threads/media.js +12 -12
  53. package/dist/tools/threads/media.js.map +1 -1
  54. package/dist/tools/threads/mentions.d.ts.map +1 -1
  55. package/dist/tools/threads/mentions.js +2 -1
  56. package/dist/tools/threads/mentions.js.map +1 -1
  57. package/dist/tools/threads/profile.d.ts.map +1 -1
  58. package/dist/tools/threads/profile.js +2 -28
  59. package/dist/tools/threads/profile.js.map +1 -1
  60. package/dist/tools/threads/publishing.d.ts +7 -0
  61. package/dist/tools/threads/publishing.d.ts.map +1 -1
  62. package/dist/tools/threads/publishing.js +47 -35
  63. package/dist/tools/threads/publishing.js.map +1 -1
  64. package/dist/tools/threads/replies.d.ts +2 -0
  65. package/dist/tools/threads/replies.d.ts.map +1 -1
  66. package/dist/tools/threads/replies.js +32 -17
  67. package/dist/tools/threads/replies.js.map +1 -1
  68. package/dist/utils/container.d.ts +4 -2
  69. package/dist/utils/container.d.ts.map +1 -1
  70. package/dist/utils/container.js +8 -3
  71. package/dist/utils/container.js.map +1 -1
  72. package/dist/utils/errors.d.ts +38 -0
  73. package/dist/utils/errors.d.ts.map +1 -0
  74. package/dist/utils/errors.js +145 -0
  75. package/dist/utils/errors.js.map +1 -0
  76. package/package.json +10 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjG,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,IAAI,EAAE,gBAAgB;CAYnC;AA6DD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAShD;AAeD,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,EAAE,IAAI,CAAC;CACf;AAUD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAkBjF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAW1E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAU/D"}
@@ -0,0 +1,145 @@
1
+ import { ErrorCode, McpError } from "@modelcontextprotocol/sdk/types.js";
2
+ export class MetaApiError extends Error {
3
+ httpStatus;
4
+ apiCode;
5
+ apiSubcode;
6
+ apiType;
7
+ fbtraceId;
8
+ endpoint;
9
+ method;
10
+ body;
11
+ constructor(init) {
12
+ super(init.message);
13
+ this.name = "MetaApiError";
14
+ this.httpStatus = init.httpStatus;
15
+ this.apiCode = init.apiCode;
16
+ this.apiSubcode = init.apiSubcode;
17
+ this.apiType = init.apiType;
18
+ this.fbtraceId = init.fbtraceId;
19
+ this.endpoint = init.endpoint;
20
+ this.method = init.method;
21
+ this.body = init.body;
22
+ }
23
+ }
24
+ const AUTH_CODES = new Set([10, 102, 190]);
25
+ const RATE_LIMIT_CODES = new Set([4, 17, 32, 341, 613]);
26
+ const VALIDATION_CODES = new Set([100, 200, 803]);
27
+ const SERVER_CODES = new Set([1, 2]);
28
+ function isBusinessUseCaseRateLimit(code) {
29
+ return typeof code === "number" && code >= 80001 && code <= 80008;
30
+ }
31
+ function categorize(error) {
32
+ if (error instanceof MetaApiError) {
33
+ const { httpStatus, apiCode, apiType } = error;
34
+ // Check rate_limit before auth: Meta returns rate-limit errors as
35
+ // type="OAuthException" with code 4/17 (Application/User request
36
+ // limit reached). The apiType check below would otherwise route
37
+ // those to "auth" with a token-refresh remediation hint.
38
+ if (httpStatus === 429 ||
39
+ (apiCode !== undefined && RATE_LIMIT_CODES.has(apiCode)) ||
40
+ isBusinessUseCaseRateLimit(apiCode)) {
41
+ return "rate_limit";
42
+ }
43
+ if (httpStatus === 401 ||
44
+ apiType === "OAuthException" ||
45
+ (apiCode !== undefined && AUTH_CODES.has(apiCode))) {
46
+ return "auth";
47
+ }
48
+ if (apiCode !== undefined && VALIDATION_CODES.has(apiCode)) {
49
+ return "validation";
50
+ }
51
+ if (apiCode !== undefined && SERVER_CODES.has(apiCode)) {
52
+ return "server";
53
+ }
54
+ if (httpStatus !== undefined) {
55
+ if (httpStatus >= 400 && httpStatus < 500)
56
+ return "validation";
57
+ if (httpStatus >= 500)
58
+ return "server";
59
+ }
60
+ return "internal";
61
+ }
62
+ if (error instanceof Error) {
63
+ if (error.name === "AbortError" || error.name === "TimeoutError")
64
+ return "network";
65
+ if (error.name === "TypeError" && /fetch failed|network/i.test(error.message))
66
+ return "network";
67
+ if (/fetch failed/i.test(error.message))
68
+ return "network";
69
+ }
70
+ return "internal";
71
+ }
72
+ const REMEDIATION = {
73
+ auth: "Refresh the access token via meta_exchange_token (short→long) or meta_refresh_token (long→long), or generate a new token from the Meta App dashboard. The token may be expired, revoked, or scoped incorrectly.",
74
+ rate_limit: "Retry after a delay with exponential backoff. Inspect the _rateLimit field on prior successful responses to gauge headroom; consider reducing call volume or batching.",
75
+ server: "Transient Meta server issue — retry with exponential backoff. If it persists, check status.dev.facebook.com.",
76
+ network: "Network error or timeout reaching the Meta API. Retry with exponential backoff; verify outbound connectivity.",
77
+ };
78
+ const SENSITIVE_PARAMS = ["access_token", "client_secret", "input_token"];
79
+ export function sanitizeRaw(text) {
80
+ let result = text;
81
+ for (const param of SENSITIVE_PARAMS) {
82
+ const queryRegex = new RegExp(`${param}=[^&"\\s]+`, "gi");
83
+ const jsonRegex = new RegExp(`"${param}"\\s*:\\s*"[^"]*"`, "gi");
84
+ result = result.replace(queryRegex, `${param}=***`);
85
+ result = result.replace(jsonRegex, `"${param}":"***"`);
86
+ }
87
+ return result;
88
+ }
89
+ function assignMetaApiFields(target, error) {
90
+ if (error.httpStatus !== undefined)
91
+ target.http_status = error.httpStatus;
92
+ if (error.apiCode !== undefined)
93
+ target.code = error.apiCode;
94
+ if (error.apiSubcode !== undefined)
95
+ target.subcode = error.apiSubcode;
96
+ if (error.apiType)
97
+ target.type = error.apiType;
98
+ if (error.fbtraceId)
99
+ target.fbtrace_id = error.fbtraceId;
100
+ }
101
+ export function formatErrorResponse(error, label) {
102
+ const errorType = categorize(error);
103
+ const original = error instanceof Error ? error.message : String(error);
104
+ const payload = {
105
+ error: true,
106
+ error_type: errorType,
107
+ message: `${label} failed: ${original}`,
108
+ };
109
+ if (error instanceof MetaApiError) {
110
+ assignMetaApiFields(payload, error);
111
+ }
112
+ const remediation = REMEDIATION[errorType];
113
+ if (remediation)
114
+ payload.remediation = remediation;
115
+ payload.raw = sanitizeRaw(original);
116
+ return {
117
+ content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
118
+ isError: true,
119
+ };
120
+ }
121
+ export function toMcpResourceError(error, label) {
122
+ const errorType = categorize(error);
123
+ const original = error instanceof Error ? error.message : String(error);
124
+ const message = sanitizeRaw(`${label} failed: ${original}`);
125
+ const data = { error_type: errorType };
126
+ if (error instanceof MetaApiError) {
127
+ assignMetaApiFields(data, error);
128
+ }
129
+ const remediation = REMEDIATION[errorType];
130
+ if (remediation)
131
+ data.remediation = remediation;
132
+ return new McpError(ErrorCode.InternalError, message, data);
133
+ }
134
+ export function validationError(message) {
135
+ const payload = {
136
+ error: true,
137
+ error_type: "validation",
138
+ message,
139
+ };
140
+ return {
141
+ content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
142
+ isError: true,
143
+ };
144
+ }
145
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exileum/meta-mcp",
3
- "version": "4.0.0",
3
+ "version": "6.0.0",
4
4
  "mcpName": "io.github.exileum/meta",
5
5
  "description": "Enables AI assistants to manage Instagram and Threads accounts — publish content, handle comments, view insights, search hashtags, and manage DMs through the Meta Graph API",
6
6
  "type": "module",
@@ -27,6 +27,8 @@
27
27
  "build": "tsc",
28
28
  "start": "node dist/index.js",
29
29
  "dev": "tsx src/index.ts",
30
+ "lint": "eslint . --max-warnings 0",
31
+ "lint:fix": "eslint . --fix",
30
32
  "test": "vitest run",
31
33
  "test:watch": "vitest"
32
34
  },
@@ -58,10 +60,17 @@
58
60
  "@modelcontextprotocol/sdk": "^1.29.0",
59
61
  "zod": "^4.4.3"
60
62
  },
63
+ "overrides": {
64
+ "ip-address": "^10.1.1"
65
+ },
61
66
  "devDependencies": {
67
+ "@eslint/js": "^9.39.4",
62
68
  "@types/node": "^25.6.0",
69
+ "eslint": "^9.39.4",
70
+ "globals": "^17.6.0",
63
71
  "tsx": "^4.21.0",
64
72
  "typescript": "^6.0.3",
73
+ "typescript-eslint": "^8.59.2",
65
74
  "vitest": "^4.1.5"
66
75
  }
67
76
  }