mcp-use 2.0.0-beta.35 → 2.0.0-beta.36
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/bin.js +1 -3
- package/dist/{chunk-PPQL2WHL.js → chunk-GX6PGIEO.js} +32 -142
- package/dist/chunk-JMDHTN6N.js +1 -0
- package/dist/chunk-OJF6B5EU.js +1 -0
- package/dist/chunk-PSKSL567.js +1 -0
- package/dist/chunk-WYBJYZJB.js +1 -0
- package/dist/chunk-Y26DNVWA.js +3 -0
- package/dist/chunk-ZMU5USAZ.js +1 -0
- package/dist/index.js +9 -3100
- package/dist/internal/resource-completion.js +1 -6
- package/dist/landing-handler-TG6LVQBI.js +1 -0
- package/dist/landing.js +1 -6
- package/dist/mcp-proxy-NGJ4JADQ.js +2 -0
- package/dist/next/index.js +1 -171
- package/dist/node-bridge.js +1 -150
- package/dist/oauth/auth0.js +1 -60
- package/dist/oauth/better-auth.js +1 -75
- package/dist/oauth/clerk.js +1 -69
- package/dist/oauth/index.js +1 -26
- package/dist/oauth/keycloak.js +1 -93
- package/dist/oauth/supabase.js +1 -100
- package/dist/oauth/workos.js +1 -76
- package/dist/openapi/index.js +1 -6
- package/dist/public-route-DAQJGS6K.js +1 -0
- package/package.json +7 -6
- package/dist/chunk-DFFP6QPR.js +0 -37
- package/dist/chunk-HDV7K2TE.js +0 -97
- package/dist/chunk-HNNQJLD5.js +0 -383
- package/dist/chunk-QCIREWRS.js +0 -64
- package/dist/chunk-QKJJ6DWK.js +0 -184
- package/dist/chunk-YF5X7FYF.js +0 -517
- package/dist/landing-handler-QEH2ATIR.js +0 -36
- package/dist/mcp-proxy-JK7IC5CR.js +0 -281
- package/dist/public-route-BAMZRI4R.js +0 -8
package/dist/oauth/keycloak.js
CHANGED
|
@@ -1,93 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
booleanValue,
|
|
3
|
-
createJwtVerifier,
|
|
4
|
-
invalidToken,
|
|
5
|
-
isRecord,
|
|
6
|
-
normalizedProviderUrl,
|
|
7
|
-
normalizedStrings,
|
|
8
|
-
oauthCustomProvider,
|
|
9
|
-
payloadFromAuthInfo,
|
|
10
|
-
providerEndpoint,
|
|
11
|
-
recordValue,
|
|
12
|
-
requiredString,
|
|
13
|
-
stringValue
|
|
14
|
-
} from "../chunk-YF5X7FYF.js";
|
|
15
|
-
|
|
16
|
-
// src/oauth/keycloak.ts
|
|
17
|
-
function oauthKeycloakProvider(options) {
|
|
18
|
-
if (typeof options.realm !== "string" || options.realm.trim().length === 0 || /[/?#]/.test(options.realm)) {
|
|
19
|
-
throw new TypeError("Keycloak realm is invalid");
|
|
20
|
-
}
|
|
21
|
-
const serverUrl = normalizedProviderUrl(
|
|
22
|
-
options.serverUrl,
|
|
23
|
-
"Keycloak serverUrl"
|
|
24
|
-
);
|
|
25
|
-
const issuer = providerEndpoint(
|
|
26
|
-
serverUrl,
|
|
27
|
-
`realms/${encodeURIComponent(options.realm)}`
|
|
28
|
-
).replace(/\/$/, "");
|
|
29
|
-
return oauthCustomProvider({
|
|
30
|
-
...options,
|
|
31
|
-
createTokenVerifier: (resource) => createJwtVerifier({
|
|
32
|
-
issuer,
|
|
33
|
-
jwksUrl: new URL(
|
|
34
|
-
providerEndpoint(issuer, "protocol/openid-connect/certs")
|
|
35
|
-
),
|
|
36
|
-
resource
|
|
37
|
-
}),
|
|
38
|
-
oauthMetadata: {
|
|
39
|
-
issuer,
|
|
40
|
-
authorization_endpoint: providerEndpoint(
|
|
41
|
-
issuer,
|
|
42
|
-
"protocol/openid-connect/auth"
|
|
43
|
-
),
|
|
44
|
-
token_endpoint: providerEndpoint(issuer, "protocol/openid-connect/token"),
|
|
45
|
-
registration_endpoint: providerEndpoint(
|
|
46
|
-
issuer,
|
|
47
|
-
"clients-registrations/openid-connect"
|
|
48
|
-
),
|
|
49
|
-
response_types_supported: ["code"],
|
|
50
|
-
grant_types_supported: ["authorization_code", "refresh_token"],
|
|
51
|
-
code_challenge_methods_supported: ["S256"]
|
|
52
|
-
},
|
|
53
|
-
mapAuthInfo: mapUser
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
function mapUser(authInfo) {
|
|
57
|
-
const payload = payloadFromAuthInfo(authInfo);
|
|
58
|
-
const id = requiredString(payload, "sub");
|
|
59
|
-
if (id === void 0) throw invalidToken("Missing Keycloak subject");
|
|
60
|
-
const realmAccess = recordValue(payload, "realm_access");
|
|
61
|
-
const resourceAccess = recordValue(payload, "resource_access");
|
|
62
|
-
return {
|
|
63
|
-
user: {
|
|
64
|
-
id,
|
|
65
|
-
...optional("email", stringValue(payload, "email")),
|
|
66
|
-
...optional("name", stringValue(payload, "name")),
|
|
67
|
-
...optional(
|
|
68
|
-
"preferredUsername",
|
|
69
|
-
stringValue(payload, "preferred_username")
|
|
70
|
-
),
|
|
71
|
-
...optional("givenName", stringValue(payload, "given_name")),
|
|
72
|
-
...optional("familyName", stringValue(payload, "family_name")),
|
|
73
|
-
...optional("emailVerified", booleanValue(payload, "email_verified")),
|
|
74
|
-
roles: realmAccess === void 0 ? [] : normalizedStrings(realmAccess["roles"]),
|
|
75
|
-
...realmAccess !== void 0 && { realmAccess },
|
|
76
|
-
...resourceAccess !== void 0 && { resourceAccess }
|
|
77
|
-
},
|
|
78
|
-
payload,
|
|
79
|
-
permissions: resourcePermissions(resourceAccess)
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
function optional(key, value) {
|
|
83
|
-
return value === void 0 ? {} : { [key]: value };
|
|
84
|
-
}
|
|
85
|
-
function resourcePermissions(resourceAccess) {
|
|
86
|
-
if (resourceAccess === void 0) return [];
|
|
87
|
-
return Object.entries(resourceAccess).flatMap(
|
|
88
|
-
([resource, value]) => isRecord(value) ? normalizedStrings(value["roles"]).map((role) => `${resource}:${role}`) : []
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
export {
|
|
92
|
-
oauthKeycloakProvider
|
|
93
|
-
};
|
|
1
|
+
import{booleanValue,createJwtVerifier,invalidToken,isRecord,normalizedProviderUrl,normalizedStrings,oauthCustomProvider,payloadFromAuthInfo,providerEndpoint,recordValue,requiredString,stringValue}from"../chunk-JMDHTN6N.js";function oauthKeycloakProvider(options){if(typeof options.realm!="string"||options.realm.trim().length===0||/[/?#]/.test(options.realm))throw new TypeError("Keycloak realm is invalid");let serverUrl=normalizedProviderUrl(options.serverUrl,"Keycloak serverUrl"),issuer=providerEndpoint(serverUrl,`realms/${encodeURIComponent(options.realm)}`).replace(/\/$/,"");return oauthCustomProvider({...options,createTokenVerifier:resource=>createJwtVerifier({issuer,jwksUrl:new URL(providerEndpoint(issuer,"protocol/openid-connect/certs")),resource}),oauthMetadata:{issuer,authorization_endpoint:providerEndpoint(issuer,"protocol/openid-connect/auth"),token_endpoint:providerEndpoint(issuer,"protocol/openid-connect/token"),registration_endpoint:providerEndpoint(issuer,"clients-registrations/openid-connect"),response_types_supported:["code"],grant_types_supported:["authorization_code","refresh_token"],code_challenge_methods_supported:["S256"]},mapAuthInfo:mapUser})}function mapUser(authInfo){let payload=payloadFromAuthInfo(authInfo),id=requiredString(payload,"sub");if(id===void 0)throw invalidToken("Missing Keycloak subject");let realmAccess=recordValue(payload,"realm_access"),resourceAccess=recordValue(payload,"resource_access");return{user:{id,...optional("email",stringValue(payload,"email")),...optional("name",stringValue(payload,"name")),...optional("preferredUsername",stringValue(payload,"preferred_username")),...optional("givenName",stringValue(payload,"given_name")),...optional("familyName",stringValue(payload,"family_name")),...optional("emailVerified",booleanValue(payload,"email_verified")),roles:realmAccess===void 0?[]:normalizedStrings(realmAccess.roles),...realmAccess!==void 0&&{realmAccess},...resourceAccess!==void 0&&{resourceAccess}},payload,permissions:resourcePermissions(resourceAccess)}}function optional(key,value){return value===void 0?{}:{[key]:value}}function resourcePermissions(resourceAccess){return resourceAccess===void 0?[]:Object.entries(resourceAccess).flatMap(([resource,value])=>isRecord(value)?normalizedStrings(value.roles).map(role=>`${resource}:${role}`):[])}export{oauthKeycloakProvider};
|
package/dist/oauth/supabase.js
CHANGED
|
@@ -1,100 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createJwtVerifier,
|
|
3
|
-
invalidToken,
|
|
4
|
-
isRecord,
|
|
5
|
-
normalizedProviderUrl,
|
|
6
|
-
oauthCustomProvider,
|
|
7
|
-
payloadFromAuthInfo,
|
|
8
|
-
providerEndpoint,
|
|
9
|
-
recordValue,
|
|
10
|
-
requiredString,
|
|
11
|
-
stringValue
|
|
12
|
-
} from "../chunk-YF5X7FYF.js";
|
|
13
|
-
|
|
14
|
-
// src/oauth/supabase.ts
|
|
15
|
-
function oauthSupabaseProvider(options) {
|
|
16
|
-
const supabaseUrl = resolveSupabaseUrl(options);
|
|
17
|
-
const issuer = providerEndpoint(supabaseUrl, "auth/v1").replace(/\/$/, "");
|
|
18
|
-
const secret = options.jwtSecret;
|
|
19
|
-
if (secret !== void 0 && new TextEncoder().encode(secret).length < 32) {
|
|
20
|
-
throw new TypeError("Supabase jwtSecret must be at least 32 bytes");
|
|
21
|
-
}
|
|
22
|
-
return oauthCustomProvider({
|
|
23
|
-
...options,
|
|
24
|
-
createTokenVerifier: (resource) => createJwtVerifier({
|
|
25
|
-
issuer,
|
|
26
|
-
jwksUrl: new URL(
|
|
27
|
-
providerEndpoint(supabaseUrl, "auth/v1/.well-known/jwks.json")
|
|
28
|
-
),
|
|
29
|
-
...secret !== void 0 ? { key: new TextEncoder().encode(secret), algorithms: ["HS256"] } : { algorithms: ["ES256"] },
|
|
30
|
-
resource
|
|
31
|
-
}),
|
|
32
|
-
oauthMetadata: {
|
|
33
|
-
issuer,
|
|
34
|
-
authorization_endpoint: providerEndpoint(
|
|
35
|
-
supabaseUrl,
|
|
36
|
-
"auth/v1/oauth/authorize"
|
|
37
|
-
),
|
|
38
|
-
token_endpoint: providerEndpoint(supabaseUrl, "auth/v1/oauth/token"),
|
|
39
|
-
registration_endpoint: providerEndpoint(
|
|
40
|
-
supabaseUrl,
|
|
41
|
-
"auth/v1/oauth/clients/register"
|
|
42
|
-
),
|
|
43
|
-
response_types_supported: ["code"],
|
|
44
|
-
grant_types_supported: ["authorization_code", "refresh_token"],
|
|
45
|
-
code_challenge_methods_supported: ["S256"]
|
|
46
|
-
},
|
|
47
|
-
mapAuthInfo: mapUser
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
function mapUser(authInfo) {
|
|
51
|
-
const payload = payloadFromAuthInfo(authInfo);
|
|
52
|
-
const id = requiredString(payload, "sub") ?? requiredString(payload, "user_id");
|
|
53
|
-
if (id === void 0) throw invalidToken("Missing Supabase subject");
|
|
54
|
-
const userMetadata = recordValue(payload, "user_metadata") ?? {};
|
|
55
|
-
const aal = stringValue(payload, "aal");
|
|
56
|
-
return {
|
|
57
|
-
user: {
|
|
58
|
-
id,
|
|
59
|
-
...optional("email", stringValue(payload, "email")),
|
|
60
|
-
...optional("name", stringValue(userMetadata, "name")),
|
|
61
|
-
...optional("fullName", stringValue(userMetadata, "full_name")),
|
|
62
|
-
...optional("username", stringValue(userMetadata, "username")),
|
|
63
|
-
...optional("avatarUrl", stringValue(userMetadata, "avatar_url")),
|
|
64
|
-
...optional("role", stringValue(payload, "role")),
|
|
65
|
-
...optional("aal", aal),
|
|
66
|
-
amr: supabaseAmr(payload["amr"]),
|
|
67
|
-
...optional("sessionId", stringValue(payload, "session_id"))
|
|
68
|
-
},
|
|
69
|
-
payload,
|
|
70
|
-
permissions: aal === void 0 ? [] : [`aal:${aal}`]
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
function optional(key, value) {
|
|
74
|
-
return value === void 0 ? {} : { [key]: value };
|
|
75
|
-
}
|
|
76
|
-
function resolveSupabaseUrl(options) {
|
|
77
|
-
if (options.supabaseUrl !== void 0) {
|
|
78
|
-
return normalizedProviderUrl(options.supabaseUrl, "supabaseUrl");
|
|
79
|
-
}
|
|
80
|
-
if (options.projectId === void 0 || !/^[a-z0-9-]+$/i.test(options.projectId)) {
|
|
81
|
-
throw new TypeError("Supabase requires projectId or supabaseUrl");
|
|
82
|
-
}
|
|
83
|
-
return new URL(`https://${options.projectId}.supabase.co`);
|
|
84
|
-
}
|
|
85
|
-
function supabaseAmr(value) {
|
|
86
|
-
if (!Array.isArray(value)) return [];
|
|
87
|
-
return value.flatMap((item) => {
|
|
88
|
-
if (!isRecord(item)) return [];
|
|
89
|
-
const method = item["method"];
|
|
90
|
-
const timestamp = item["timestamp"];
|
|
91
|
-
if (typeof method !== "string" || method.length === 0) return [];
|
|
92
|
-
if (timestamp !== void 0 && (typeof timestamp !== "number" || !Number.isFinite(timestamp))) {
|
|
93
|
-
return [];
|
|
94
|
-
}
|
|
95
|
-
return [timestamp === void 0 ? { method } : { method, timestamp }];
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
export {
|
|
99
|
-
oauthSupabaseProvider
|
|
100
|
-
};
|
|
1
|
+
import{createJwtVerifier,invalidToken,isRecord,normalizedProviderUrl,oauthCustomProvider,payloadFromAuthInfo,providerEndpoint,recordValue,requiredString,stringValue}from"../chunk-JMDHTN6N.js";function oauthSupabaseProvider(options){let supabaseUrl=resolveSupabaseUrl(options),issuer=providerEndpoint(supabaseUrl,"auth/v1").replace(/\/$/,""),secret=options.jwtSecret;if(secret!==void 0&&new TextEncoder().encode(secret).length<32)throw new TypeError("Supabase jwtSecret must be at least 32 bytes");return oauthCustomProvider({...options,createTokenVerifier:resource=>createJwtVerifier({issuer,jwksUrl:new URL(providerEndpoint(supabaseUrl,"auth/v1/.well-known/jwks.json")),...secret!==void 0?{key:new TextEncoder().encode(secret),algorithms:["HS256"]}:{algorithms:["ES256"]},resource}),oauthMetadata:{issuer,authorization_endpoint:providerEndpoint(supabaseUrl,"auth/v1/oauth/authorize"),token_endpoint:providerEndpoint(supabaseUrl,"auth/v1/oauth/token"),registration_endpoint:providerEndpoint(supabaseUrl,"auth/v1/oauth/clients/register"),response_types_supported:["code"],grant_types_supported:["authorization_code","refresh_token"],code_challenge_methods_supported:["S256"]},mapAuthInfo:mapUser})}function mapUser(authInfo){let payload=payloadFromAuthInfo(authInfo),id=requiredString(payload,"sub")??requiredString(payload,"user_id");if(id===void 0)throw invalidToken("Missing Supabase subject");let userMetadata=recordValue(payload,"user_metadata")??{},aal=stringValue(payload,"aal");return{user:{id,...optional("email",stringValue(payload,"email")),...optional("name",stringValue(userMetadata,"name")),...optional("fullName",stringValue(userMetadata,"full_name")),...optional("username",stringValue(userMetadata,"username")),...optional("avatarUrl",stringValue(userMetadata,"avatar_url")),...optional("role",stringValue(payload,"role")),...optional("aal",aal),amr:supabaseAmr(payload.amr),...optional("sessionId",stringValue(payload,"session_id"))},payload,permissions:aal===void 0?[]:[`aal:${aal}`]}}function optional(key,value){return value===void 0?{}:{[key]:value}}function resolveSupabaseUrl(options){if(options.supabaseUrl!==void 0)return normalizedProviderUrl(options.supabaseUrl,"supabaseUrl");if(options.projectId===void 0||!/^[a-z0-9-]+$/i.test(options.projectId))throw new TypeError("Supabase requires projectId or supabaseUrl");return new URL(`https://${options.projectId}.supabase.co`)}function supabaseAmr(value){return Array.isArray(value)?value.flatMap(item=>{if(!isRecord(item))return[];let method=item.method,timestamp=item.timestamp;return typeof method!="string"||method.length===0?[]:timestamp!==void 0&&(typeof timestamp!="number"||!Number.isFinite(timestamp))?[]:[timestamp===void 0?{method}:{method,timestamp}]}):[]}export{oauthSupabaseProvider};
|
package/dist/oauth/workos.js
CHANGED
|
@@ -1,76 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
booleanValue,
|
|
3
|
-
createJwtVerifier,
|
|
4
|
-
invalidToken,
|
|
5
|
-
normalizedProviderUrl,
|
|
6
|
-
normalizedStrings,
|
|
7
|
-
oauthCustomProvider,
|
|
8
|
-
payloadFromAuthInfo,
|
|
9
|
-
providerEndpoint,
|
|
10
|
-
requiredString,
|
|
11
|
-
stringValue
|
|
12
|
-
} from "../chunk-YF5X7FYF.js";
|
|
13
|
-
|
|
14
|
-
// src/oauth/workos.ts
|
|
15
|
-
function oauthWorkOSProvider(options) {
|
|
16
|
-
const issuer = workosIssuer(options.subdomain);
|
|
17
|
-
return oauthCustomProvider({
|
|
18
|
-
...options,
|
|
19
|
-
createTokenVerifier: (resource) => createJwtVerifier({
|
|
20
|
-
issuer,
|
|
21
|
-
jwksUrl: new URL(providerEndpoint(issuer, "oauth2/jwks")),
|
|
22
|
-
resource
|
|
23
|
-
}),
|
|
24
|
-
oauthMetadata: {
|
|
25
|
-
issuer,
|
|
26
|
-
authorization_endpoint: providerEndpoint(issuer, "oauth2/authorize"),
|
|
27
|
-
token_endpoint: providerEndpoint(issuer, "oauth2/token"),
|
|
28
|
-
registration_endpoint: providerEndpoint(issuer, "oauth2/register"),
|
|
29
|
-
response_types_supported: ["code"],
|
|
30
|
-
grant_types_supported: ["authorization_code", "refresh_token"],
|
|
31
|
-
code_challenge_methods_supported: ["S256"]
|
|
32
|
-
},
|
|
33
|
-
mapAuthInfo: mapUser
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
function mapUser(authInfo) {
|
|
37
|
-
const payload = payloadFromAuthInfo(authInfo);
|
|
38
|
-
const id = requiredString(payload, "sub");
|
|
39
|
-
if (id === void 0) throw invalidToken("Missing WorkOS subject");
|
|
40
|
-
return {
|
|
41
|
-
user: {
|
|
42
|
-
id,
|
|
43
|
-
...optional("email", stringValue(payload, "email")),
|
|
44
|
-
...optional("emailVerified", booleanValue(payload, "email_verified")),
|
|
45
|
-
...optional("name", stringValue(payload, "name")),
|
|
46
|
-
...optional(
|
|
47
|
-
"preferredUsername",
|
|
48
|
-
stringValue(payload, "preferred_username")
|
|
49
|
-
),
|
|
50
|
-
...optional("firstName", stringValue(payload, "first_name")),
|
|
51
|
-
...optional("lastName", stringValue(payload, "last_name")),
|
|
52
|
-
...optional("picture", stringValue(payload, "picture")),
|
|
53
|
-
roles: normalizedStrings(payload["roles"]),
|
|
54
|
-
...optional("organizationId", stringValue(payload, "org_id")),
|
|
55
|
-
...optional("sessionId", stringValue(payload, "sid"))
|
|
56
|
-
},
|
|
57
|
-
payload,
|
|
58
|
-
permissions: normalizedStrings(payload["permissions"])
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function optional(key, value) {
|
|
62
|
-
return value === void 0 ? {} : { [key]: value };
|
|
63
|
-
}
|
|
64
|
-
function workosIssuer(value) {
|
|
65
|
-
if (typeof value !== "string" || value.trim().length === 0) {
|
|
66
|
-
throw new TypeError("WorkOS subdomain is required");
|
|
67
|
-
}
|
|
68
|
-
const url = normalizedProviderUrl(value, "WorkOS subdomain");
|
|
69
|
-
if (url.pathname !== "/") {
|
|
70
|
-
throw new TypeError("WorkOS subdomain must be a hostname or HTTPS origin");
|
|
71
|
-
}
|
|
72
|
-
return url.href.replace(/\/$/, "");
|
|
73
|
-
}
|
|
74
|
-
export {
|
|
75
|
-
oauthWorkOSProvider
|
|
76
|
-
};
|
|
1
|
+
import{booleanValue,createJwtVerifier,invalidToken,normalizedProviderUrl,normalizedStrings,oauthCustomProvider,payloadFromAuthInfo,providerEndpoint,requiredString,stringValue}from"../chunk-JMDHTN6N.js";function oauthWorkOSProvider(options){let issuer=workosIssuer(options.subdomain);return oauthCustomProvider({...options,createTokenVerifier:resource=>createJwtVerifier({issuer,jwksUrl:new URL(providerEndpoint(issuer,"oauth2/jwks")),resource}),oauthMetadata:{issuer,authorization_endpoint:providerEndpoint(issuer,"oauth2/authorize"),token_endpoint:providerEndpoint(issuer,"oauth2/token"),registration_endpoint:providerEndpoint(issuer,"oauth2/register"),response_types_supported:["code"],grant_types_supported:["authorization_code","refresh_token"],code_challenge_methods_supported:["S256"]},mapAuthInfo:mapUser})}function mapUser(authInfo){let payload=payloadFromAuthInfo(authInfo),id=requiredString(payload,"sub");if(id===void 0)throw invalidToken("Missing WorkOS subject");return{user:{id,...optional("email",stringValue(payload,"email")),...optional("emailVerified",booleanValue(payload,"email_verified")),...optional("name",stringValue(payload,"name")),...optional("preferredUsername",stringValue(payload,"preferred_username")),...optional("firstName",stringValue(payload,"first_name")),...optional("lastName",stringValue(payload,"last_name")),...optional("picture",stringValue(payload,"picture")),roles:normalizedStrings(payload.roles),...optional("organizationId",stringValue(payload,"org_id")),...optional("sessionId",stringValue(payload,"sid"))},payload,permissions:normalizedStrings(payload.permissions)}}function optional(key,value){return value===void 0?{}:{[key]:value}}function workosIssuer(value){if(typeof value!="string"||value.trim().length===0)throw new TypeError("WorkOS subdomain is required");let url=normalizedProviderUrl(value,"WorkOS subdomain");if(url.pathname!=="/")throw new TypeError("WorkOS subdomain must be a hostname or HTTPS origin");return url.href.replace(/\/$/,"")}export{oauthWorkOSProvider};
|
package/dist/openapi/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{resolvePublicFilePath,servePublicFile}from"./chunk-ZMU5USAZ.js";export{resolvePublicFilePath,servePublicFile};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-use",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.0.0-beta.
|
|
4
|
+
"version": "2.0.0-beta.36",
|
|
5
5
|
"description": "MCP framework and CLI built on the official v2 SDK",
|
|
6
6
|
"author": "mcp-use, Inc.",
|
|
7
7
|
"license": "MIT",
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
"@modelcontextprotocol/server": "2.0.0-beta.5",
|
|
90
90
|
"hono": "^4.12.27",
|
|
91
91
|
"jose": "^6.1.3",
|
|
92
|
-
"@mcp-use/
|
|
93
|
-
"@mcp-use/
|
|
92
|
+
"@mcp-use/inspector": "20.0.0-beta.28",
|
|
93
|
+
"@mcp-use/cli": "4.0.0-beta.8"
|
|
94
94
|
},
|
|
95
95
|
"peerDependencies": {
|
|
96
96
|
"@mcp-use/client": "^2.0.0-alpha.0",
|
|
@@ -115,16 +115,17 @@
|
|
|
115
115
|
"@types/react": "^19.2.17",
|
|
116
116
|
"@types/react-dom": "^19.2.3",
|
|
117
117
|
"@vitejs/plugin-react": "^6.0.3",
|
|
118
|
+
"es-module-lexer": "^2.3.0",
|
|
118
119
|
"happy-dom": "^20.10.6",
|
|
119
120
|
"react": "^19.2.7",
|
|
120
121
|
"react-dom": "^19.2.7",
|
|
121
|
-
"typescript": "^7.0.2",
|
|
122
122
|
"tailwindcss": "^4.2.0",
|
|
123
|
+
"typescript": "^7.0.2",
|
|
123
124
|
"vite": "^8.0.16",
|
|
124
125
|
"vitest": "^4.1.9",
|
|
125
126
|
"zod": "^4.4.3",
|
|
126
|
-
"
|
|
127
|
-
"mcp-use": "2.0.0-beta.
|
|
127
|
+
"mcp-use": "2.0.0-beta.36",
|
|
128
|
+
"@mcp-use/client": "2.0.0-beta.12"
|
|
128
129
|
},
|
|
129
130
|
"publishConfig": {
|
|
130
131
|
"access": "public"
|
package/dist/chunk-DFFP6QPR.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// src/completable.ts
|
|
2
|
-
import {
|
|
3
|
-
completable as sdkCompletable
|
|
4
|
-
} from "@modelcontextprotocol/server";
|
|
5
|
-
function createPrefixCompletion(values) {
|
|
6
|
-
const strings = values.map(String);
|
|
7
|
-
return (value) => {
|
|
8
|
-
const prefix = String(value ?? "").toLowerCase();
|
|
9
|
-
return strings.filter(
|
|
10
|
-
(candidate) => candidate.toLowerCase().startsWith(prefix)
|
|
11
|
-
);
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
function completable(schema, complete) {
|
|
15
|
-
if (typeof complete === "function") {
|
|
16
|
-
return sdkCompletable(
|
|
17
|
-
schema,
|
|
18
|
-
(value, context) => complete(String(value ?? ""), context)
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
return sdkCompletable(schema, createPrefixCompletion(complete));
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// src/resource-completion.ts
|
|
25
|
-
function normalizeCompletions(completions) {
|
|
26
|
-
const normalized = /* @__PURE__ */ Object.create(null);
|
|
27
|
-
for (const [variable, completer] of Object.entries(completions)) {
|
|
28
|
-
if (completer === void 0) continue;
|
|
29
|
-
normalized[variable] = Array.isArray(completer) ? createPrefixCompletion(completer) : completer;
|
|
30
|
-
}
|
|
31
|
-
return normalized;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export {
|
|
35
|
-
completable,
|
|
36
|
-
normalizeCompletions
|
|
37
|
-
};
|
package/dist/chunk-HDV7K2TE.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
// src/views/origin.ts
|
|
2
|
-
function stripTrailingSlashes(value) {
|
|
3
|
-
return value.replace(/\/+$/, "");
|
|
4
|
-
}
|
|
5
|
-
function readEnv(name) {
|
|
6
|
-
if (typeof process === "undefined") {
|
|
7
|
-
return void 0;
|
|
8
|
-
}
|
|
9
|
-
const value = process.env[name];
|
|
10
|
-
return value !== void 0 && value !== "" ? value : void 0;
|
|
11
|
-
}
|
|
12
|
-
function parseForwardedHeader(header) {
|
|
13
|
-
for (const part of header.split(",")) {
|
|
14
|
-
const params = /* @__PURE__ */ new Map();
|
|
15
|
-
for (const token of part.split(";")) {
|
|
16
|
-
const [key, ...rest] = token.trim().split("=");
|
|
17
|
-
if (key === void 0 || rest.length === 0) {
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
params.set(key.toLowerCase(), rest.join("=").replace(/^"|"$/g, ""));
|
|
21
|
-
}
|
|
22
|
-
const proto = params.get("proto");
|
|
23
|
-
const host = params.get("host");
|
|
24
|
-
if (proto !== void 0 && host !== void 0) {
|
|
25
|
-
return `${proto}://${host}`;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return void 0;
|
|
29
|
-
}
|
|
30
|
-
function resolveRequestOriginFromHeaders(request) {
|
|
31
|
-
const forwarded = request.headers.get("forwarded");
|
|
32
|
-
if (forwarded !== null) {
|
|
33
|
-
const fromForwarded = parseForwardedHeader(forwarded);
|
|
34
|
-
if (fromForwarded !== void 0) {
|
|
35
|
-
return fromForwarded;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const proto = request.headers.get("x-forwarded-proto");
|
|
39
|
-
const host = request.headers.get("x-forwarded-host");
|
|
40
|
-
if (proto !== null && host !== null) {
|
|
41
|
-
const firstHost = host.split(",")[0]?.trim();
|
|
42
|
-
const firstProto = proto.split(",")[0]?.trim();
|
|
43
|
-
if (firstHost !== void 0 && firstProto !== void 0 && firstHost !== "") {
|
|
44
|
-
return `${firstProto}://${firstHost}`;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return new URL(request.url).origin;
|
|
48
|
-
}
|
|
49
|
-
function resolveServerOrigin(request) {
|
|
50
|
-
const mcpUrl = readEnv("MCP_URL");
|
|
51
|
-
if (mcpUrl !== void 0) {
|
|
52
|
-
try {
|
|
53
|
-
return new URL(mcpUrl).origin;
|
|
54
|
-
} catch {
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return resolveRequestOriginFromHeaders(request);
|
|
58
|
-
}
|
|
59
|
-
function originFromAssetsBase(assetsBase) {
|
|
60
|
-
try {
|
|
61
|
-
return new URL(assetsBase).origin;
|
|
62
|
-
} catch {
|
|
63
|
-
return assetsBase;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function normalizeAssetsBaseUrl(value) {
|
|
67
|
-
return stripTrailingSlashes(value);
|
|
68
|
-
}
|
|
69
|
-
function resolveAssetsBase(request) {
|
|
70
|
-
const assetsUrl = readEnv("MCP_ASSETS_URL");
|
|
71
|
-
if (assetsUrl !== void 0) {
|
|
72
|
-
try {
|
|
73
|
-
return normalizeAssetsBaseUrl(new URL(assetsUrl).href.replace(/\/$/, ""));
|
|
74
|
-
} catch {
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return resolveServerOrigin(request);
|
|
78
|
-
}
|
|
79
|
-
function hasExplicitAssetsBase() {
|
|
80
|
-
const assetsUrl = readEnv("MCP_ASSETS_URL");
|
|
81
|
-
if (assetsUrl === void 0) {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
try {
|
|
85
|
-
new URL(assetsUrl);
|
|
86
|
-
return true;
|
|
87
|
-
} catch {
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export {
|
|
93
|
-
resolveServerOrigin,
|
|
94
|
-
originFromAssetsBase,
|
|
95
|
-
resolveAssetsBase,
|
|
96
|
-
hasExplicitAssetsBase
|
|
97
|
-
};
|