PageSourceSearch

https://portal.godesignguru.com/build/assets/IntegrationMcp-D3CHq3Nq.js

js godesignguru.com collected 2026-10-04 05:50:08 UTC 16,272 bytes, 62 lines download raw bytes

1import { _ as j } from "./ModalConfirmation-BptK8hn4.js";
2import { _ as q } from "./IntegrationsTabs-D-kd67c_.js";
3import { _ as G } from "./Table-D1P44re1.js";
4import { _ as V } from "./DashboardLayout-CXf_hhYT.js";
5import { a as _ } from "./functions-DLrKIvnr.js";
6import { j as L, G as b, o as n, c as l, e as i, u as o, n as W, f as d, a as e, t as s, F as v, r as M, d as w, g as k, q as B } from "./app-yg_pP4S4.js";
7import { c as z } from "./createVueComponent-CTngw1zY.js";
8import { h as E } from "./index-CDyB1Hog.js";
9import { r as f } from "./ClipboardDocumentIcon-BzDz5_lG.js";
10import "./LoaderIcon-BfI_LFZK.js";
11import "./_plugin-vue_export-helper-DlAUqK2U.js";
12import "./XMarkIcon-C7ztHuKP.js";
13import "./MultiTabs-BFOMDQVX.js";
14import "./useEdgeFade-BW6BLoUc.js";
15import "./TablePagination-CoQin-sh.js";
16import "./listbox-BVei8WBz.js";
17import "./form-BcDj1t5Y.js";
18import "./use-text-value-9Z6g_4jd.js";
19import "./ChevronUpDownIcon-D7fhXTZr.js";
20import "./CheckIcon-CfE0icDF.js";
21import "./LiveChat-BEmWJs6j.js";
22import "./ApplicationLogo-D4QkytOJ.js";
23import "./UserAvatar-B3-R1wxh.js";
24import "./popover-DTQdCRwt.js";
25import "./consts-7Qk9bpse.js";
26import "./BaseInput-DrEncIoW.js";
27import "./index-BF2h0ubX.js";
28import "./CheckIcon-Bb6ppPFl.js";
29import "./modelWrapper-D0DowOi8.js";
30import "./ChevronRightIcon-f6ucdGu7.js";
31import "./ArrowUpIcon-c4MStV6E.js";
32import "./BaseButton-DP1PFEmO.js";
33import "./BaseModal-lnT_D81c.js";
34import "./EyeIcon-C30yl1ND.js";
35import "./HomeIcon-B7IW8yDA.js";
36import "./MinusIcon-C5ZUuSoW.js";
37import "./menu-DpWDC0YJ.js";
38import "./use-tree-walker-DC0osvAV.js";
39import "./vue-transitions-DxcThSkT.js";
40import "./ClockIcon-DWc8x_ii.js";
41var A = z("outline", "plug-connected", "PlugConnected", [["path", { d: "M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1 -5 -5l1.5 -1.5", key: "svg-0" }], ["path", { d: "M17 12l-5 -5l1.5 -1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5", key: "svg-1" }], ["path", { d: "M3 21l2.5 -2.5", key: "svg-2" }], ["path", { d: "M18.5 5.5l2.5 -2.5", key: "svg-3" }], ["path", { d: "M10 11l-2 2", key: "svg-4" }], ["path", { d: "M13 14l-2 2", key: "svg-5" }]]);
42const F = { class: "mb-6 overflow-hidden rounded-lg bg-white shadow" }, O = { class: "my-6 max-lg:my-0 2xl:my-0 2xl:p-6" }, J = { class: "flex items-center justify-between px-6 py-5 max-lg:py-4 max-sm:px-4 2xl:rounded-lg 2xl:bg-gray-50" }, K = { class: "flex" }, H = { class: "shrink-0" }, Q = { class: "mr-3 flex aspect-square items-center justify-center rounded-md bg-primary-50 p-0.5" }, X = { class: "mr-8 max-sm:mr-0 md:mr-12" }, Z = { class: "mb-1 text-lg font-medium leading-6 text-gray-900" }, ee = { class: "text-sm font-normal leading-5 text-gray-500" }, te = { class: "my-6 px-6 py-5 max-sm:px-4" }, oe = { class: "rounded-lg border border-gray-200 bg-white p-6 shadow-sm max-lg:rounded-none max-lg:border-0 max-lg:p-0 max-lg:shadow-none" }, se = { class: "text-lg font-bold leading-6 text-gray-900" }, re = { class: "mt-1 text-sm text-gray-500" }, ae = { class: "mt-6" }, ne = { class: "text-sm font-semibold text-gray-900" }, le = { class: "mt-1 text-sm text-gray-500" }, ie = { class: "mt-2 list-decimal space-y-1 pl-5 text-sm text-gray-500" }, de = { class: "mt-3 flex rounded-md shadow-sm max-lg:flex-col" }, me = { class: "inline-flex w-full cursor-text items-center overflow-x-auto whitespace-nowrap rounded-l-md border border-r-0 border-gray-300 bg-gray-800 px-3 py-2 font-mono text-sm text-white max-lg:whitespace-normal max-lg:break-all max-lg:rounded-bl-none max-lg:rounded-tr-md max-lg:border-b-0 max-lg:border-r" }, ce = { key: 0 }, pe = { key: 1 }, xe = { class: "mt-6 border-t border-gray-200 pt-6" }, ge = { class: "text-sm font-semibold text-gray-900" }, ue = { class: "mt-1 text-sm text-gray-500" }, he = { class: "mt-2 list-decimal space-y-1 pl-5 text-sm text-gray-500" }, ye = { class: "mt-3 flex rounded-md shadow-sm max-lg:flex-col" }, _e = { class: "inline-flex w-full cursor-text items-center overflow-x-auto whitespace-nowrap rounded-l-md border border-r-0 border-gray-300 bg-gray-800 px-3 py-2 font-mono text-sm text-white max-lg:whitespace-normal max-lg:break-all max-lg:rounded-bl-none max-lg:rounded-tr-md max-lg:border-b-0 max-lg:border-r" }, be = { key: 0 }, fe = { key: 1 }, ve = { class: "mt-6 border-t border-gray-200 pt-6" }, we = { class: "text-sm font-semibold text-gray-900" }, ke = { class: "mt-3 flex flex-wrap gap-3 max-sm:grid max-sm:grid-cols-2" }, Ce = ["href"], Me = ["href"], Ae = { class: "mt-6" }, Ie = { class: "block text-sm font-medium text-gray-700" }, Ye = { class: "mt-1 flex rounded-md shadow-sm max-lg:flex-col" }, $e = { class: "inline-flex w-full cursor-text items-center overflow-x-auto whitespace-nowrap rounded-l-md border border-r-0 border-gray-300 bg-gray-800 px-3 py-2 font-mono text-sm text-white max-lg:whitespace-normal max-lg:break-all max-lg:rounded-bl-none max-lg:rounded-tr-md max-lg:border-b-0 max-lg:border-r" }, Pe = { key: 0 }, Ne = { key: 1 }, Re = { class: "mt-6 rounded-lg border border-gray-200 bg-white p-6 shadow-sm max-lg:rounded-none max-lg:border-x-0 max-lg:border-b-0 max-lg:px-0 max-lg:pb-0 max-lg:shadow-none" }, Ue = { class: "text-lg font-bold leading-6 text-gray-900" }, De = { class: "mt-1 text-sm text-gray-500" }, Se = { class: "mt-4 space-y-3" }, Te = { class: "lg:w-56 lg:shrink-0" }, je = { class: "inline-flex items-center rounded bg-primary-50 px-2.5 py-0.5 font-mono text-xs font-medium text-primary-700" }, qe = { class: "mt-1 text-sm text-gray-600 lg:mt-0" }, Ge = { class: "mt-6 rounded-lg border border-gray-200 bg-white p-6 shadow-sm max-lg:rounded-none max-lg:border-x-0 max-lg:border-b-0 max-lg:px-0 max-lg:pb-0 max-lg:shadow-none" }, Ve = { class: "text-lg font-bold leading-6 text-gray-900" }, Le = { class: "mt-1 text-sm text-gray-500" }, We = { class: "mt-4 space-y-3" }, Be = { class: "min-w-0 flex-1 rounded-md border border-gray-200 bg-gray-50 p-3 text-sm text-gray-700" }, ze = ["onClick"], Ee = { key: 0 }, Fe = { key: 1 }, Oe = { class: "mt-6 bg-white pb-4 pt-2" }, Je = { class: "flex items-center justify-between" }, Ke = { class: "min-w-0 flex-1" }, He = { class: "text-lg font-bold leading-6 text-gray-900 sm:truncate" }, Qe = { class: "w-4/12 whitespace-nowrap py-4 pl-6 text-sm font-normal text-gray-900 max-lg:w-full max-lg:max-w-0 max-lg:py-3 max-lg:pr-2 max-sm:pl-4" }, Xe = { class: "lg:hidden" }, Ze = { class: "truncate font-medium leading-5" }, et = { class: "mt-0.5 truncate text-xs leading-5 text-gray-500" }, tt = { class: "max-lg:hidden" }, ot = { class: "hidden w-3/12 whitespace-nowrap py-4 text-sm text-gray-500 lg:table-cell" }, st = { class: "hidden w-3/12 whitespace-nowrap py-4 text-sm text-gray-500 lg:table-cell" }, rt = { class: "w-2/12 text-right max-lg:w-px max-lg:whitespace-nowrap max-lg:pr-2" }, at = { class: "flex items-center justify-end lg:pr-6" }, nt = ["onClick"], lt = { class: "mb-3 text-xl font-semibold text-gray-900" }, it = { class: "text-sm text-gray-500" }, Qt = { __name: "IntegrationMcp", props: { connections: { type: Array, required: true }, serverUrl: { type: String, required: true }, serverName: { type: String, required: true }, tools: { type: Array, required: true } }, setup(c) {
43  const { t } = L(), p = c, I = [t("Which ManyRequests portal am I connected to?"), t("What subscription plan is my portal on?")], Y = [{ label: t("Settings"), url: route("settings.modules.index") }, { label: t("Integrations"), url: route("settings.integrations.index") }, { label: t("MCP server") }], $ = b([{ key: "name", label: t("Client"), showing: true }, { key: "created_at", label: t("Authorized"), showing: true }, { key: "expires_at", label: t("Expires"), showing: true }]), g = b(false), u = b(null), x = b(null), { copy: P } = E(), h = (a, m) => {
44    P(a), x.value = m;
45  }, N = k(() => {
46    const a = btoa(JSON.stringify({ url: p.serverUrl }));
47    return `cursor://anysphere.cursor-deeplink/mcp/install?name=${encodeURIComponent(p.serverName)}&config=${encodeURIComponent(a)}`;
48  }), R = k(() => {
49    const a = JSON.stringify({ name: p.serverName, type: "http", url: p.serverUrl });
50    return `vscode:mcp/install?${encodeURIComponent(a)}`;
51  }), C = k(() =>
51 `claude mcp add --transport http --scope user ${p.serverName} ${p.serverUrl}`), U = (a) => [t("Authorized: {date}", { date: _(a.created_at, "MMM D, YYYY") }), t("Expires: {date}", { date: a.expires_at ? _(a.expires_at, "MMM D, YYYY") : t("Never") })].join(" \xB7 "), D = (a) => {
52    u.value = a, g.value = true;
53  }, S = () => {
54    g.value = false, u.value = null;
55  }, T = () => B.delete(route("settings.integrations.mcp.destroy", u.value.id), { preserveScroll: true, onSuccess: () => {
56    g.value = false, u.value = null;
57  } });
58  return (a, m) => (n(), l(v, null, [i(o(W), { title: o(t)("MCP server") }, null, 8, ["title"]), i(V, { breadcrumbs: Y, "wrapper-class": "max-lg:[&_input]:text-base max-lg:[&_textarea]:text-base max-lg:[&_select]:text-base max-lg:[&_button[aria-haspopup=listbox]]:min-h-11" }, { header: d(() => [w(s(o(t)("MCP server")), 1)]), before: d(() => [e("div", F, [i(q), e("div", O, [e("div", J, [e("div", K, [e("div", H, [e("div", Q, [i(o(A), { class: "h-7 w-7 text-primary-600" })])]), e("div", X, [e("h3", Z, s(o(t)("MCP server")), 1), e("div", ee, s(o(t)("Connect ChatGPT, Claude and other AI apps to your portal so they can work with your data.")), 1)])])])])])]), default: d(() => [e("div", te, [e("div", oe, [e("h2", se, s(o(t)("Install")), 1), e("p", re, s(o(t)("Your AI app will ask you to log in to this portal and approve the connection. No tokens to copy.")), 1), e("div", ae, [e("h3", ne, s(o(t)("Claude (Desktop & Web)")), 1), e("p", le, s(o(t)("The same steps work in the Claude desktop app and at claude.ai.")), 1), e("ol", ie, [e("li", null, s(o(t)("Go to Settings \u2192 Connectors and click Add custom connector.")), 1), e("li", null, s(o(t)("Paste the URL below and click Add.")), 1), e("li", null, s(o(t)("Log in to your portal and approve the connection when Claude asks.")), 1)]), e("div", de, [e("span", me, s(c.serverUrl), 1), e("button", { type: "button", class: "group relative -ml-px inline-flex shrink-0 items-center space-x-2 rounded-r-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-primary-500 max-lg:ml-0 max-lg:min-h-11 max-lg:w-full max-lg:justify-center max-lg:rounded-bl-md max-lg:rounded-tr-none", onClick: m[0] || (m[0] = (r) => h(c.serverUrl, "claude-url")) }, [i(o(f), { class: "h-5 w-5 text-gray-500 group-hover:text-gray-600", "aria-hidden": "true" }), x.value !== "claude-url" ? (n(), l("span", ce, s(o(t)("Copy")), 1)) : (n(), l("span", pe, s(o(t)("Copied!")), 1))])])]), e("div", xe, [e("h3", ge, s(o(t)("ChatGPT (Desktop & Web)")), 1), e("p", ue, s(o(t)("The same steps work in the ChatGPT desktop app and at chatgpt.com. Requires a paid ChatGPT plan.")), 1), e("ol", he, [e("li", null, s(o(t)("Go to Settings \u2192 Apps & Connectors \u2192 Advanced settings and turn on Developer mode.")), 1), e("li", null, s(o(t)("Back in Apps & Connectors, click Create, name the connector, paste the URL below and choose OAuth for authentication.")), 1), e("li", null, s(o(t)("Log in to your portal and approve the connection when ChatGPT asks.")), 1), e("li", null, s(o(t)("In a chat, open the + menu, choose Developer mode and enable the connector.")), 1)]), e("div", ye, [e("span", _e, s(c.serverUrl), 1), e("button", { type: "button", class: "group relative -ml-px inline-flex shrink-0 items-center space-x-2 rounded-r-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-primary-500 max-lg:ml-0 max-lg:min-h-11 max-lg:w-full max-lg:justify-center max-lg:rounded-bl-md max-lg:rounded-tr-none", onClick: m[1] || (m[1] = (r) => h(c.serverUrl, "chatgpt-url")) }, [i(o(f), { class: "h-5 w-5 text-gray-500 group-hover:text-gray-600", "aria-hidden": "true" }), x.value !== "chatgpt-url" ? (n(), l("span", be, s(o(t)("Copy")), 1)) : (n(), l("span", fe, s(o(t)("Copied!")), 1))])])]), e("div", ve, [e("h3", we, s(o(t)("For developers")), 1), e("div", ke, [e("a", { href: N.value, class: "inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm hover:bg-gray-50 max-lg:min-h-11 max-sm:justify-center" }, s(o(t)("Add to Cursor")), 9, Ce), e("a", { href: R.value, class: "inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm hover:bg-gray-50 max-lg:min-h-11 max-sm:justify-center" }, s(o(t)("Add to VS Code")), 9, Me)]), e("div", Ae, [e("label", Ie, s(o(t)("Claude Code")), 1), e("div", Ye, [e("span", $e, s(C.value), 1), e("button", { type: "button", class: "group relative -ml-px inline-flex shrink-0 items-center space-x-2 rounded-r-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-primary-500 max-lg:ml-0 max-lg:min-h-11 max-lg:w-full max-lg:justify-center max-lg:rounded-bl-md max-lg:rounded-tr-none", onClick: m[2] || (m[2] = (r) => h(C.value, "command")) }, [i(o(f), { class: "h-5 w-5 text-gray-500 group-hover:text-gray-600", "aria-hidden": "true" }), x.value !== "command" ? (n(), l("span", Pe, s(o(t)("Copy")), 1)) : (n(), l("span", Ne, s(o(t)("Copied!")), 1))])])])])]), e("div", Re, [e("h2", Ue, s(o(t)("What you get")), 1), e("p", De, s(o(t)("These are the tools your AI client can call once connected.")), 1), e("dl", Se, [(n(true), l(v, null, M(c.tools, (r) => (n(), l("div", { key: r.name, class: "lg:flex lg:items-baseline lg:gap-4" }, [e("dt", Te, [e("span", je, s(r.name), 1)]), e("dd", qe, s(r.description), 1)]))), 128))])]), e("div", Ge, [e("h2", Ve, s(o(t)("Try these prompts")), 1), e("p", Le, s(o(t)("Paste one into your AI client to check the connection is working.")), 1), e("div", We, [(n(), l(v, null, M(I, (r, y) => e("div", { key: y, class: "flex items-center gap-3" }, [e("div", Be, s(r), 1), e("button", { type: "button", class: "group inline-flex shrink-0 items-center space-x-2 rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-primary-500 max-lg:min-h-11", onClick: (dt) => h(r, `prompt-${y}`) }, [i(o(f), { class: "h-5 w-5 text-gray-500 group-hover:text-gray-600", "aria-hidden": "true" }), x.value !== `prompt-${y}` ? (n(), l("span", Ee, s(o(t)("Copy")), 1)) : (n(), l("span", Fe, s(o(t)("Copied!")), 1))], 8, ze)])), 64))])]), e("div", Oe, [e("div", Je, [e("div", Ke, [e("h2", He, s(o(t)("Authorized connections")), 1)])])]), i(G, { data: c.connections, columns: $.value, expandable: "", "show-column-always": "name", class: "-mx-6 mt-4 max-sm:-mx-4 sm:max-lg:[&_.normal-row:first-child]:border-t-0 max-sm:[&_.normal-row~.normal-row>td]:border-t max-lg:[&_thead]:hidden" }, { name: d(({ item: r }) => [e("td", Qe, [e("div", Xe, [e("div", Ze, s(r.name), 1), e("div", et, s(U(r)), 1)]), e("span", tt, s(r.name), 1)])]), created_at: d(({ item: r }) => [e("td", ot, s(o(_)(r.created_at, "MMM D, YYYY")), 1)]), expires_at: d(({ item: r }) => [e("td", st, s(r.expires_at ? o(_)(r.expires_at, "MMM D, YYYY") : o(t)("Never")), 1)]), expandable: d(({ item: r }) => [e("td", rt, [e("div", at, [e("button", { type: "button", class: "text-sm font-medium text-red-600 hover:text-red-500 max-lg:inline-flex max-lg:min-h-11 max-lg:items-center max-lg:px-2", onClick: (y) => D(r) }, s(o(t)("Revoke")), 9, nt)])])]), "empty-state": d(() => [i(o(A), { class: "mx-auto mb-5 h-12 w-12 stroke-1 text-gray-400" }), e("h3", lt, s(o(t)("No connections yet")), 1), e("p", it, s(o(t)("Install the server in your AI client and approve the connection to see it here.")), 1)]), _: 1 }, 8, ["data", "columns"])])]), _: 1 }), i(j, { open: g.value, color: "red", onConfirmed: T, onClosed: S }, { title: d(() => [w(s(o(t)("Revoke MCP connection")), 1)]), content: d(() => [w(s(o(t)("Are you sure you want to revoke this connection? The AI client using it will no longer have access.")), 1)]), _: 1 }, 8, ["open"])], 64));
59} };
60export {
61  Qt as default
62};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.