supporthero-mcp-server 1.1.1 → 1.1.2
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/dist/index.js +1 -1
- package/dist/services/client.d.ts +5 -2
- package/dist/services/client.d.ts.map +1 -1
- package/dist/services/client.js +37 -4
- package/dist/services/client.js.map +1 -1
- package/dist/session.d.ts +14 -10
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +46 -85
- package/dist/session.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -28,7 +28,7 @@ if (writeEnabled) {
|
|
|
28
28
|
// ── Server Setup ────────────────────────────────────────────
|
|
29
29
|
const server = new McpServer({
|
|
30
30
|
name: "supporthero-mcp-server",
|
|
31
|
-
version: "1.1.
|
|
31
|
+
version: "1.1.2",
|
|
32
32
|
});
|
|
33
33
|
const client = new SupportHeroClient(SUPPORTHERO_DOMAIN, SUPPORTHERO_API_KEY, session);
|
|
34
34
|
registerTools(server, client);
|
|
@@ -32,8 +32,11 @@ export declare class SupportHeroClient {
|
|
|
32
32
|
private requireSession;
|
|
33
33
|
/**
|
|
34
34
|
* GET an article via the authenticated session endpoint.
|
|
35
|
-
* Uses /api/article/{id} (no v1 prefix) which
|
|
36
|
-
*
|
|
35
|
+
* Uses /api/article/{id} (no v1 prefix) which returns the full article
|
|
36
|
+
* wrapped in an envelope: { article: { ..., container: { id, ... } }, links: [...] }
|
|
37
|
+
*
|
|
38
|
+
* We unwrap the article and transform it into the flat SHArticleUpdatePayload
|
|
39
|
+
* shape that the PUT endpoint expects (container.id -> containerId).
|
|
37
40
|
*/
|
|
38
41
|
getArticleForUpdate(articleId: string): Promise<SHArticleUpdatePayload>;
|
|
39
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAEV,SAAS,EAET,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;IAOrE,+EAA+E;IAC/E,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;YACW,OAAO;IA0BrB,sEAAsE;IAChE,cAAc,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAStE,mCAAmC;IAC7B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAM1D,6CAA6C;IACvC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAO5D,kCAAkC;IAC5B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAMvD,uEAAuE;IACjE,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAS5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAEV,SAAS,EAET,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAwB;gBAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;IAOrE,+EAA+E;IAC/E,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;YACW,OAAO;IA0BrB,sEAAsE;IAChE,cAAc,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAStE,mCAAmC;IAC7B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAM1D,6CAA6C;IACvC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAO5D,kCAAkC;IAC5B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAMvD,uEAAuE;IACjE,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC;IAS5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;;;;OAOG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiE7E;;;;;OAKG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,sBAAsB,CAAC;CAkDnC"}
|
package/dist/services/client.js
CHANGED
|
@@ -88,8 +88,11 @@ export class SupportHeroClient {
|
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* GET an article via the authenticated session endpoint.
|
|
91
|
-
* Uses /api/article/{id} (no v1 prefix) which
|
|
92
|
-
*
|
|
91
|
+
* Uses /api/article/{id} (no v1 prefix) which returns the full article
|
|
92
|
+
* wrapped in an envelope: { article: { ..., container: { id, ... } }, links: [...] }
|
|
93
|
+
*
|
|
94
|
+
* We unwrap the article and transform it into the flat SHArticleUpdatePayload
|
|
95
|
+
* shape that the PUT endpoint expects (container.id -> containerId).
|
|
93
96
|
*/
|
|
94
97
|
async getArticleForUpdate(articleId) {
|
|
95
98
|
const session = this.requireSession();
|
|
@@ -108,8 +111,38 @@ export class SupportHeroClient {
|
|
|
108
111
|
if (!body.trim()) {
|
|
109
112
|
throw new Error(`Failed to fetch article ${articleId} for update: server returned empty response body`);
|
|
110
113
|
}
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
// The API returns { article: { ... }, links: [...], ... }
|
|
115
|
+
// We need to unwrap the article object from the envelope.
|
|
116
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
|
+
const envelope = JSON.parse(body);
|
|
118
|
+
// Unwrap: the article is nested under .article
|
|
119
|
+
const raw = envelope.article ?? envelope;
|
|
120
|
+
console.error(`[client] getArticleForUpdate: Has .article wrapper=${!!envelope.article}`);
|
|
121
|
+
// Transform container object -> flat containerId string
|
|
122
|
+
// The GET response has: { container: { id: "28476", name: "..." } }
|
|
123
|
+
// The PUT payload expects: { containerId: "28476" }
|
|
124
|
+
const containerId = raw.container?.id ?? raw.containerId ?? "";
|
|
125
|
+
console.error(`[client] getArticleForUpdate: title="${raw.title}", containerId="${containerId}", container=${JSON.stringify(raw.container?.id)}`);
|
|
126
|
+
const article = {
|
|
127
|
+
id: raw.id ?? articleId,
|
|
128
|
+
title: raw.title ?? "",
|
|
129
|
+
description: raw.description ?? "",
|
|
130
|
+
containerId,
|
|
131
|
+
keywords: raw.keywords ?? "",
|
|
132
|
+
metaCanonical: raw.metaCanonical ?? "",
|
|
133
|
+
metaDescription: raw.metaDescription ?? "",
|
|
134
|
+
metaKeywords: raw.metaKeywords ?? "",
|
|
135
|
+
metaTitle: raw.metaTitle ?? "",
|
|
136
|
+
published: raw.published ?? false,
|
|
137
|
+
saveAsDraft: raw.saveAsDraft ?? false,
|
|
138
|
+
type: raw.type ?? "article",
|
|
139
|
+
videoUrl: raw.videoUrl ?? "",
|
|
140
|
+
expireDate: raw.expireDate ?? null,
|
|
141
|
+
publishDate: raw.publishDate ?? null,
|
|
142
|
+
threeOhOne: raw.threeOhOne ?? "",
|
|
143
|
+
viewerGroups: raw.viewerGroups ?? [],
|
|
144
|
+
articlesToTranslate: raw.articlesToTranslate ?? [],
|
|
145
|
+
};
|
|
113
146
|
return article;
|
|
114
147
|
}
|
|
115
148
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
* Session management for SupportHero write operations.
|
|
3
3
|
*
|
|
4
4
|
* SupportHero's write API requires session-based authentication via cookies
|
|
5
|
-
* (JSESSIONID and X-Session-Token), obtained by
|
|
6
|
-
*
|
|
5
|
+
* (JSESSIONID and X-Session-Token), obtained by calling the preLogin API
|
|
6
|
+
* on signin.supporthero.io.
|
|
7
|
+
*
|
|
8
|
+
* The login flow (discovered by inspecting the AngularJS SPA):
|
|
9
|
+
* 1. GET /api/session/preLogin?domain={subdomain}&email={email}&password={base64}&redirect=true
|
|
10
|
+
* 2. On success, the server returns a 302 redirect to {subdomain}.supporthero.io with session cookies
|
|
11
|
+
* 3. We manually follow redirects, collecting Set-Cookie headers at each hop
|
|
7
12
|
*
|
|
8
13
|
* This module handles:
|
|
9
|
-
* -
|
|
14
|
+
* - Authenticating via the preLogin API
|
|
10
15
|
* - Extracting and caching session cookies across redirect hops
|
|
11
16
|
* - Making authenticated requests with automatic session renewal
|
|
12
17
|
*/
|
|
@@ -20,7 +25,6 @@ export declare class SessionManager {
|
|
|
20
25
|
constructor(email: string, password: string, domain: string);
|
|
21
26
|
/**
|
|
22
27
|
* Parse Set-Cookie headers and merge into our cookie jar.
|
|
23
|
-
* Handles both single and multiple Set-Cookie values.
|
|
24
28
|
*/
|
|
25
29
|
private collectCookies;
|
|
26
30
|
/**
|
|
@@ -28,13 +32,13 @@ export declare class SessionManager {
|
|
|
28
32
|
*/
|
|
29
33
|
private getCookieHeader;
|
|
30
34
|
/**
|
|
31
|
-
* Log in to SupportHero via the
|
|
35
|
+
* Log in to SupportHero via the preLogin API.
|
|
36
|
+
*
|
|
37
|
+
* The login is a GET request (not a form POST) with the password base64-encoded:
|
|
38
|
+
* GET https://signin.supporthero.io/api/session/preLogin
|
|
39
|
+
* ?domain={subdomain}&email={email}&password={base64}&redirect=true
|
|
32
40
|
*
|
|
33
|
-
*
|
|
34
|
-
* 1. GET signin.supporthero.io to discover the form action and hidden fields
|
|
35
|
-
* 2. POST credentials to the form action URL
|
|
36
|
-
* 3. Manually follow redirects, collecting cookies at each hop
|
|
37
|
-
* 4. Verify we got the required session cookies
|
|
41
|
+
* On success, the server responds with a redirect chain that sets session cookies.
|
|
38
42
|
*/
|
|
39
43
|
login(): Promise<void>;
|
|
40
44
|
/**
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,eAAe,CAAS;gBAEpB,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAU3D;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;;;;;OAQG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2E5B;;;OAGG;IACG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAoDpF"}
|
package/dist/session.js
CHANGED
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
* Session management for SupportHero write operations.
|
|
3
3
|
*
|
|
4
4
|
* SupportHero's write API requires session-based authentication via cookies
|
|
5
|
-
* (JSESSIONID and X-Session-Token), obtained by
|
|
6
|
-
*
|
|
5
|
+
* (JSESSIONID and X-Session-Token), obtained by calling the preLogin API
|
|
6
|
+
* on signin.supporthero.io.
|
|
7
|
+
*
|
|
8
|
+
* The login flow (discovered by inspecting the AngularJS SPA):
|
|
9
|
+
* 1. GET /api/session/preLogin?domain={subdomain}&email={email}&password={base64}&redirect=true
|
|
10
|
+
* 2. On success, the server returns a 302 redirect to {subdomain}.supporthero.io with session cookies
|
|
11
|
+
* 3. We manually follow redirects, collecting Set-Cookie headers at each hop
|
|
7
12
|
*
|
|
8
13
|
* This module handles:
|
|
9
|
-
* -
|
|
14
|
+
* - Authenticating via the preLogin API
|
|
10
15
|
* - Extracting and caching session cookies across redirect hops
|
|
11
16
|
* - Making authenticated requests with automatic session renewal
|
|
12
17
|
*/
|
|
@@ -28,10 +33,8 @@ export class SessionManager {
|
|
|
28
33
|
}
|
|
29
34
|
/**
|
|
30
35
|
* Parse Set-Cookie headers and merge into our cookie jar.
|
|
31
|
-
* Handles both single and multiple Set-Cookie values.
|
|
32
36
|
*/
|
|
33
37
|
collectCookies(response, label) {
|
|
34
|
-
// response.headers.getSetCookie() returns an array of Set-Cookie strings
|
|
35
38
|
const setCookieHeaders = response.headers.getSetCookie?.() ?? [];
|
|
36
39
|
if (setCookieHeaders.length === 0) {
|
|
37
40
|
console.error(`[session] ${label}: No Set-Cookie headers received`);
|
|
@@ -57,91 +60,43 @@ export class SessionManager {
|
|
|
57
60
|
.join("; ");
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
60
|
-
* Log in to SupportHero via the
|
|
63
|
+
* Log in to SupportHero via the preLogin API.
|
|
64
|
+
*
|
|
65
|
+
* The login is a GET request (not a form POST) with the password base64-encoded:
|
|
66
|
+
* GET https://signin.supporthero.io/api/session/preLogin
|
|
67
|
+
* ?domain={subdomain}&email={email}&password={base64}&redirect=true
|
|
61
68
|
*
|
|
62
|
-
*
|
|
63
|
-
* 1. GET signin.supporthero.io to discover the form action and hidden fields
|
|
64
|
-
* 2. POST credentials to the form action URL
|
|
65
|
-
* 3. Manually follow redirects, collecting cookies at each hop
|
|
66
|
-
* 4. Verify we got the required session cookies
|
|
69
|
+
* On success, the server responds with a redirect chain that sets session cookies.
|
|
67
70
|
*/
|
|
68
71
|
async login() {
|
|
69
72
|
this.cookies.clear();
|
|
70
73
|
this.isAuthenticated = false;
|
|
71
74
|
console.error("[session] Starting login flow...");
|
|
72
|
-
//
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
// Build the preLogin URL with base64-encoded password
|
|
76
|
+
const encodedPassword = Buffer.from(this.password).toString("base64");
|
|
77
|
+
const loginUrl = new URL("https://signin.supporthero.io/api/session/preLogin");
|
|
78
|
+
loginUrl.searchParams.set("domain", this.subdomain);
|
|
79
|
+
loginUrl.searchParams.set("email", this.email);
|
|
80
|
+
loginUrl.searchParams.set("password", encodedPassword);
|
|
81
|
+
loginUrl.searchParams.set("redirect", "true");
|
|
82
|
+
console.error(`[session] GET preLogin for domain="${this.subdomain}", email="${this.email}"`);
|
|
83
|
+
let response = await fetch(loginUrl.toString(), {
|
|
76
84
|
redirect: "manual",
|
|
77
85
|
});
|
|
78
|
-
console.error(`[session]
|
|
79
|
-
this.collectCookies(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// Extract form action URL (default to the login page itself if not found)
|
|
83
|
-
const actionMatch = loginPageHtml.match(/<form[^>]*action=["']([^"']*)["']/i);
|
|
84
|
-
const formAction = actionMatch ? actionMatch[1] : loginPageUrl;
|
|
85
|
-
console.error(`[session] Step 1: Form action="${formAction}" (matched=${!!actionMatch})`);
|
|
86
|
-
// Resolve relative action URLs against the login page
|
|
87
|
-
const postUrl = new URL(formAction, loginPageUrl).toString();
|
|
88
|
-
console.error(`[session] Step 1: Resolved POST URL="${postUrl}"`);
|
|
89
|
-
// Extract any hidden input fields (CSRF tokens, etc.)
|
|
90
|
-
const hiddenFields = {};
|
|
91
|
-
const hiddenInputRegex = /<input[^>]*type=["']hidden["'][^>]*>/gi;
|
|
92
|
-
let match;
|
|
93
|
-
while ((match = hiddenInputRegex.exec(loginPageHtml)) !== null) {
|
|
94
|
-
const input = match[0];
|
|
95
|
-
const nameMatch = input.match(/name=["']([^"']*)["']/);
|
|
96
|
-
const valueMatch = input.match(/value=["']([^"']*)["']/);
|
|
97
|
-
if (nameMatch) {
|
|
98
|
-
hiddenFields[nameMatch[1]] = valueMatch ? valueMatch[1] : "";
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
console.error(`[session] Step 1: Hidden fields found: ${JSON.stringify(Object.keys(hiddenFields))}`);
|
|
102
|
-
// Also look for all input fields to understand the form structure
|
|
103
|
-
const allInputRegex = /<input[^>]*>/gi;
|
|
104
|
-
const allInputs = [];
|
|
105
|
-
while ((match = allInputRegex.exec(loginPageHtml)) !== null) {
|
|
106
|
-
const nameMatch = match[0].match(/name=["']([^"']*)["']/);
|
|
107
|
-
const typeMatch = match[0].match(/type=["']([^"']*)["']/);
|
|
108
|
-
if (nameMatch) {
|
|
109
|
-
allInputs.push(`${nameMatch[1]} (type=${typeMatch ? typeMatch[1] : "text"})`);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
console.error(`[session] Step 1: All form inputs: ${JSON.stringify(allInputs)}`);
|
|
113
|
-
// Step 2: POST login credentials
|
|
114
|
-
const formData = new URLSearchParams({
|
|
115
|
-
...hiddenFields,
|
|
116
|
-
email: this.email,
|
|
117
|
-
password: this.password,
|
|
118
|
-
helpCenter: this.subdomain,
|
|
119
|
-
});
|
|
120
|
-
console.error(`[session] Step 2: POST to ${postUrl}`);
|
|
121
|
-
console.error(`[session] Step 2: Form fields being sent: ${JSON.stringify(Object.keys({ ...hiddenFields, email: "(set)", password: "(set)", helpCenter: this.subdomain }))}`);
|
|
122
|
-
console.error(`[session] Step 2: helpCenter value="${this.subdomain}"`);
|
|
123
|
-
let response = await fetch(postUrl, {
|
|
124
|
-
method: "POST",
|
|
125
|
-
headers: {
|
|
126
|
-
"Content-Type": "application/x-www-form-urlencoded",
|
|
127
|
-
"Cookie": this.getCookieHeader(),
|
|
128
|
-
},
|
|
129
|
-
body: formData.toString(),
|
|
130
|
-
redirect: "manual",
|
|
131
|
-
});
|
|
132
|
-
console.error(`[session] Step 2: POST response status=${response.status}`);
|
|
133
|
-
this.collectCookies(response, "Step 2 (POST login)");
|
|
134
|
-
// Step 3: Follow redirect chain manually to collect cookies from each domain
|
|
86
|
+
console.error(`[session] preLogin response status=${response.status}`);
|
|
87
|
+
this.collectCookies(response, "preLogin response");
|
|
88
|
+
// Follow redirect chain manually to collect cookies from each domain hop
|
|
89
|
+
// (signin.supporthero.io -> propel.supporthero.io)
|
|
135
90
|
const maxRedirects = 10;
|
|
136
91
|
let redirectCount = 0;
|
|
137
92
|
while (isRedirect(response.status) && redirectCount < maxRedirects) {
|
|
138
93
|
const location = response.headers.get("location");
|
|
139
94
|
if (!location) {
|
|
140
|
-
console.error(`[session]
|
|
95
|
+
console.error(`[session] Redirect ${redirectCount + 1}: No Location header, stopping`);
|
|
141
96
|
break;
|
|
142
97
|
}
|
|
143
|
-
const nextUrl = new URL(location,
|
|
144
|
-
console.error(`[session]
|
|
98
|
+
const nextUrl = new URL(location, loginUrl.toString()).toString();
|
|
99
|
+
console.error(`[session] Redirect ${redirectCount + 1}: -> ${nextUrl}`);
|
|
145
100
|
response = await fetch(nextUrl, {
|
|
146
101
|
method: "GET",
|
|
147
102
|
headers: {
|
|
@@ -149,14 +104,24 @@ export class SessionManager {
|
|
|
149
104
|
},
|
|
150
105
|
redirect: "manual",
|
|
151
106
|
});
|
|
152
|
-
console.error(`[session]
|
|
153
|
-
this.collectCookies(response, `
|
|
107
|
+
console.error(`[session] Redirect ${redirectCount + 1}: status=${response.status}`);
|
|
108
|
+
this.collectCookies(response, `Redirect ${redirectCount + 1}`);
|
|
154
109
|
redirectCount++;
|
|
155
110
|
}
|
|
156
|
-
//
|
|
111
|
+
// If no redirects happened (status 200), the login may have failed.
|
|
112
|
+
// Check the response body for error indicators.
|
|
113
|
+
if (redirectCount === 0 && response.status === 200) {
|
|
114
|
+
const body = await response.text();
|
|
115
|
+
console.error(`[session] No redirects after preLogin. Response body length=${body.length}`);
|
|
116
|
+
if (body.includes("credentials") || body.includes("error") || body.includes("invalid")) {
|
|
117
|
+
console.error(`[session] Response appears to contain an error message`);
|
|
118
|
+
}
|
|
119
|
+
// Even without redirects, check if we got useful cookies
|
|
120
|
+
}
|
|
121
|
+
// Log the final cookie state
|
|
157
122
|
const cookieNames = Array.from(this.cookies.keys());
|
|
158
|
-
console.error(`[session]
|
|
159
|
-
console.error(`[session]
|
|
123
|
+
console.error(`[session] All cookies collected: ${JSON.stringify(cookieNames)}`);
|
|
124
|
+
console.error(`[session] Has JSESSIONID=${this.cookies.has("JSESSIONID")}, Has X-Session-Token=${this.cookies.has("X-Session-Token")}`);
|
|
160
125
|
if (!this.cookies.has("JSESSIONID")) {
|
|
161
126
|
throw new Error("Login failed: JSESSIONID cookie not received. " +
|
|
162
127
|
"Check your SUPPORTHERO_EMAIL and SUPPORTHERO_PASSWORD credentials. " +
|
|
@@ -176,11 +141,9 @@ export class SessionManager {
|
|
|
176
141
|
}
|
|
177
142
|
const doFetch = async () => {
|
|
178
143
|
const headers = new Headers(options.headers);
|
|
179
|
-
|
|
180
|
-
headers.set("Cookie", cookieHeader);
|
|
144
|
+
headers.set("Cookie", this.getCookieHeader());
|
|
181
145
|
console.error(`[session] authenticatedFetch: ${options.method || "GET"} ${url}`);
|
|
182
146
|
console.error(`[session] authenticatedFetch: Sending cookies: ${Array.from(this.cookies.keys()).join(", ")}`);
|
|
183
|
-
// Don't follow redirects automatically so we can detect login redirects
|
|
184
147
|
return fetch(url, {
|
|
185
148
|
...options,
|
|
186
149
|
headers,
|
|
@@ -195,7 +158,6 @@ export class SessionManager {
|
|
|
195
158
|
await this.login();
|
|
196
159
|
response = await doFetch();
|
|
197
160
|
console.error(`[session] authenticatedFetch (retry): Response status=${response.status}`);
|
|
198
|
-
// If still failing after re-auth, let it through as-is
|
|
199
161
|
if (isSessionExpired(response)) {
|
|
200
162
|
throw new Error("SupportHero authentication failed after retry. " +
|
|
201
163
|
"Check your credentials and try again.");
|
|
@@ -230,7 +192,6 @@ function isSessionExpired(response) {
|
|
|
230
192
|
if (response.status === 401 || response.status === 403) {
|
|
231
193
|
return true;
|
|
232
194
|
}
|
|
233
|
-
// Check if redirected back to the login page
|
|
234
195
|
if (isRedirect(response.status)) {
|
|
235
196
|
const location = response.headers.get("location") ?? "";
|
|
236
197
|
if (location.includes("signin.supporthero.io")) {
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "supporthero-mcp-server",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "MCP server for SupportHero Help Center API. Enables Claude and other LLMs to search, browse, read, and update help center articles.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|