@posthog/mcp 0.11.0 → 0.11.1
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 +39 -0
- package/dist/extensions/compatibility.d.ts.map +1 -1
- package/dist/extensions/compatibility.js +14 -18
- package/dist/extensions/compatibility.mjs +10 -14
- package/dist/extensions/detect.d.ts +45 -0
- package/dist/extensions/detect.d.ts.map +1 -0
- package/dist/extensions/detect.js +90 -0
- package/dist/extensions/detect.mjs +35 -0
- package/dist/extensions/instrumentation.d.ts.map +1 -1
- package/dist/extensions/instrumentation.js +3 -2
- package/dist/extensions/instrumentation.mjs +3 -2
- package/dist/extensions/request-headers.d.ts +36 -0
- package/dist/extensions/request-headers.d.ts.map +1 -0
- package/dist/extensions/request-headers.js +62 -0
- package/dist/extensions/request-headers.mjs +28 -0
- package/dist/extensions/session.d.ts.map +1 -1
- package/dist/extensions/session.js +2 -1
- package/dist/extensions/session.mjs +2 -1
- package/dist/extensions/transport-identity.d.ts +8 -3
- package/dist/extensions/transport-identity.d.ts.map +1 -1
- package/dist/extensions/transport-identity.js +2 -1
- package/dist/extensions/transport-identity.mjs +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -7
- package/dist/index.mjs +2 -1
- package/dist/types.d.ts +19 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.mjs +1 -1
- package/package.json +2 -2
- package/src/extensions/compatibility.ts +25 -24
- package/src/extensions/detect.ts +78 -0
- package/src/extensions/instrumentation.ts +3 -2
- package/src/extensions/request-headers.ts +76 -0
- package/src/extensions/session.ts +2 -1
- package/src/extensions/transport-identity.ts +10 -4
- package/src/index.ts +4 -0
- package/src/types.ts +18 -0
- package/src/version.ts +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { readHeaderValue } from "./headers.mjs";
|
|
2
|
+
import { getRequestHeaders } from "./request-headers.mjs";
|
|
2
3
|
const CLIENT_USER_AGENT_HEADER = 'user-agent';
|
|
3
4
|
const VENDOR_CLIENT_HEADER = 'x-anthropic-client';
|
|
4
5
|
function readTransportIdentity(extra) {
|
|
5
|
-
const headers = extra
|
|
6
|
+
const headers = getRequestHeaders(extra);
|
|
6
7
|
if (!headers) return;
|
|
7
8
|
const result = {};
|
|
8
9
|
const clientUserAgent = readHeaderValue(headers, CLIENT_USER_AGENT_HEADER);
|
package/dist/index.d.ts
CHANGED
|
@@ -50,11 +50,12 @@ declare function instrumentMutator<TServer>(posthog: PostHog, options?: MCPAnaly
|
|
|
50
50
|
export { deriveSessionIdFromMCPSession, newSessionId };
|
|
51
51
|
export { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId, type SessionTokenPayload, } from './extensions/session-token';
|
|
52
52
|
export { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, } from './extensions/constants';
|
|
53
|
+
export { getRequestHeaders } from './extensions/request-headers';
|
|
53
54
|
export { PostHogMCP, type PostHogMCPOptions } from './extensions/posthog-mcp';
|
|
54
55
|
export { getMoreToolsResult } from './extensions/tools';
|
|
55
56
|
export { setLogger } from './extensions/logger';
|
|
56
57
|
export { PostHog, type PostHogOptions } from 'posthog-node';
|
|
57
|
-
export type { BeforeSendFn, CaptureEventData, InitializeCaptureData, McpAnalytics, McpCaptureCommon, MCPAnalyticsContextOptions, MCPAnalyticsIntentSource, MCPAnalyticsOptions, MissingCapabilityCaptureData, PreparedToolCall, PrepareToolListOptions, ToolCallCaptureData, ToolsListCaptureData, UserIdentity, } from './types';
|
|
58
|
+
export type { BeforeSendFn, CaptureEventData, InitializeCaptureData, McpAnalytics, McpCaptureCommon, MCPAnalyticsContextOptions, MCPAnalyticsIntentSource, MCPAnalyticsOptions, MissingCapabilityCaptureData, PreparedToolCall, PrepareToolListOptions, RequestHeaderBag, ToolCallCaptureData, ToolsListCaptureData, UserIdentity, } from './types';
|
|
58
59
|
export type IdentifyFunction = MCPAnalyticsOptions['identify'];
|
|
59
60
|
export { instrument, instrumentMutator };
|
|
60
61
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAQ3C,OAAO,EAAE,6BAA6B,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGlG,OAAO,KAAK,EAGV,YAAY,EAEZ,mBAAmB,EAGpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAiCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAKjH;AAuFD,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,CAAA;AAItD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAQ3C,OAAO,EAAE,6BAA6B,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGlG,OAAO,KAAK,EAGV,YAAY,EAEZ,mBAAmB,EAGpB,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,iBAAS,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAiCtG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAKjH;AAuFD,OAAO,EAAE,6BAA6B,EAAE,YAAY,EAAE,CAAA;AAItD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAA;AAChB,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -24,20 +24,21 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
setLogger: ()=>logger_js_namespaceObject.setLogger,
|
|
28
27
|
PostHog: ()=>external_posthog_node_namespaceObject.PostHog,
|
|
29
|
-
PostHogMCP: ()=>posthog_mcp_js_namespaceObject.PostHogMCP,
|
|
30
28
|
POSTHOG_MCP_ANALYTICS_SOURCE: ()=>constants_js_namespaceObject.POSTHOG_MCP_ANALYTICS_SOURCE,
|
|
31
29
|
deriveSessionIdFromMCPSession: ()=>session_js_namespaceObject.deriveSessionIdFromMCPSession,
|
|
32
|
-
instrument: ()=>instrument,
|
|
33
30
|
decodeSessionId: ()=>session_token_js_namespaceObject.decodeSessionId,
|
|
34
|
-
newSessionId: ()=>session_js_namespaceObject.newSessionId,
|
|
35
31
|
MCP_SESSION_HEADER: ()=>session_token_js_namespaceObject.MCP_SESSION_HEADER,
|
|
36
|
-
instrumentMutator: ()=>instrumentMutator,
|
|
37
32
|
PostHogMCPAnalyticsEvent: ()=>constants_js_namespaceObject.PostHogMCPAnalyticsEvent,
|
|
33
|
+
getRequestHeaders: ()=>request_headers_js_namespaceObject.getRequestHeaders,
|
|
34
|
+
PostHogMCPAnalyticsProperty: ()=>constants_js_namespaceObject.PostHogMCPAnalyticsProperty,
|
|
35
|
+
PostHogMCP: ()=>posthog_mcp_js_namespaceObject.PostHogMCP,
|
|
36
|
+
newSessionId: ()=>session_js_namespaceObject.newSessionId,
|
|
37
|
+
instrument: ()=>instrument,
|
|
38
|
+
instrumentMutator: ()=>instrumentMutator,
|
|
39
|
+
setLogger: ()=>logger_js_namespaceObject.setLogger,
|
|
38
40
|
encodeSessionId: ()=>session_token_js_namespaceObject.encodeSessionId,
|
|
39
|
-
getMoreToolsResult: ()=>tools_js_namespaceObject.getMoreToolsResult
|
|
40
|
-
PostHogMCPAnalyticsProperty: ()=>constants_js_namespaceObject.PostHogMCPAnalyticsProperty
|
|
41
|
+
getMoreToolsResult: ()=>tools_js_namespaceObject.getMoreToolsResult
|
|
41
42
|
});
|
|
42
43
|
const compatibility_js_namespaceObject = require("./extensions/compatibility.js");
|
|
43
44
|
const sink_js_namespaceObject = require("./extensions/sink.js");
|
|
@@ -51,6 +52,7 @@ const instrument_lowlevel_js_namespaceObject = require("./extensions/instrument-
|
|
|
51
52
|
const instrument_highlevel_js_namespaceObject = require("./extensions/instrument-highlevel.js");
|
|
52
53
|
const session_token_js_namespaceObject = require("./extensions/session-token.js");
|
|
53
54
|
const constants_js_namespaceObject = require("./extensions/constants.js");
|
|
55
|
+
const request_headers_js_namespaceObject = require("./extensions/request-headers.js");
|
|
54
56
|
const posthog_mcp_js_namespaceObject = require("./extensions/posthog-mcp.js");
|
|
55
57
|
const tools_js_namespaceObject = require("./extensions/tools.js");
|
|
56
58
|
const external_posthog_node_namespaceObject = require("posthog-node");
|
|
@@ -150,6 +152,7 @@ exports.decodeSessionId = __webpack_exports__.decodeSessionId;
|
|
|
150
152
|
exports.deriveSessionIdFromMCPSession = __webpack_exports__.deriveSessionIdFromMCPSession;
|
|
151
153
|
exports.encodeSessionId = __webpack_exports__.encodeSessionId;
|
|
152
154
|
exports.getMoreToolsResult = __webpack_exports__.getMoreToolsResult;
|
|
155
|
+
exports.getRequestHeaders = __webpack_exports__.getRequestHeaders;
|
|
153
156
|
exports.instrument = __webpack_exports__.instrument;
|
|
154
157
|
exports.instrumentMutator = __webpack_exports__.instrumentMutator;
|
|
155
158
|
exports.newSessionId = __webpack_exports__.newSessionId;
|
|
@@ -165,6 +168,7 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
|
165
168
|
"deriveSessionIdFromMCPSession",
|
|
166
169
|
"encodeSessionId",
|
|
167
170
|
"getMoreToolsResult",
|
|
171
|
+
"getRequestHeaders",
|
|
168
172
|
"instrument",
|
|
169
173
|
"instrumentMutator",
|
|
170
174
|
"newSessionId",
|
package/dist/index.mjs
CHANGED
|
@@ -10,6 +10,7 @@ import { instrumentLowLevelServer } from "./extensions/instrument-lowlevel.mjs";
|
|
|
10
10
|
import { instrumentHighLevelServer } from "./extensions/instrument-highlevel.mjs";
|
|
11
11
|
import { MCP_SESSION_HEADER, decodeSessionId, encodeSessionId } from "./extensions/session-token.mjs";
|
|
12
12
|
import { POSTHOG_MCP_ANALYTICS_SOURCE, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty } from "./extensions/constants.mjs";
|
|
13
|
+
import { getRequestHeaders } from "./extensions/request-headers.mjs";
|
|
13
14
|
import { PostHogMCP } from "./extensions/posthog-mcp.mjs";
|
|
14
15
|
import { getMoreToolsResult } from "./extensions/tools.mjs";
|
|
15
16
|
import { PostHog } from "posthog-node";
|
|
@@ -99,4 +100,4 @@ async function captureCustomEvent(lowLevelServer, eventData) {
|
|
|
99
100
|
await captureEvent(lowLevelServer, event, trackingData.logger);
|
|
100
101
|
trackingData.logger(`Captured event "${eventData.event}" for session ${trackingData.sessionId}`);
|
|
101
102
|
}
|
|
102
|
-
export { MCP_SESSION_HEADER, POSTHOG_MCP_ANALYTICS_SOURCE, PostHog, PostHogMCP, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, decodeSessionId, deriveSessionIdFromMCPSession, encodeSessionId, getMoreToolsResult, instrument, instrumentMutator, newSessionId, setLogger };
|
|
103
|
+
export { MCP_SESSION_HEADER, POSTHOG_MCP_ANALYTICS_SOURCE, PostHog, PostHogMCP, PostHogMCPAnalyticsEvent, PostHogMCPAnalyticsProperty, decodeSessionId, deriveSessionIdFromMCPSession, encodeSessionId, getMoreToolsResult, getRequestHeaders, instrument, instrumentMutator, newSessionId, setLogger };
|
package/dist/types.d.ts
CHANGED
|
@@ -199,13 +199,32 @@ export interface CompatibleRequestInfoLike {
|
|
|
199
199
|
headers?: Record<string, string | string[] | undefined>;
|
|
200
200
|
[key: string]: unknown;
|
|
201
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* The HTTP request an MCP SDK v2 server attaches to the handler context, as a
|
|
204
|
+
* WHATWG `Request` — so `headers` answers to `.get()`, not to indexing.
|
|
205
|
+
*/
|
|
206
|
+
export interface CompatibleHttpRequestLike {
|
|
207
|
+
req?: {
|
|
208
|
+
headers?: unknown;
|
|
209
|
+
[key: string]: unknown;
|
|
210
|
+
};
|
|
211
|
+
[key: string]: unknown;
|
|
212
|
+
}
|
|
202
213
|
export interface CompatibleRequestHandlerExtra {
|
|
203
214
|
headers?: Record<string, string | string[]>;
|
|
204
215
|
sessionId?: string;
|
|
205
216
|
/** Present on HTTP transports only — headers ride every request, unlike `clientInfo`. */
|
|
206
217
|
requestInfo?: CompatibleRequestInfoLike;
|
|
218
|
+
/** Where MCP SDK v2 puts the same thing. Read both through `getRequestHeaders`. */
|
|
219
|
+
http?: CompatibleHttpRequestLike;
|
|
207
220
|
[key: string]: unknown;
|
|
208
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* HTTP headers normalised to lowercase keys, as `getRequestHeaders` returns
|
|
224
|
+
* them — a plain bag, so a host's existing `headers['authorization']` keeps
|
|
225
|
+
* working when only the source of the headers changes.
|
|
226
|
+
*/
|
|
227
|
+
export type RequestHeaderBag = Record<string, string | string[]>;
|
|
209
228
|
export interface ServerClientInfoLike {
|
|
210
229
|
name?: string;
|
|
211
230
|
version?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "0.11.
|
|
1
|
+
export declare const version = "0.11.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -26,7 +26,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
version: ()=>version
|
|
28
28
|
});
|
|
29
|
-
const version = '0.11.
|
|
29
|
+
const version = '0.11.1';
|
|
30
30
|
exports.version = __webpack_exports__.version;
|
|
31
31
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
32
32
|
"version"
|
package/dist/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const version = '0.11.
|
|
1
|
+
const version = '0.11.1';
|
|
2
2
|
export { version };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@posthog/mcp",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"bugs": {
|
|
5
5
|
"url": "https://github.com/PostHog/posthog-js/issues"
|
|
6
6
|
},
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"module": "dist/index.mjs",
|
|
29
29
|
"types": "dist/index.d.ts",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@posthog/core": "^1.
|
|
31
|
+
"@posthog/core": "^1.47.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@babel/preset-env": "^7.27.1",
|
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
// Licensed under the MIT License: https://github.com/agentcathq/agentcat-typescript-sdk/blob/main/LICENSE
|
|
5
5
|
|
|
6
6
|
import type { HighLevelMCPServerLike, MCPServerLike } from '../types'
|
|
7
|
+
import {
|
|
8
|
+
canRegisterTools,
|
|
9
|
+
canSetRequestHandler,
|
|
10
|
+
hasClientVersionAccessor,
|
|
11
|
+
hasNestedLowLevelServer,
|
|
12
|
+
hasRequestHandlerMap,
|
|
13
|
+
hasServerInfo,
|
|
14
|
+
hasToolRegistry,
|
|
15
|
+
isBareServerShape,
|
|
16
|
+
} from './detect'
|
|
7
17
|
import type { LoggerFn } from './logger'
|
|
8
18
|
|
|
9
19
|
type ServerRecord = Record<string, unknown>
|
|
@@ -28,13 +38,11 @@ export function logCompatibilityWarning(logger: LoggerFn): void {
|
|
|
28
38
|
}
|
|
29
39
|
|
|
30
40
|
export function isHighLevelServer(server: unknown): server is ServerRecord & { server: ServerRecord } {
|
|
31
|
-
return (
|
|
32
|
-
!!server && typeof server === 'object' && 'server' in server && !!server.server && typeof server.server === 'object'
|
|
33
|
-
)
|
|
41
|
+
return hasNestedLowLevelServer(server)
|
|
34
42
|
}
|
|
35
43
|
|
|
36
44
|
export function isLowLevelServer(server: unknown): server is ServerRecord {
|
|
37
|
-
return
|
|
45
|
+
return isBareServerShape(server)
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
export function isCompatibleServerType(server: unknown, logger: LoggerFn): MCPServerLike | HighLevelMCPServerLike {
|
|
@@ -46,16 +54,20 @@ export function isCompatibleServerType(server: unknown, logger: LoggerFn): MCPSe
|
|
|
46
54
|
}
|
|
47
55
|
|
|
48
56
|
if (isHighLevelServer(server)) {
|
|
49
|
-
if (!server
|
|
57
|
+
if (!hasToolRegistry(server)) {
|
|
50
58
|
logCompatibilityWarning(logger)
|
|
51
59
|
throw new Error(
|
|
52
60
|
'PostHog MCP analytics SDK compatibility error: High-level server must have _registeredTools object. This requires MCP SDK v1.11 or higher.'
|
|
53
61
|
)
|
|
54
62
|
}
|
|
55
|
-
|
|
63
|
+
// Either registration method is enough. v1 has both; v2 dropped the
|
|
64
|
+
// deprecated tool() and kept registerTool(). Demanding tool() rejected every
|
|
65
|
+
// v2 high-level server, and instrument() swallows the rejection — so the
|
|
66
|
+
// integration looked healthy and captured nothing.
|
|
67
|
+
if (!canRegisterTools(server)) {
|
|
56
68
|
logCompatibilityWarning(logger)
|
|
57
69
|
throw new Error(
|
|
58
|
-
'PostHog MCP analytics SDK compatibility error: High-level server must have tool() method. This requires MCP SDK v1.11 or higher.'
|
|
70
|
+
'PostHog MCP analytics SDK compatibility error: High-level server must have a registerTool() or tool() method. This requires MCP SDK v1.11 or higher.'
|
|
59
71
|
)
|
|
60
72
|
}
|
|
61
73
|
|
|
@@ -76,41 +88,30 @@ function validateLowLevelServer(server: unknown, logger: LoggerFn): void {
|
|
|
76
88
|
)
|
|
77
89
|
}
|
|
78
90
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (typeof serverRecord.setRequestHandler !== 'function') {
|
|
91
|
+
if (!canSetRequestHandler(server)) {
|
|
82
92
|
logCompatibilityWarning(logger)
|
|
83
93
|
throw new Error(
|
|
84
94
|
'PostHog MCP analytics SDK compatibility error: Server must have a setRequestHandler method. This requires MCP SDK v1.11 or higher.'
|
|
85
95
|
)
|
|
86
96
|
}
|
|
87
97
|
|
|
88
|
-
|
|
98
|
+
// A real Map with a working get(), which is what the handler patch reads and
|
|
99
|
+
// writes. Both majors keep it.
|
|
100
|
+
if (!hasRequestHandlerMap(server)) {
|
|
89
101
|
logCompatibilityWarning(logger)
|
|
90
102
|
throw new Error(
|
|
91
103
|
'PostHog MCP analytics SDK compatibility error: Server._requestHandlers is not accessible. This requires MCP SDK v1.11 or higher.'
|
|
92
104
|
)
|
|
93
105
|
}
|
|
94
106
|
|
|
95
|
-
if (
|
|
96
|
-
logCompatibilityWarning(logger)
|
|
97
|
-
throw new Error(
|
|
98
|
-
'PostHog MCP analytics SDK compatibility error: Server._requestHandlers must be a Map with a get method. This requires MCP SDK v1.11 or higher.'
|
|
99
|
-
)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (typeof serverRecord.getClientVersion !== 'function') {
|
|
107
|
+
if (!hasClientVersionAccessor(server)) {
|
|
103
108
|
logCompatibilityWarning(logger)
|
|
104
109
|
throw new Error(
|
|
105
110
|
'PostHog MCP analytics SDK compatibility error: Server.getClientVersion must be a function. This requires MCP SDK v1.11 or higher.'
|
|
106
111
|
)
|
|
107
112
|
}
|
|
108
113
|
|
|
109
|
-
if (
|
|
110
|
-
!serverRecord._serverInfo ||
|
|
111
|
-
typeof serverRecord._serverInfo !== 'object' ||
|
|
112
|
-
!('name' in serverRecord._serverInfo)
|
|
113
|
-
) {
|
|
114
|
+
if (!hasServerInfo(server)) {
|
|
114
115
|
logCompatibilityWarning(logger)
|
|
115
116
|
throw new Error(
|
|
116
117
|
'PostHog MCP analytics SDK compatibility error: Server._serverInfo is not accessible or missing name. This requires MCP SDK v1.11 or higher.'
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural feature probes.
|
|
3
|
+
*
|
|
4
|
+
* Every question about the shape of a server object is answered here, by
|
|
5
|
+
* duck-typing the object in front of us — never by reading a package version or
|
|
6
|
+
* a protocol constant. Two reasons this is a rule and not a preference:
|
|
7
|
+
*
|
|
8
|
+
* - The two SDK majors expose the same capability under different names (v1's
|
|
9
|
+
* `.tool()` vs v2's `.registerTool()`), so "which SDK is installed" answers a
|
|
10
|
+
* different question than "can this object register a tool".
|
|
11
|
+
* - A single v2 server serves both protocol eras, request by request, so no
|
|
12
|
+
* module-level constant describes it. v2's exported `LATEST_PROTOCOL_VERSION`
|
|
13
|
+
* is `2025-11-25`.
|
|
14
|
+
*
|
|
15
|
+
* Nothing here imports `@modelcontextprotocol/*`; that boundary is pinned by
|
|
16
|
+
* `sdk-import-boundary.test.ts`.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
type UnknownRecord = Record<string, unknown>
|
|
20
|
+
|
|
21
|
+
function asRecord(value: unknown): UnknownRecord | undefined {
|
|
22
|
+
return value && typeof value === 'object' ? (value as UnknownRecord) : undefined
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function hasMethod(value: unknown, key: string): boolean {
|
|
26
|
+
return typeof asRecord(value)?.[key] === 'function'
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** A high-level `McpServer` wrapper: it holds the low-level server on `.server`. */
|
|
30
|
+
export function hasNestedLowLevelServer(server: unknown): server is UnknownRecord & { server: UnknownRecord } {
|
|
31
|
+
const record = asRecord(server)
|
|
32
|
+
return !!record && 'server' in record && !!asRecord(record.server)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** No `.server` property, so the object is itself the low-level `Server`. */
|
|
36
|
+
export function isBareServerShape(server: unknown): boolean {
|
|
37
|
+
const record = asRecord(server)
|
|
38
|
+
return !!record && !('server' in record)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** The high-level registry we read tool metadata from and wrap callbacks in. */
|
|
42
|
+
export function hasToolRegistry(server: unknown): boolean {
|
|
43
|
+
return !!asRecord(asRecord(server)?._registeredTools)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The object can register a tool.
|
|
48
|
+
*
|
|
49
|
+
* v1 offers both `tool()` and `registerTool()`; v2 dropped the deprecated
|
|
50
|
+
* `tool()` and keeps only `registerTool()`. Requiring `tool()` specifically is
|
|
51
|
+
* what made `instrument()` reject every v2 high-level server — and, because
|
|
52
|
+
* `instrument()` swallows compatibility errors, reject it silently.
|
|
53
|
+
*/
|
|
54
|
+
export function canRegisterTools(server: unknown): boolean {
|
|
55
|
+
return hasMethod(server, 'registerTool') || hasMethod(server, 'tool')
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Handler registration, which we patch to wrap late registrations. */
|
|
59
|
+
export function canSetRequestHandler(server: unknown): boolean {
|
|
60
|
+
return hasMethod(server, 'setRequestHandler')
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** The live handler map we read and write directly. A real `Map` on both majors. */
|
|
64
|
+
export function hasRequestHandlerMap(server: unknown): boolean {
|
|
65
|
+
const handlers = asRecord(server)?._requestHandlers
|
|
66
|
+
return handlers instanceof Map && typeof handlers.get === 'function'
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** `getClientVersion()` — still present on v2, and a link in B1's identity chain. */
|
|
70
|
+
export function hasClientVersionAccessor(server: unknown): boolean {
|
|
71
|
+
return hasMethod(server, 'getClientVersion')
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** `_serverInfo`, which names the server on every event. */
|
|
75
|
+
export function hasServerInfo(server: unknown): boolean {
|
|
76
|
+
const info = asRecord(asRecord(server)?._serverInfo)
|
|
77
|
+
return !!info && 'name' in info
|
|
78
|
+
}
|
|
@@ -34,6 +34,7 @@ import { getServerTrackingData, handleIdentify, setServerTrackingData, withIdent
|
|
|
34
34
|
import type { LoggerFn } from './logger'
|
|
35
35
|
import { buildCapturedMcpParameters } from './mcp-payloads'
|
|
36
36
|
import { readRequestHandlerMethod } from './mcp-sdk-compat'
|
|
37
|
+
import { getRequestHeaders } from './request-headers'
|
|
37
38
|
import { getSessionId, getSessionInfo, newSessionId } from './session'
|
|
38
39
|
import { encodeSessionId, readMcpSessionHeader, writeSessionIdToTransport } from './session-token'
|
|
39
40
|
import { getReportMissingToolDescriptor, resolveMissingCapabilityToolName } from './tools'
|
|
@@ -688,8 +689,8 @@ function mintStatelessSessionOnInitialize(
|
|
|
688
689
|
extra: CompatibleRequestHandlerExtra | undefined
|
|
689
690
|
): string | undefined {
|
|
690
691
|
try {
|
|
691
|
-
const headers = extra
|
|
692
|
-
if (!headers
|
|
692
|
+
const headers = getRequestHeaders(extra)
|
|
693
|
+
if (!headers) {
|
|
693
694
|
return undefined // not an HTTP transport (stdio/in-memory) — nothing to mint into
|
|
694
695
|
}
|
|
695
696
|
if (readMcpSessionHeader(headers)) {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { RequestHeaderBag } from '../types'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Reads the HTTP request headers off the `extra` (v1) / `ctx` (v2) object the
|
|
5
|
+
* MCP SDK hands a request handler, and returns them as a plain object with
|
|
6
|
+
* lowercase keys. Returns `undefined` when the request did not come over HTTP —
|
|
7
|
+
* stdio and in-memory transports carry no headers at all.
|
|
8
|
+
*
|
|
9
|
+
* The two SDK majors put them in different places and in different shapes: v1
|
|
10
|
+
* attaches a plain object at `extra.requestInfo.headers`, while v2 attaches the
|
|
11
|
+
* WHATWG `Request` at `ctx.http.req`, whose `headers` is a `Headers` instance
|
|
12
|
+
* that only answers to `.get()`. A v1-shaped read returns `undefined` on v2,
|
|
13
|
+
* which is why this exists.
|
|
14
|
+
*
|
|
15
|
+
* Normalisation is **by shape, not by source**: a framework is free to hand us a
|
|
16
|
+
* plain object where the SDK hands `Headers`, so both fields are checked for
|
|
17
|
+
* both shapes. `Headers` is duck-typed on `.entries` rather than `instanceof` —
|
|
18
|
+
* workerd and other edge runtimes are a different realm and would fail the
|
|
19
|
+
* identity check on a perfectly good object.
|
|
20
|
+
*
|
|
21
|
+
* Exported from the package for host callbacks. `identify`, `intentFallback`,
|
|
22
|
+
* `eventProperties` and `beforeSend` receive the SDK's `extra` unchanged — we
|
|
23
|
+
* deliberately do not synthesise a v1 shape on v2, because a fabricated
|
|
24
|
+
* `requestInfo` is a convincing partial lie about a shape the SDK removed on
|
|
25
|
+
* purpose. So a host that reads headers reads them through this instead:
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { getRequestHeaders } from '@posthog/mcp'
|
|
29
|
+
*
|
|
30
|
+
* identify: async (request, extra) => {
|
|
31
|
+
* const auth = getRequestHeaders(extra)?.['authorization']
|
|
32
|
+
* // ...
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function getRequestHeaders(extra: unknown): RequestHeaderBag | undefined {
|
|
37
|
+
if (!extra || typeof extra !== 'object') {
|
|
38
|
+
return undefined
|
|
39
|
+
}
|
|
40
|
+
const record = extra as Record<string, unknown>
|
|
41
|
+
const http = record.http as { req?: { headers?: unknown } } | undefined
|
|
42
|
+
const requestInfo = record.requestInfo as { headers?: unknown } | undefined
|
|
43
|
+
const source = http?.req?.headers ?? requestInfo?.headers
|
|
44
|
+
if (!source || typeof source !== 'object') {
|
|
45
|
+
return undefined
|
|
46
|
+
}
|
|
47
|
+
return toHeaderBag(source)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Flattens either shape into a lowercase-keyed bag. Never throws: a header read
|
|
52
|
+
* failing must not take a tool call down with it.
|
|
53
|
+
*/
|
|
54
|
+
function toHeaderBag(source: object): RequestHeaderBag | undefined {
|
|
55
|
+
try {
|
|
56
|
+
const entries = isHeadersLike(source) ? [...source.entries()] : Object.entries(source)
|
|
57
|
+
const bag: RequestHeaderBag = {}
|
|
58
|
+
for (const [key, value] of entries) {
|
|
59
|
+
if (typeof key !== 'string' || value === undefined || value === null) {
|
|
60
|
+
continue
|
|
61
|
+
}
|
|
62
|
+
if (typeof value === 'string' || Array.isArray(value)) {
|
|
63
|
+
bag[key.toLowerCase()] = value as string | string[]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return bag
|
|
67
|
+
} catch {
|
|
68
|
+
return undefined
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Duck-typed, never `instanceof` — an edge runtime's `Headers` is another realm's class. */
|
|
73
|
+
function isHeadersLike(source: object): source is { entries(): Iterable<[string, string]> } {
|
|
74
|
+
const candidate = source as { entries?: unknown; get?: unknown }
|
|
75
|
+
return typeof candidate.entries === 'function' && typeof candidate.get === 'function'
|
|
76
|
+
}
|
|
@@ -14,6 +14,7 @@ import type {
|
|
|
14
14
|
import { INACTIVITY_TIMEOUT_IN_MINUTES } from './constants'
|
|
15
15
|
import { deterministicPrefixedId, newPrefixedId } from './ids'
|
|
16
16
|
import { getServerTrackingData, setServerTrackingData } from './internal'
|
|
17
|
+
import { getRequestHeaders } from './request-headers'
|
|
17
18
|
import { decodeSessionId, readMcpSessionHeader } from './session-token'
|
|
18
19
|
import type { SessionTokenPayload } from './session-token'
|
|
19
20
|
|
|
@@ -110,7 +111,7 @@ function applyTokenClientIdentity(
|
|
|
110
111
|
data: MCPAnalyticsData,
|
|
111
112
|
extra?: CompatibleRequestHandlerExtra
|
|
112
113
|
): SessionTokenPayload | undefined {
|
|
113
|
-
const token = decodeSessionId(readMcpSessionHeader(extra
|
|
114
|
+
const token = decodeSessionId(readMcpSessionHeader(getRequestHeaders(extra)))
|
|
114
115
|
if (!token) {
|
|
115
116
|
return undefined
|
|
116
117
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { CompatibleRequestHandlerExtra, McpEvent } from '../types'
|
|
2
2
|
import { readHeaderValue } from './headers'
|
|
3
|
+
import { getRequestHeaders } from './request-headers'
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Transport-level client identity: the two request headers that say *which
|
|
@@ -43,12 +44,17 @@ export interface TransportIdentity {
|
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
/**
|
|
46
|
-
* Reads the transport identity headers off
|
|
47
|
-
*
|
|
48
|
-
*
|
|
47
|
+
* Reads the transport identity headers off the request. Returns `undefined`
|
|
48
|
+
* when the request carries neither — including every stdio and in-memory
|
|
49
|
+
* request, which has no HTTP headers at all. Never throws.
|
|
50
|
+
*
|
|
51
|
+
* Sourced through `getRequestHeaders` rather than `extra.requestInfo.headers`
|
|
52
|
+
* directly: MCP SDK v2 puts the request at `extra.http.req` as a WHATWG
|
|
53
|
+
* `Request`, so a v1-shaped read finds nothing and this whole feature would be
|
|
54
|
+
* silently inert on exactly the servers being adopted now.
|
|
49
55
|
*/
|
|
50
56
|
export function readTransportIdentity(extra: CompatibleRequestHandlerExtra | undefined): TransportIdentity | undefined {
|
|
51
|
-
const headers = extra
|
|
57
|
+
const headers = getRequestHeaders(extra)
|
|
52
58
|
if (!headers) {
|
|
53
59
|
return undefined
|
|
54
60
|
}
|
package/src/index.ts
CHANGED
|
@@ -210,6 +210,9 @@ export {
|
|
|
210
210
|
PostHogMCPAnalyticsEvent,
|
|
211
211
|
PostHogMCPAnalyticsProperty,
|
|
212
212
|
} from './extensions/constants'
|
|
213
|
+
// Host callbacks receive the SDK's `extra`/`ctx` unchanged, and the two SDK
|
|
214
|
+
// majors carry HTTP headers in different places and shapes. This reads either.
|
|
215
|
+
export { getRequestHeaders } from './extensions/request-headers'
|
|
213
216
|
export { PostHogMCP, type PostHogMCPOptions } from './extensions/posthog-mcp'
|
|
214
217
|
export { getMoreToolsResult } from './extensions/tools'
|
|
215
218
|
export { setLogger } from './extensions/logger'
|
|
@@ -229,6 +232,7 @@ export type {
|
|
|
229
232
|
MissingCapabilityCaptureData,
|
|
230
233
|
PreparedToolCall,
|
|
231
234
|
PrepareToolListOptions,
|
|
235
|
+
RequestHeaderBag,
|
|
232
236
|
ToolCallCaptureData,
|
|
233
237
|
ToolsListCaptureData,
|
|
234
238
|
UserIdentity,
|
package/src/types.ts
CHANGED
|
@@ -225,14 +225,32 @@ export interface CompatibleRequestInfoLike {
|
|
|
225
225
|
[key: string]: unknown
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
/**
|
|
229
|
+
* The HTTP request an MCP SDK v2 server attaches to the handler context, as a
|
|
230
|
+
* WHATWG `Request` — so `headers` answers to `.get()`, not to indexing.
|
|
231
|
+
*/
|
|
232
|
+
export interface CompatibleHttpRequestLike {
|
|
233
|
+
req?: { headers?: unknown; [key: string]: unknown }
|
|
234
|
+
[key: string]: unknown
|
|
235
|
+
}
|
|
236
|
+
|
|
228
237
|
export interface CompatibleRequestHandlerExtra {
|
|
229
238
|
headers?: Record<string, string | string[]>
|
|
230
239
|
sessionId?: string
|
|
231
240
|
/** Present on HTTP transports only — headers ride every request, unlike `clientInfo`. */
|
|
232
241
|
requestInfo?: CompatibleRequestInfoLike
|
|
242
|
+
/** Where MCP SDK v2 puts the same thing. Read both through `getRequestHeaders`. */
|
|
243
|
+
http?: CompatibleHttpRequestLike
|
|
233
244
|
[key: string]: unknown
|
|
234
245
|
}
|
|
235
246
|
|
|
247
|
+
/**
|
|
248
|
+
* HTTP headers normalised to lowercase keys, as `getRequestHeaders` returns
|
|
249
|
+
* them — a plain bag, so a host's existing `headers['authorization']` keeps
|
|
250
|
+
* working when only the source of the headers changes.
|
|
251
|
+
*/
|
|
252
|
+
export type RequestHeaderBag = Record<string, string | string[]>
|
|
253
|
+
|
|
236
254
|
export interface ServerClientInfoLike {
|
|
237
255
|
name?: string
|
|
238
256
|
version?: string
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '0.11.
|
|
1
|
+
export const version = '0.11.1'
|