@exileum/meta-mcp 5.0.0 → 7.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 +83 -12
- package/dist/config.d.ts +10 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +65 -8
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -59
- package/dist/index.js.map +1 -1
- package/dist/register-all.d.ts +4 -0
- package/dist/register-all.d.ts.map +1 -0
- package/dist/register-all.js +41 -0
- package/dist/register-all.js.map +1 -0
- package/dist/resources/instagram.d.ts.map +1 -1
- package/dist/resources/instagram.js +18 -12
- package/dist/resources/instagram.js.map +1 -1
- package/dist/resources/threads.d.ts.map +1 -1
- package/dist/resources/threads.js +18 -12
- package/dist/resources/threads.js.map +1 -1
- package/dist/schemas.d.ts +14 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +14 -0
- package/dist/schemas.js.map +1 -1
- package/dist/services/meta-client.d.ts +101 -5
- package/dist/services/meta-client.d.ts.map +1 -1
- package/dist/services/meta-client.js +273 -69
- package/dist/services/meta-client.js.map +1 -1
- package/dist/tools/annotations.d.ts +6 -0
- package/dist/tools/annotations.d.ts.map +1 -0
- package/dist/tools/annotations.js +27 -0
- package/dist/tools/annotations.js.map +1 -0
- package/dist/tools/instagram/comments.d.ts.map +1 -1
- package/dist/tools/instagram/comments.js +64 -33
- package/dist/tools/instagram/comments.js.map +1 -1
- package/dist/tools/instagram/hashtags.d.ts.map +1 -1
- package/dist/tools/instagram/hashtags.js +37 -18
- package/dist/tools/instagram/hashtags.js.map +1 -1
- package/dist/tools/instagram/media.d.ts.map +1 -1
- package/dist/tools/instagram/media.js +47 -24
- package/dist/tools/instagram/media.js.map +1 -1
- package/dist/tools/instagram/mentions.d.ts.map +1 -1
- package/dist/tools/instagram/mentions.js +21 -10
- package/dist/tools/instagram/mentions.js.map +1 -1
- package/dist/tools/instagram/messaging.d.ts.map +1 -1
- package/dist/tools/instagram/messaging.js +64 -27
- package/dist/tools/instagram/messaging.js.map +1 -1
- package/dist/tools/instagram/profile.d.ts.map +1 -1
- package/dist/tools/instagram/profile.js +54 -31
- package/dist/tools/instagram/profile.js.map +1 -1
- package/dist/tools/instagram/publishing.d.ts.map +1 -1
- package/dist/tools/instagram/publishing.js +83 -57
- package/dist/tools/instagram/publishing.js.map +1 -1
- package/dist/tools/meta/auth.d.ts.map +1 -1
- package/dist/tools/meta/auth.js +47 -21
- package/dist/tools/meta/auth.js.map +1 -1
- package/dist/tools/threads/insights.d.ts.map +1 -1
- package/dist/tools/threads/insights.js +21 -10
- package/dist/tools/threads/insights.js.map +1 -1
- package/dist/tools/threads/media.d.ts.map +1 -1
- package/dist/tools/threads/media.js +38 -23
- package/dist/tools/threads/media.js.map +1 -1
- package/dist/tools/threads/mentions.d.ts.map +1 -1
- package/dist/tools/threads/mentions.js +12 -6
- package/dist/tools/threads/mentions.js.map +1 -1
- package/dist/tools/threads/profile.d.ts.map +1 -1
- package/dist/tools/threads/profile.js +8 -2
- package/dist/tools/threads/profile.js.map +1 -1
- package/dist/tools/threads/publishing.d.ts +7 -0
- package/dist/tools/threads/publishing.d.ts.map +1 -1
- package/dist/tools/threads/publishing.js +168 -76
- package/dist/tools/threads/publishing.js.map +1 -1
- package/dist/tools/threads/replies.d.ts.map +1 -1
- package/dist/tools/threads/replies.js +48 -27
- package/dist/tools/threads/replies.js.map +1 -1
- package/dist/utils/container.d.ts +4 -2
- package/dist/utils/container.d.ts.map +1 -1
- package/dist/utils/container.js +8 -3
- package/dist/utils/container.js.map +1 -1
- package/dist/utils/errors.d.ts +2 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +27 -10
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/response.d.ts +11 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +6 -0
- package/dist/utils/response.js.map +1 -0
- package/package.json +10 -1
|
@@ -1,24 +1,120 @@
|
|
|
1
1
|
import { MetaConfig } from "../config.js";
|
|
2
|
+
export declare const DEFAULT_META_API_VERSION = "v25.0";
|
|
3
|
+
export declare const DEFAULT_THREADS_API_VERSION = "v1.0";
|
|
4
|
+
export declare const DEFAULT_MAX_RETRIES = 3;
|
|
5
|
+
export declare const DEFAULT_RETRY_BASE_DELAY_MS = 1000;
|
|
6
|
+
export declare const MAX_RETRY_DELAY_MS = 60000;
|
|
7
|
+
/**
|
|
8
|
+
* Parse a `Retry-After` response header value (RFC 7231 §7.1.3) into
|
|
9
|
+
* milliseconds. Returns `undefined` for missing or unparseable values so the
|
|
10
|
+
* caller falls back to the exponential-backoff schedule. Past dates and
|
|
11
|
+
* negative seconds clamp to `0` to absorb server time skew.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseRetryAfter(value: string | null, nowMs: number): number | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Exponential backoff `base * 2^attempt` with 0–25% jitter to spread
|
|
16
|
+
* concurrent clients and avoid thundering-herd reconnects. Capped at
|
|
17
|
+
* {@link MAX_RETRY_DELAY_MS}. `rand` is injectable for deterministic tests.
|
|
18
|
+
*/
|
|
19
|
+
export declare function computeBackoffDelay(attempt: number, baseDelayMs: number, rand?: () => number): number;
|
|
20
|
+
export interface MetaClientOptions {
|
|
21
|
+
metaApiVersion?: string;
|
|
22
|
+
threadsApiVersion?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Maximum number of retry attempts after the initial request fails with a
|
|
25
|
+
* transient error (HTTP 429/500/502/503/504 or a thrown network error).
|
|
26
|
+
* Total request count is `maxRetries + 1`. Set to `0` to disable retries
|
|
27
|
+
* entirely (matches pre-#61 behavior). Defaults to {@link DEFAULT_MAX_RETRIES}.
|
|
28
|
+
*/
|
|
29
|
+
maxRetries?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Base delay (ms) used by the exponential-backoff schedule between retries.
|
|
32
|
+
* Attempt N waits `baseDelayMs * 2^N` plus 0–25% jitter (capped at
|
|
33
|
+
* {@link MAX_RETRY_DELAY_MS}). Defaults to {@link DEFAULT_RETRY_BASE_DELAY_MS}.
|
|
34
|
+
* Tests pass `0` to make retries fire immediately without real waiting.
|
|
35
|
+
*/
|
|
36
|
+
retryBaseDelayMs?: number;
|
|
37
|
+
/**
|
|
38
|
+
* @internal — testing-only seam, not part of the stable API. Injection point
|
|
39
|
+
* for the sleep primitive used between retries. Defaults to a
|
|
40
|
+
* `setTimeout`-backed `Promise`.
|
|
41
|
+
*/
|
|
42
|
+
sleep?: (ms: number) => Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* @internal — testing-only seam, not part of the stable API. Injection point
|
|
45
|
+
* for the current-time source used when parsing the HTTP-date form of the
|
|
46
|
+
* `Retry-After` header. Defaults to `Date.now`.
|
|
47
|
+
*/
|
|
48
|
+
now?: () => number;
|
|
49
|
+
}
|
|
2
50
|
export interface RateLimit {
|
|
3
51
|
callCount?: number;
|
|
4
52
|
totalCpuTime?: number;
|
|
5
53
|
totalTime?: number;
|
|
6
54
|
}
|
|
55
|
+
export declare const RATE_LIMIT_SLOWDOWN_THRESHOLD = 80;
|
|
56
|
+
export declare const RATE_LIMIT_BACKOFF_THRESHOLD = 90;
|
|
57
|
+
export declare const RATE_LIMIT_SLOWDOWN_MS = 1000;
|
|
58
|
+
export declare const RATE_LIMIT_BACKOFF_MS = 5000;
|
|
59
|
+
export declare const RATE_LIMIT_SNAPSHOT_TTL_MS: number;
|
|
7
60
|
export interface ClientResponse {
|
|
8
61
|
data: Record<string, unknown>;
|
|
9
62
|
rateLimit?: RateLimit;
|
|
10
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Allowed value types for form-encoded query string and request body parameters.
|
|
66
|
+
* Non-primitive values (arrays, objects) must be serialized by the caller (JSON.stringify, .join(",") etc.)
|
|
67
|
+
* before being assigned — the form-encoded path uses String(v) which produces "[object Object]" / "1,2,3"
|
|
68
|
+
* for objects/arrays and silently corrupts the request.
|
|
69
|
+
*/
|
|
70
|
+
export type FormParamValue = string | number | boolean | undefined | null;
|
|
71
|
+
export type FormParams = Record<string, FormParamValue>;
|
|
11
72
|
export interface RequestOptions {
|
|
12
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Sends the value as an `application/json` request body instead of the default
|
|
75
|
+
* `application/x-www-form-urlencoded`. The `access_token` is moved to the query
|
|
76
|
+
* string (never embedded in the JSON body) and `params` must be omitted —
|
|
77
|
+
* combining them is rejected at runtime so callers don't accidentally route
|
|
78
|
+
* data into both transports.
|
|
79
|
+
*
|
|
80
|
+
* **When to use:** only when Meta's documentation explicitly requires
|
|
81
|
+
* `Content-Type: application/json` for the endpoint. Currently the
|
|
82
|
+
* Instagram Messaging Send API (`POST /{ig-user-id}/messages`, used by
|
|
83
|
+
* `ig_send_message`) is the only such endpoint — it accepts nested
|
|
84
|
+
* `recipient` / `message` objects that would be flattened to
|
|
85
|
+
* `[object Object]` if sent through the form path. See
|
|
86
|
+
* https://developers.facebook.com/docs/instagram-platform/instagram-api-with-instagram-login/messaging-api
|
|
87
|
+
*
|
|
88
|
+
* **When not to use:** every other Graph API endpoint (Threads publish,
|
|
89
|
+
* Instagram media/comments/collaboration, Meta App Subscriptions, etc.)
|
|
90
|
+
* accepts form-urlencoded with flat string/number/boolean parameters and
|
|
91
|
+
* works correctly through the default path. Nested objects required by the
|
|
92
|
+
* API (`poll_attachment`, `gif_attachment`, `text_attachment`, `user_tags`)
|
|
93
|
+
* must be `JSON.stringify`-ed by the caller into a single form field — the
|
|
94
|
+
* runtime guard in `appendFormParams` rejects raw objects/arrays so this
|
|
95
|
+
* convention is enforced (see #81). Audited in #104.
|
|
96
|
+
*/
|
|
97
|
+
jsonBody?: Record<string, unknown>;
|
|
13
98
|
}
|
|
14
99
|
export declare class MetaClient {
|
|
15
100
|
private config;
|
|
16
|
-
|
|
101
|
+
private igBase;
|
|
102
|
+
private fbBase;
|
|
103
|
+
private threadsBase;
|
|
104
|
+
private lastRateLimit?;
|
|
105
|
+
private lastRateLimitAt?;
|
|
106
|
+
private maxRetries;
|
|
107
|
+
private retryBaseDelayMs;
|
|
108
|
+
private sleep;
|
|
109
|
+
private now;
|
|
110
|
+
constructor(config: MetaConfig, options?: MetaClientOptions);
|
|
17
111
|
private parseRateLimit;
|
|
112
|
+
private maybeThrottle;
|
|
113
|
+
private appendFormParams;
|
|
18
114
|
private request;
|
|
19
|
-
ig(method: string, path: string, params?:
|
|
20
|
-
threads(method: string, path: string, params?:
|
|
21
|
-
meta(method: string, path: string, params?:
|
|
115
|
+
ig(method: string, path: string, params?: FormParams, options?: RequestOptions): Promise<ClientResponse>;
|
|
116
|
+
threads(method: string, path: string, params?: FormParams, options?: RequestOptions): Promise<ClientResponse>;
|
|
117
|
+
meta(method: string, path: string, params?: FormParams, options?: RequestOptions): Promise<ClientResponse>;
|
|
22
118
|
/** Exchange short-lived Instagram token for long-lived token (60 days) */
|
|
23
119
|
igExchangeToken(shortToken: string): Promise<ClientResponse>;
|
|
24
120
|
/** Refresh a long-lived Instagram token (must be at least 24h old and not expired) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-client.d.ts","sourceRoot":"","sources":["../../src/services/meta-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"meta-client.d.ts","sourceRoot":"","sources":["../../src/services/meta-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,93 @@
|
|
|
1
1
|
import { MetaApiError } from "../utils/errors.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
//
|
|
2
|
+
// Default Meta Graph API and Threads API versions — last verified 2026-05-06.
|
|
3
|
+
// The Graph API ships a new minor version every ~4 months and supports each
|
|
4
|
+
// for ~2 years; Threads runs a separate single-major-version track (v1.0 since
|
|
5
|
+
// launch) and is intentionally not bumped in lockstep with the Graph API.
|
|
6
|
+
// Operators can override either default at runtime via `META_API_VERSION` /
|
|
7
|
+
// `THREADS_API_VERSION` to buy time when Meta deprecates a version before a
|
|
8
|
+
// new meta-mcp release ships. OAuth token endpoints
|
|
9
|
+
// (`graph.instagram.com/access_token`, `graph.threads.net/refresh_access_token`,
|
|
10
|
+
// etc.) are unversioned by Meta — `IG_TOKEN_BASE` / `THREADS_TOKEN_BASE` stay
|
|
11
|
+
// unversioned regardless of the version env vars.
|
|
12
|
+
export const DEFAULT_META_API_VERSION = "v25.0";
|
|
13
|
+
export const DEFAULT_THREADS_API_VERSION = "v1.0";
|
|
14
|
+
const API_VERSION_PATTERN = /^v\d+\.\d+$/;
|
|
15
|
+
// Unversioned bases for OAuth token endpoints (deliberate — Meta's OAuth
|
|
16
|
+
// surface has no version segment; piping META_API_VERSION here would 404).
|
|
6
17
|
const IG_TOKEN_BASE = "https://graph.instagram.com";
|
|
7
18
|
const THREADS_TOKEN_BASE = "https://graph.threads.net";
|
|
19
|
+
// Retry policy for transient Meta API failures (#61). 429 is the explicit
|
|
20
|
+
// rate-limit signal; 502/503/504 are canonical gateway/availability errors;
|
|
21
|
+
// 500 is included because Meta's infrastructure routinely returns transient
|
|
22
|
+
// 500s during brief overloads alongside the more canonical 5xx codes. Every
|
|
23
|
+
// other 4xx is a permanent caller-side error (auth, validation) and fails fast.
|
|
24
|
+
const RETRYABLE_HTTP_STATUSES = new Set([429, 500, 502, 503, 504]);
|
|
25
|
+
export const DEFAULT_MAX_RETRIES = 3;
|
|
26
|
+
export const DEFAULT_RETRY_BASE_DELAY_MS = 1000;
|
|
27
|
+
// Cap so a malformed `Retry-After: 999999` (≈11 days) can't hang a tool.
|
|
28
|
+
export const MAX_RETRY_DELAY_MS = 60_000;
|
|
29
|
+
/**
|
|
30
|
+
* Parse a `Retry-After` response header value (RFC 7231 §7.1.3) into
|
|
31
|
+
* milliseconds. Returns `undefined` for missing or unparseable values so the
|
|
32
|
+
* caller falls back to the exponential-backoff schedule. Past dates and
|
|
33
|
+
* negative seconds clamp to `0` to absorb server time skew.
|
|
34
|
+
*/
|
|
35
|
+
export function parseRetryAfter(value, nowMs) {
|
|
36
|
+
if (value === null)
|
|
37
|
+
return undefined;
|
|
38
|
+
const trimmed = value.trim();
|
|
39
|
+
if (trimmed === "")
|
|
40
|
+
return undefined;
|
|
41
|
+
if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
|
|
42
|
+
const seconds = Number(trimmed);
|
|
43
|
+
if (Number.isFinite(seconds))
|
|
44
|
+
return Math.max(0, seconds * 1000);
|
|
45
|
+
}
|
|
46
|
+
const dateMs = Date.parse(trimmed);
|
|
47
|
+
if (!Number.isNaN(dateMs)) {
|
|
48
|
+
return Math.max(0, dateMs - nowMs);
|
|
49
|
+
}
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Exponential backoff `base * 2^attempt` with 0–25% jitter to spread
|
|
54
|
+
* concurrent clients and avoid thundering-herd reconnects. Capped at
|
|
55
|
+
* {@link MAX_RETRY_DELAY_MS}. `rand` is injectable for deterministic tests.
|
|
56
|
+
*/
|
|
57
|
+
export function computeBackoffDelay(attempt, baseDelayMs, rand = Math.random) {
|
|
58
|
+
const exponential = baseDelayMs * Math.pow(2, attempt);
|
|
59
|
+
const jitter = exponential * 0.25 * rand();
|
|
60
|
+
return Math.min(exponential + jitter, MAX_RETRY_DELAY_MS);
|
|
61
|
+
}
|
|
62
|
+
function defaultSleep(ms) {
|
|
63
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
64
|
+
}
|
|
65
|
+
function resolveApiVersion(envName, fallback, explicit) {
|
|
66
|
+
// Explicit MetaClientOptions value, if any, takes precedence over the env
|
|
67
|
+
// var; both go through the same regex check + warn-fallback so a malformed
|
|
68
|
+
// option (e.g., `{ metaApiVersion: "v25-0" }`) can't silently build a
|
|
69
|
+
// broken URL. Empty string on either path falls through to the default.
|
|
70
|
+
const source = explicit !== undefined ? `MetaClientOptions.${envName}` : envName;
|
|
71
|
+
const raw = explicit ?? process.env[envName];
|
|
72
|
+
if (!raw)
|
|
73
|
+
return fallback;
|
|
74
|
+
if (!API_VERSION_PATTERN.test(raw)) {
|
|
75
|
+
console.error(`[meta-mcp] Warning: ${source}="${raw}" is not in vX.Y format — falling back to ${fallback}.`);
|
|
76
|
+
return fallback;
|
|
77
|
+
}
|
|
78
|
+
return raw;
|
|
79
|
+
}
|
|
80
|
+
// Pre-request throttle thresholds — Meta throttles at 100% usage on any of
|
|
81
|
+
// callCount / totalCpuTime / totalTime per
|
|
82
|
+
// https://developers.facebook.com/docs/graph-api/overview/rate-limiting/,
|
|
83
|
+
// so we back off well before the cliff.
|
|
84
|
+
export const RATE_LIMIT_SLOWDOWN_THRESHOLD = 80;
|
|
85
|
+
export const RATE_LIMIT_BACKOFF_THRESHOLD = 90;
|
|
86
|
+
export const RATE_LIMIT_SLOWDOWN_MS = 1000;
|
|
87
|
+
export const RATE_LIMIT_BACKOFF_MS = 5000;
|
|
88
|
+
// Meta's rate-limit window is rolling 1h — discard the snapshot after that so
|
|
89
|
+
// a long-idle client doesn't pay a spurious backoff on its first post-idle call.
|
|
90
|
+
export const RATE_LIMIT_SNAPSHOT_TTL_MS = 60 * 60 * 1000;
|
|
8
91
|
function parseMetaErrorBody(text) {
|
|
9
92
|
if (!text)
|
|
10
93
|
return undefined;
|
|
@@ -27,8 +110,34 @@ function parseMetaErrorBody(text) {
|
|
|
27
110
|
}
|
|
28
111
|
export class MetaClient {
|
|
29
112
|
config;
|
|
30
|
-
|
|
113
|
+
igBase;
|
|
114
|
+
fbBase;
|
|
115
|
+
threadsBase;
|
|
116
|
+
lastRateLimit;
|
|
117
|
+
lastRateLimitAt;
|
|
118
|
+
maxRetries;
|
|
119
|
+
retryBaseDelayMs;
|
|
120
|
+
sleep;
|
|
121
|
+
now;
|
|
122
|
+
constructor(config, options) {
|
|
31
123
|
this.config = config;
|
|
124
|
+
const metaVersion = resolveApiVersion("META_API_VERSION", DEFAULT_META_API_VERSION, options?.metaApiVersion);
|
|
125
|
+
const threadsVersion = resolveApiVersion("THREADS_API_VERSION", DEFAULT_THREADS_API_VERSION, options?.threadsApiVersion);
|
|
126
|
+
this.igBase = `https://graph.instagram.com/${metaVersion}`;
|
|
127
|
+
this.fbBase = `https://graph.facebook.com/${metaVersion}`;
|
|
128
|
+
this.threadsBase = `https://graph.threads.net/${threadsVersion}`;
|
|
129
|
+
// `Math.max(0, Infinity)` is `Infinity` (infinite loop) and `0 <= NaN` is
|
|
130
|
+
// `false` (loop body never runs); reject non-finite values and fall back.
|
|
131
|
+
const rawMaxRetries = options?.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
132
|
+
this.maxRetries = Number.isFinite(rawMaxRetries)
|
|
133
|
+
? Math.max(0, rawMaxRetries)
|
|
134
|
+
: DEFAULT_MAX_RETRIES;
|
|
135
|
+
const rawBaseDelay = options?.retryBaseDelayMs ?? DEFAULT_RETRY_BASE_DELAY_MS;
|
|
136
|
+
this.retryBaseDelayMs = Number.isFinite(rawBaseDelay)
|
|
137
|
+
? Math.max(0, rawBaseDelay)
|
|
138
|
+
: DEFAULT_RETRY_BASE_DELAY_MS;
|
|
139
|
+
this.sleep = options?.sleep ?? defaultSleep;
|
|
140
|
+
this.now = options?.now ?? Date.now;
|
|
32
141
|
}
|
|
33
142
|
parseRateLimit(headers) {
|
|
34
143
|
const usage = headers.get("x-app-usage");
|
|
@@ -36,111 +145,206 @@ export class MetaClient {
|
|
|
36
145
|
return undefined;
|
|
37
146
|
try {
|
|
38
147
|
const raw = JSON.parse(usage);
|
|
148
|
+
// `Number(undefined)` is NaN, `Number("92")` is 92 — coerce defensively
|
|
149
|
+
// so a future Meta API tweak (numbers shipped as strings) still produces
|
|
150
|
+
// a usable RateLimit instead of silently leaving fields `undefined`.
|
|
151
|
+
const num = (v) => {
|
|
152
|
+
if (v === undefined || v === null)
|
|
153
|
+
return undefined;
|
|
154
|
+
const n = Number(v);
|
|
155
|
+
return Number.isFinite(n) ? n : undefined;
|
|
156
|
+
};
|
|
39
157
|
return {
|
|
40
|
-
callCount: raw.call_count,
|
|
41
|
-
totalCpuTime: raw.total_cpu_time,
|
|
42
|
-
totalTime: raw.total_time,
|
|
158
|
+
callCount: num(raw.call_count),
|
|
159
|
+
totalCpuTime: num(raw.total_cpu_time),
|
|
160
|
+
totalTime: num(raw.total_time),
|
|
43
161
|
};
|
|
44
162
|
}
|
|
45
163
|
catch {
|
|
46
164
|
return undefined;
|
|
47
165
|
}
|
|
48
166
|
}
|
|
167
|
+
// Take `max(callCount, totalCpuTime, totalTime)` because Meta throttles on
|
|
168
|
+
// whichever quota hits 100% first. Concurrent calls at high usage both
|
|
169
|
+
// sleep their full delay and then fire together — acceptable for MCP's
|
|
170
|
+
// typically sequential call pattern, still safer than no throttling.
|
|
171
|
+
async maybeThrottle() {
|
|
172
|
+
const rl = this.lastRateLimit;
|
|
173
|
+
if (!rl)
|
|
174
|
+
return;
|
|
175
|
+
if (this.lastRateLimitAt !== undefined && Date.now() - this.lastRateLimitAt > RATE_LIMIT_SNAPSHOT_TTL_MS) {
|
|
176
|
+
this.lastRateLimit = undefined;
|
|
177
|
+
this.lastRateLimitAt = undefined;
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const max = Math.max(rl.callCount ?? 0, rl.totalCpuTime ?? 0, rl.totalTime ?? 0);
|
|
181
|
+
let delay;
|
|
182
|
+
if (max >= RATE_LIMIT_BACKOFF_THRESHOLD) {
|
|
183
|
+
delay = RATE_LIMIT_BACKOFF_MS;
|
|
184
|
+
}
|
|
185
|
+
else if (max >= RATE_LIMIT_SLOWDOWN_THRESHOLD) {
|
|
186
|
+
delay = RATE_LIMIT_SLOWDOWN_MS;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
console.error(`[meta-mcp] x-app-usage at ${max}% (callCount=${rl.callCount ?? "?"}, ` +
|
|
192
|
+
`totalTime=${rl.totalTime ?? "?"}, totalCpuTime=${rl.totalCpuTime ?? "?"}); ` +
|
|
193
|
+
`delaying next request by ${delay}ms to stay under Meta's per-app quota.`);
|
|
194
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
195
|
+
}
|
|
196
|
+
// Used for both form bodies (POST/PUT) and query strings (GET/DELETE) — every
|
|
197
|
+
// entry ends up URL-encoded in `qs`. Skipping `""` must precede the typeof
|
|
198
|
+
// check so the type narrowing below stays correct after the filter.
|
|
199
|
+
appendFormParams(qs, params) {
|
|
200
|
+
for (const [k, v] of Object.entries(params)) {
|
|
201
|
+
if (v === undefined || v === null || v === "")
|
|
202
|
+
continue;
|
|
203
|
+
if (typeof v !== "string" && typeof v !== "number" && typeof v !== "boolean") {
|
|
204
|
+
const kind = Array.isArray(v) ? "array" : typeof v;
|
|
205
|
+
throw new Error(`MetaClient: form parameter "${k}" has unsupported type "${kind}". ` +
|
|
206
|
+
`Form-encoded params must be string | number | boolean — serialize arrays/objects ` +
|
|
207
|
+
`explicitly with JSON.stringify(...) or .join(",") before assigning.`);
|
|
208
|
+
}
|
|
209
|
+
qs.set(k, String(v));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
49
212
|
async request(baseUrl, token, method, path, params, options) {
|
|
50
213
|
let url = `${baseUrl}${path}`;
|
|
51
|
-
const init = { method, signal: AbortSignal.timeout(30_000) };
|
|
52
214
|
const isWrite = method !== "GET" && method !== "DELETE";
|
|
53
|
-
const useJson = isWrite && options?.
|
|
215
|
+
const useJson = isWrite && options?.jsonBody !== undefined;
|
|
216
|
+
// `params` always lands in the URL query string (form body for POST/PUT,
|
|
217
|
+
// query string for GET/DELETE/JSON-mode). Combining `params` with
|
|
218
|
+
// `jsonBody` is rejected so that callers don't accidentally route data
|
|
219
|
+
// intended for the body into the query string when the JSON-mode wrapper
|
|
220
|
+
// overrides the body.
|
|
221
|
+
if (useJson && params !== undefined) {
|
|
222
|
+
throw new Error("MetaClient: `params` cannot be combined with `options.jsonBody`. Pass either form-encoded `params` or a JSON `jsonBody`, not both.");
|
|
223
|
+
}
|
|
54
224
|
const qs = new URLSearchParams();
|
|
55
225
|
qs.set("access_token", token);
|
|
226
|
+
if (params)
|
|
227
|
+
this.appendFormParams(qs, params);
|
|
228
|
+
// Body/headers are stable strings reusable across retry attempts; only
|
|
229
|
+
// `signal` must be fresh per attempt — sharing an exhausted
|
|
230
|
+
// `AbortSignal.timeout` would silently abort every subsequent retry.
|
|
231
|
+
const baseInit = { method };
|
|
56
232
|
if (useJson) {
|
|
57
233
|
url += (url.includes("?") ? "&" : "?") + qs.toString();
|
|
58
|
-
|
|
59
|
-
|
|
234
|
+
baseInit.headers = { "Content-Type": "application/json" };
|
|
235
|
+
baseInit.body = JSON.stringify(options.jsonBody);
|
|
60
236
|
}
|
|
61
237
|
else if (isWrite) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (v !== undefined && v !== null && v !== "") {
|
|
65
|
-
qs.set(k, String(v));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
init.headers = { "Content-Type": "application/x-www-form-urlencoded" };
|
|
70
|
-
init.body = qs.toString();
|
|
238
|
+
baseInit.headers = { "Content-Type": "application/x-www-form-urlencoded" };
|
|
239
|
+
baseInit.body = qs.toString();
|
|
71
240
|
}
|
|
72
241
|
else {
|
|
73
|
-
if (params) {
|
|
74
|
-
for (const [k, v] of Object.entries(params)) {
|
|
75
|
-
if (v !== undefined && v !== null && v !== "") {
|
|
76
|
-
qs.set(k, String(v));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
242
|
url += (url.includes("?") ? "&" : "?") + qs.toString();
|
|
81
243
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
244
|
+
// Retry loop (#61): total request count is `maxRetries + 1`. `attempt` is
|
|
245
|
+
// 0-based — `attempt = 0` is the initial request, `attempt = N` is the Nth
|
|
246
|
+
// retry. `computeBackoffDelay(attempt, …)` therefore produces the correct
|
|
247
|
+
// 1s / 2s / 4s schedule on attempts 0 / 1 / 2 before retries 1 / 2 / 3.
|
|
248
|
+
// The trailing `throw` after the loop is for TS control-flow narrowing.
|
|
249
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
250
|
+
// Pre-request throttle from #60 — runs before every attempt so a retry
|
|
251
|
+
// after a 429 still consults the most recent x-app-usage snapshot.
|
|
252
|
+
await this.maybeThrottle();
|
|
253
|
+
// Arm the 30s abort timer *after* the throttle sleep so a backoff at
|
|
254
|
+
// high x-app-usage doesn't eat into the actual network window (#60 review).
|
|
255
|
+
const init = { ...baseInit, signal: AbortSignal.timeout(30_000) };
|
|
256
|
+
let res;
|
|
257
|
+
try {
|
|
258
|
+
res = await fetch(url, init);
|
|
259
|
+
}
|
|
260
|
+
catch (err) {
|
|
261
|
+
if (attempt < this.maxRetries) {
|
|
262
|
+
await this.sleep(computeBackoffDelay(attempt, this.retryBaseDelayMs));
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
throw err;
|
|
266
|
+
}
|
|
267
|
+
// Parse rate-limit on every response (a 429 still carries `x-app-usage`);
|
|
268
|
+
// header-less responses (OAuth token endpoints) leave state intact.
|
|
269
|
+
const rateLimit = this.parseRateLimit(res.headers);
|
|
270
|
+
if (rateLimit) {
|
|
271
|
+
this.lastRateLimit = rateLimit;
|
|
272
|
+
this.lastRateLimitAt = Date.now();
|
|
273
|
+
}
|
|
274
|
+
if (!res.ok &&
|
|
275
|
+
RETRYABLE_HTTP_STATUSES.has(res.status) &&
|
|
276
|
+
attempt < this.maxRetries) {
|
|
277
|
+
const retryAfterMs = parseRetryAfter(res.headers.get("retry-after"), this.now());
|
|
278
|
+
const delay = retryAfterMs !== undefined
|
|
279
|
+
? Math.min(retryAfterMs, MAX_RETRY_DELAY_MS)
|
|
280
|
+
: computeBackoffDelay(attempt, this.retryBaseDelayMs);
|
|
281
|
+
// Release the connection — `cancel()` rejects on already-consumed bodies.
|
|
282
|
+
res.body?.cancel().catch(() => { });
|
|
283
|
+
await this.sleep(delay);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (!res.ok) {
|
|
287
|
+
const text = await res.text().catch(() => "");
|
|
288
|
+
const parsed = parseMetaErrorBody(text);
|
|
289
|
+
const detail = parsed?.message ?? text;
|
|
110
290
|
throw new MetaApiError({
|
|
111
|
-
message: `Meta API
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
291
|
+
message: `Meta API ${method} ${path} (${res.status}): ${detail}`,
|
|
292
|
+
httpStatus: res.status,
|
|
293
|
+
apiCode: parsed?.code,
|
|
294
|
+
apiSubcode: parsed?.subcode,
|
|
295
|
+
apiType: parsed?.type,
|
|
296
|
+
fbtraceId: parsed?.fbtraceId,
|
|
116
297
|
endpoint: path,
|
|
117
298
|
method,
|
|
118
|
-
body:
|
|
299
|
+
body: text,
|
|
119
300
|
});
|
|
120
301
|
}
|
|
121
|
-
|
|
302
|
+
const contentType = res.headers.get("content-type") || "";
|
|
303
|
+
if (contentType.includes("application/json")) {
|
|
304
|
+
const data = (await res.json());
|
|
305
|
+
if (data.error) {
|
|
306
|
+
const err = data.error;
|
|
307
|
+
const apiCode = typeof err.code === "number" ? err.code : undefined;
|
|
308
|
+
const apiSubcode = typeof err.error_subcode === "number" ? err.error_subcode : undefined;
|
|
309
|
+
const apiType = typeof err.type === "string" ? err.type : undefined;
|
|
310
|
+
const apiMessage = typeof err.message === "string" ? err.message : String(err.message ?? "");
|
|
311
|
+
const fbtraceId = typeof err.fbtrace_id === "string" ? err.fbtrace_id : undefined;
|
|
312
|
+
throw new MetaApiError({
|
|
313
|
+
message: `Meta API error: ${apiMessage} (code ${apiCode ?? "?"})`,
|
|
314
|
+
apiCode,
|
|
315
|
+
apiSubcode,
|
|
316
|
+
apiType,
|
|
317
|
+
fbtraceId,
|
|
318
|
+
endpoint: path,
|
|
319
|
+
method,
|
|
320
|
+
body: JSON.stringify(err),
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
return { data, rateLimit };
|
|
324
|
+
}
|
|
325
|
+
const text = await res.text();
|
|
326
|
+
return { data: { raw: text, success: true }, rateLimit };
|
|
122
327
|
}
|
|
123
|
-
|
|
124
|
-
return { data: { raw: text, success: true }, rateLimit };
|
|
328
|
+
throw new Error("MetaClient: retry loop exited without resolution (unreachable)");
|
|
125
329
|
}
|
|
126
330
|
async ig(method, path, params, options) {
|
|
127
331
|
if (!this.config.instagramAccessToken) {
|
|
128
332
|
throw new Error("INSTAGRAM_ACCESS_TOKEN is not configured.");
|
|
129
333
|
}
|
|
130
|
-
return this.request(
|
|
334
|
+
return this.request(this.igBase, this.config.instagramAccessToken, method, path, params, options);
|
|
131
335
|
}
|
|
132
336
|
async threads(method, path, params, options) {
|
|
133
337
|
if (!this.config.threadsAccessToken) {
|
|
134
338
|
throw new Error("THREADS_ACCESS_TOKEN is not configured.");
|
|
135
339
|
}
|
|
136
|
-
return this.request(
|
|
340
|
+
return this.request(this.threadsBase, this.config.threadsAccessToken, method, path, params, options);
|
|
137
341
|
}
|
|
138
342
|
async meta(method, path, params, options) {
|
|
139
343
|
if (!this.config.appId || !this.config.appSecret) {
|
|
140
344
|
throw new Error("META_APP_ID and META_APP_SECRET are required.");
|
|
141
345
|
}
|
|
142
346
|
const appToken = `${this.config.appId}|${this.config.appSecret}`;
|
|
143
|
-
return this.request(
|
|
347
|
+
return this.request(this.fbBase, appToken, method, path, params, options);
|
|
144
348
|
}
|
|
145
349
|
/** Exchange short-lived Instagram token for long-lived token (60 days) */
|
|
146
350
|
async igExchangeToken(shortToken) {
|
|
@@ -180,7 +384,7 @@ export class MetaClient {
|
|
|
180
384
|
throw new Error("META_APP_ID and META_APP_SECRET are required for token debug.");
|
|
181
385
|
}
|
|
182
386
|
const appToken = `${this.config.appId}|${this.config.appSecret}`;
|
|
183
|
-
return this.request(
|
|
387
|
+
return this.request(this.fbBase, appToken, "GET", "/debug_token", {
|
|
184
388
|
input_token: inputToken,
|
|
185
389
|
});
|
|
186
390
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-client.js","sourceRoot":"","sources":["../../src/services/meta-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"meta-client.js","sourceRoot":"","sources":["../../src/services/meta-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export declare const READ_ONLY_TOOL: ToolAnnotations;
|
|
3
|
+
export declare const DESTRUCTIVE_TOOL: ToolAnnotations;
|
|
4
|
+
export declare const WRITE_TOOL: ToolAnnotations;
|
|
5
|
+
export declare const WRITE_IDEMPOTENT_TOOL: ToolAnnotations;
|
|
6
|
+
//# sourceMappingURL=annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/tools/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAO1E,eAAO,MAAM,cAAc,EAAE,eAG5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,eAK9B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAKxB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAKnC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Every tool in this project calls the Meta Graph API (Instagram + Threads),
|
|
2
|
+
// so openWorldHint is always true. The four presets below cover every Meta
|
|
3
|
+
// endpoint shape we expose; see https://modelcontextprotocol.io for the
|
|
4
|
+
// canonical hint semantics.
|
|
5
|
+
export const READ_ONLY_TOOL = {
|
|
6
|
+
readOnlyHint: true,
|
|
7
|
+
openWorldHint: true,
|
|
8
|
+
};
|
|
9
|
+
export const DESTRUCTIVE_TOOL = {
|
|
10
|
+
readOnlyHint: false,
|
|
11
|
+
destructiveHint: true,
|
|
12
|
+
idempotentHint: true,
|
|
13
|
+
openWorldHint: true,
|
|
14
|
+
};
|
|
15
|
+
export const WRITE_TOOL = {
|
|
16
|
+
readOnlyHint: false,
|
|
17
|
+
destructiveHint: false,
|
|
18
|
+
idempotentHint: false,
|
|
19
|
+
openWorldHint: true,
|
|
20
|
+
};
|
|
21
|
+
export const WRITE_IDEMPOTENT_TOOL = {
|
|
22
|
+
readOnlyHint: false,
|
|
23
|
+
destructiveHint: false,
|
|
24
|
+
idempotentHint: true,
|
|
25
|
+
openWorldHint: true,
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=annotations.js.map
|