@burdenoff/mcp-libs 2026.703.3 → 2026.719.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/dist/{chunk-WWFVD7BO.js → chunk-RHWHUY5Y.js} +3 -3
- package/dist/{chunk-WWFVD7BO.js.map → chunk-RHWHUY5Y.js.map} +1 -1
- package/dist/{chunk-H2OYWLOA.js → chunk-YOSQUY3M.js} +101 -35
- package/dist/chunk-YOSQUY3M.js.map +1 -0
- package/dist/core/index.cjs +101 -32
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/index.cjs +97 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/modules/adaptercloud/index.cjs +14 -14
- package/dist/modules/adaptercloud/index.cjs.map +1 -1
- package/dist/modules/adaptercloud/index.js +1 -1
- package/dist/modules/artistrybase/index.cjs +14 -14
- package/dist/modules/artistrybase/index.cjs.map +1 -1
- package/dist/modules/artistrybase/index.js +1 -1
- package/dist/modules/assethandler/index.cjs +14 -14
- package/dist/modules/assethandler/index.cjs.map +1 -1
- package/dist/modules/assethandler/index.js +1 -1
- package/dist/modules/atheletebridge/index.cjs +14 -14
- package/dist/modules/atheletebridge/index.cjs.map +1 -1
- package/dist/modules/atheletebridge/index.js +1 -1
- package/dist/modules/auth/index.cjs +14 -14
- package/dist/modules/auth/index.cjs.map +1 -1
- package/dist/modules/auth/index.js +3 -3
- package/dist/modules/billing/index.cjs +14 -14
- package/dist/modules/billing/index.cjs.map +1 -1
- package/dist/modules/billing/index.js +1 -1
- package/dist/modules/brainyrich/index.cjs +14 -14
- package/dist/modules/brainyrich/index.cjs.map +1 -1
- package/dist/modules/brainyrich/index.js +1 -1
- package/dist/modules/buildmyiq/index.cjs +14 -14
- package/dist/modules/buildmyiq/index.cjs.map +1 -1
- package/dist/modules/buildmyiq/index.js +1 -1
- package/dist/modules/channels/index.cjs +14 -14
- package/dist/modules/channels/index.cjs.map +1 -1
- package/dist/modules/channels/index.js +1 -1
- package/dist/modules/collabkin/index.cjs +14 -14
- package/dist/modules/collabkin/index.cjs.map +1 -1
- package/dist/modules/collabkin/index.js +1 -1
- package/dist/modules/comradecircle/index.cjs +14 -14
- package/dist/modules/comradecircle/index.cjs.map +1 -1
- package/dist/modules/comradecircle/index.js +1 -1
- package/dist/modules/conversations/index.cjs +14 -14
- package/dist/modules/conversations/index.cjs.map +1 -1
- package/dist/modules/conversations/index.js +1 -1
- package/dist/modules/coolandlovely/index.cjs +14 -14
- package/dist/modules/coolandlovely/index.cjs.map +1 -1
- package/dist/modules/coolandlovely/index.js +1 -1
- package/dist/modules/cosmicintersection/index.cjs +14 -14
- package/dist/modules/cosmicintersection/index.cjs.map +1 -1
- package/dist/modules/cosmicintersection/index.js +1 -1
- package/dist/modules/crewfoundry/index.cjs +14 -14
- package/dist/modules/crewfoundry/index.cjs.map +1 -1
- package/dist/modules/crewfoundry/index.js +1 -1
- package/dist/modules/devportal/index.cjs +14 -14
- package/dist/modules/devportal/index.cjs.map +1 -1
- package/dist/modules/devportal/index.js +1 -1
- package/dist/modules/ecoimpacthub/index.cjs +14 -14
- package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
- package/dist/modules/ecoimpacthub/index.js +1 -1
- package/dist/modules/eventfullymanaged/index.cjs +14 -14
- package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
- package/dist/modules/eventfullymanaged/index.js +1 -1
- package/dist/modules/export/index.cjs +14 -14
- package/dist/modules/export/index.cjs.map +1 -1
- package/dist/modules/export/index.js +1 -1
- package/dist/modules/files/index.cjs +14 -14
- package/dist/modules/files/index.cjs.map +1 -1
- package/dist/modules/files/index.js +1 -1
- package/dist/modules/ggnomad/index.cjs +14 -14
- package/dist/modules/ggnomad/index.cjs.map +1 -1
- package/dist/modules/ggnomad/index.js +1 -1
- package/dist/modules/govcitizenhub/index.cjs +14 -14
- package/dist/modules/govcitizenhub/index.cjs.map +1 -1
- package/dist/modules/govcitizenhub/index.js +1 -1
- package/dist/modules/groups/index.cjs +14 -14
- package/dist/modules/groups/index.cjs.map +1 -1
- package/dist/modules/groups/index.js +1 -1
- package/dist/modules/headshotmarketing/index.cjs +14 -14
- package/dist/modules/headshotmarketing/index.cjs.map +1 -1
- package/dist/modules/headshotmarketing/index.js +1 -1
- package/dist/modules/health/index.cjs +21 -19
- package/dist/modules/health/index.cjs.map +1 -1
- package/dist/modules/health/index.js +1 -1
- package/dist/modules/hookmovies/index.cjs +14 -14
- package/dist/modules/hookmovies/index.cjs.map +1 -1
- package/dist/modules/hookmovies/index.js +1 -1
- package/dist/modules/housingvista/index.cjs +14 -14
- package/dist/modules/housingvista/index.cjs.map +1 -1
- package/dist/modules/housingvista/index.js +1 -1
- package/dist/modules/integrations/index.cjs +14 -14
- package/dist/modules/integrations/index.cjs.map +1 -1
- package/dist/modules/integrations/index.js +1 -1
- package/dist/modules/intelwatchtower/index.cjs +14 -14
- package/dist/modules/intelwatchtower/index.cjs.map +1 -1
- package/dist/modules/intelwatchtower/index.js +1 -1
- package/dist/modules/kadaikodi/index.cjs +14 -14
- package/dist/modules/kadaikodi/index.cjs.map +1 -1
- package/dist/modules/kadaikodi/index.js +1 -1
- package/dist/modules/labsofscience/index.cjs +14 -14
- package/dist/modules/labsofscience/index.cjs.map +1 -1
- package/dist/modules/labsofscience/index.js +1 -1
- package/dist/modules/manufacturedops/index.cjs +14 -14
- package/dist/modules/manufacturedops/index.cjs.map +1 -1
- package/dist/modules/manufacturedops/index.js +1 -1
- package/dist/modules/movethewheels/index.cjs +14 -14
- package/dist/modules/movethewheels/index.cjs.map +1 -1
- package/dist/modules/movethewheels/index.js +1 -1
- package/dist/modules/mybodyshield/index.cjs +14 -14
- package/dist/modules/mybodyshield/index.cjs.map +1 -1
- package/dist/modules/mybodyshield/index.js +1 -1
- package/dist/modules/notifications/index.cjs +14 -14
- package/dist/modules/notifications/index.cjs.map +1 -1
- package/dist/modules/notifications/index.js +1 -1
- package/dist/modules/organizations/index.cjs +14 -14
- package/dist/modules/organizations/index.cjs.map +1 -1
- package/dist/modules/organizations/index.js +1 -1
- package/dist/modules/planmagnet/index.cjs +14 -14
- package/dist/modules/planmagnet/index.cjs.map +1 -1
- package/dist/modules/planmagnet/index.js +1 -1
- package/dist/modules/products/index.cjs +14 -14
- package/dist/modules/products/index.cjs.map +1 -1
- package/dist/modules/products/index.js +1 -1
- package/dist/modules/proserviceworld/index.cjs +14 -14
- package/dist/modules/proserviceworld/index.cjs.map +1 -1
- package/dist/modules/proserviceworld/index.js +1 -1
- package/dist/modules/rbac/index.cjs +14 -14
- package/dist/modules/rbac/index.cjs.map +1 -1
- package/dist/modules/rbac/index.js +1 -1
- package/dist/modules/sandbox/index.cjs +14 -14
- package/dist/modules/sandbox/index.cjs.map +1 -1
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs +14 -14
- package/dist/modules/scheduler/index.cjs.map +1 -1
- package/dist/modules/scheduler/index.js +1 -1
- package/dist/modules/security/index.cjs +14 -14
- package/dist/modules/security/index.cjs.map +1 -1
- package/dist/modules/security/index.js +1 -1
- package/dist/modules/semanticfed/index.cjs +14 -14
- package/dist/modules/semanticfed/index.cjs.map +1 -1
- package/dist/modules/semanticfed/index.js +1 -1
- package/dist/modules/store/index.cjs +14 -14
- package/dist/modules/store/index.cjs.map +1 -1
- package/dist/modules/store/index.js +1 -1
- package/dist/modules/subscriberbot/index.cjs +14 -14
- package/dist/modules/subscriberbot/index.cjs.map +1 -1
- package/dist/modules/subscriberbot/index.js +1 -1
- package/dist/modules/support/index.cjs +14 -14
- package/dist/modules/support/index.cjs.map +1 -1
- package/dist/modules/support/index.js +1 -1
- package/dist/modules/tags/index.cjs +14 -14
- package/dist/modules/tags/index.cjs.map +1 -1
- package/dist/modules/tags/index.js +1 -1
- package/dist/modules/technospam/index.cjs +14 -14
- package/dist/modules/technospam/index.cjs.map +1 -1
- package/dist/modules/technospam/index.js +1 -1
- package/dist/modules/theculturepost/index.cjs +14 -14
- package/dist/modules/theculturepost/index.cjs.map +1 -1
- package/dist/modules/theculturepost/index.js +1 -1
- package/dist/modules/theglobalfuel/index.cjs +14 -14
- package/dist/modules/theglobalfuel/index.cjs.map +1 -1
- package/dist/modules/theglobalfuel/index.js +1 -1
- package/dist/modules/timecampus/index.cjs +21 -16
- package/dist/modules/timecampus/index.cjs.map +1 -1
- package/dist/modules/timecampus/index.js +8 -3
- package/dist/modules/timecampus/index.js.map +1 -1
- package/dist/modules/tours/index.cjs +14 -14
- package/dist/modules/tours/index.cjs.map +1 -1
- package/dist/modules/tours/index.js +1 -1
- package/dist/modules/vibecontrols/index.cjs +35 -17
- package/dist/modules/vibecontrols/index.cjs.map +1 -1
- package/dist/modules/vibecontrols/index.js +23 -5
- package/dist/modules/vibecontrols/index.js.map +1 -1
- package/dist/modules/workspaces/index.cjs +14 -14
- package/dist/modules/workspaces/index.cjs.map +1 -1
- package/dist/modules/workspaces/index.js +1 -1
- package/dist/{tool-name-DlnrBsZ6.d.ts → tool-name-BaPNMZdj.d.ts} +17 -1
- package/dist/{tool-name-CQf_IqAj.d.cts → tool-name-Bvb36qmq.d.cts} +17 -1
- package/package.json +1 -1
- package/dist/chunk-H2OYWLOA.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -7,6 +7,7 @@ var graphqlRequest = require('graphql-request');
|
|
|
7
7
|
var fetch = require('cross-fetch');
|
|
8
8
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
9
9
|
var types_js = require('@modelcontextprotocol/sdk/types.js');
|
|
10
|
+
var zod = require('zod');
|
|
10
11
|
var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
11
12
|
var crypto = require('crypto');
|
|
12
13
|
var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
@@ -657,6 +658,97 @@ function toServerCapabilities(caps) {
|
|
|
657
658
|
return out;
|
|
658
659
|
}
|
|
659
660
|
|
|
661
|
+
// src/core/tool-name.ts
|
|
662
|
+
var MAX_TOOL_NAME_LENGTH = 63;
|
|
663
|
+
function assertSafeName(name, kind) {
|
|
664
|
+
if (name.length > MAX_TOOL_NAME_LENGTH) {
|
|
665
|
+
throw new McpInternalError(
|
|
666
|
+
`Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`
|
|
667
|
+
);
|
|
668
|
+
}
|
|
669
|
+
return name;
|
|
670
|
+
}
|
|
671
|
+
function mcpToolName(productName, ...parts) {
|
|
672
|
+
if (!productName) {
|
|
673
|
+
throw new McpInternalError("mcpToolName: productName is required");
|
|
674
|
+
}
|
|
675
|
+
const name = [productName, ...parts].filter(Boolean).join("_");
|
|
676
|
+
return assertSafeName(name);
|
|
677
|
+
}
|
|
678
|
+
function mcpResourceUri(productName, ...parts) {
|
|
679
|
+
if (!productName) {
|
|
680
|
+
throw new McpInternalError("mcpResourceUri: productName is required");
|
|
681
|
+
}
|
|
682
|
+
return `${productName}://${parts.filter(Boolean).join("/")}`;
|
|
683
|
+
}
|
|
684
|
+
function mcpPromptName(productName, ...parts) {
|
|
685
|
+
if (!productName) {
|
|
686
|
+
throw new McpInternalError("mcpPromptName: productName is required");
|
|
687
|
+
}
|
|
688
|
+
return [productName, ...parts].filter(Boolean).join("-");
|
|
689
|
+
}
|
|
690
|
+
var DESTRUCTIVE_NAME_SEGMENT = /(?:^|_)delete(?:_|$)/i;
|
|
691
|
+
var READ_ONLY_NAME_SEGMENT = /(?:^|_)(?:list|get|search|check|read|count|stats|by_date)(?:_|$)/i;
|
|
692
|
+
function inferDestructiveHint(toolName) {
|
|
693
|
+
return DESTRUCTIVE_NAME_SEGMENT.test(toolName);
|
|
694
|
+
}
|
|
695
|
+
function inferReadOnlyHint(toolName) {
|
|
696
|
+
return !inferDestructiveHint(toolName) && READ_ONLY_NAME_SEGMENT.test(toolName);
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
// src/core/tool-governance.ts
|
|
700
|
+
var CONFIRM_FIELD_DESCRIPTION = "Must be true to execute this destructive tool. The call is rejected (no changes made) if omitted or false.";
|
|
701
|
+
function resolveAnnotations(name, declared) {
|
|
702
|
+
const destructiveHint = declared?.destructiveHint ?? inferDestructiveHint(name);
|
|
703
|
+
const readOnlyHint = declared?.readOnlyHint ?? (destructiveHint ? false : inferReadOnlyHint(name));
|
|
704
|
+
return { ...declared, destructiveHint, readOnlyHint };
|
|
705
|
+
}
|
|
706
|
+
function unconfirmedDestructiveResult(name) {
|
|
707
|
+
return {
|
|
708
|
+
content: [
|
|
709
|
+
{
|
|
710
|
+
type: "text",
|
|
711
|
+
text: `'${name}' is a destructive action and was NOT executed. Re-call with confirm: true once you intend to proceed.`
|
|
712
|
+
}
|
|
713
|
+
],
|
|
714
|
+
isError: true
|
|
715
|
+
};
|
|
716
|
+
}
|
|
717
|
+
function wrapDestructiveHandler(name, handler) {
|
|
718
|
+
return async (...callbackArgs) => {
|
|
719
|
+
const hasArgs = callbackArgs.length === 2;
|
|
720
|
+
const rawArgs = hasArgs ? callbackArgs[0] : {};
|
|
721
|
+
if (rawArgs["confirm"] !== true) {
|
|
722
|
+
return unconfirmedDestructiveResult(name);
|
|
723
|
+
}
|
|
724
|
+
const forwardedArgs = { ...rawArgs };
|
|
725
|
+
delete forwardedArgs["confirm"];
|
|
726
|
+
const forwardedCallbackArgs = hasArgs ? [forwardedArgs, callbackArgs[1]] : callbackArgs;
|
|
727
|
+
return handler(...forwardedCallbackArgs);
|
|
728
|
+
};
|
|
729
|
+
}
|
|
730
|
+
function wrapServerWithToolGovernance(server, options = {}) {
|
|
731
|
+
const enforceConfirmation = options.enforceDestructiveConfirmation ?? false;
|
|
732
|
+
const target = server;
|
|
733
|
+
const originalRegisterTool = target.registerTool.bind(target);
|
|
734
|
+
target.registerTool = (name, config, handler) => {
|
|
735
|
+
const annotations = resolveAnnotations(name, config.annotations);
|
|
736
|
+
if (!enforceConfirmation || !annotations.destructiveHint) {
|
|
737
|
+
return originalRegisterTool(name, { ...config, annotations }, handler);
|
|
738
|
+
}
|
|
739
|
+
const gatedInputSchema = {
|
|
740
|
+
...config.inputSchema ?? {},
|
|
741
|
+
confirm: zod.z.boolean().optional().describe(CONFIRM_FIELD_DESCRIPTION)
|
|
742
|
+
};
|
|
743
|
+
return originalRegisterTool(
|
|
744
|
+
name,
|
|
745
|
+
{ ...config, inputSchema: gatedInputSchema, annotations },
|
|
746
|
+
wrapDestructiveHandler(name, handler)
|
|
747
|
+
);
|
|
748
|
+
};
|
|
749
|
+
return server;
|
|
750
|
+
}
|
|
751
|
+
|
|
660
752
|
// src/core/server.ts
|
|
661
753
|
var MCP_TO_LOGGER_LEVEL = {
|
|
662
754
|
debug: "debug",
|
|
@@ -680,6 +772,9 @@ function createMcpServer(ctx, modules, opts) {
|
|
|
680
772
|
{ name: opts.name, version: opts.version },
|
|
681
773
|
{ capabilities: toServerCapabilities(capabilities) }
|
|
682
774
|
);
|
|
775
|
+
wrapServerWithToolGovernance(server, {
|
|
776
|
+
enforceDestructiveConfirmation: opts.enforceDestructiveConfirmation
|
|
777
|
+
});
|
|
683
778
|
ctx._internal.serverRef.current = server;
|
|
684
779
|
const inner = server.server ?? server;
|
|
685
780
|
if (typeof inner.setRequestHandler === "function") {
|
|
@@ -754,7 +849,8 @@ function registerTool(server, ctx, name, metadata, handler) {
|
|
|
754
849
|
const sdkConfig = {
|
|
755
850
|
title: metadata.title,
|
|
756
851
|
description: metadata.description,
|
|
757
|
-
...metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}
|
|
852
|
+
...metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {},
|
|
853
|
+
...metadata.annotations ? { annotations: metadata.annotations } : {}
|
|
758
854
|
};
|
|
759
855
|
const wrapped = async (...callbackArgs) => {
|
|
760
856
|
const hasArgs = callbackArgs.length === 2;
|
|
@@ -805,36 +901,6 @@ function stringifyCause(cause) {
|
|
|
805
901
|
return String(cause);
|
|
806
902
|
}
|
|
807
903
|
}
|
|
808
|
-
|
|
809
|
-
// src/core/tool-name.ts
|
|
810
|
-
var MAX_TOOL_NAME_LENGTH = 63;
|
|
811
|
-
function assertSafeName(name, kind) {
|
|
812
|
-
if (name.length > MAX_TOOL_NAME_LENGTH) {
|
|
813
|
-
throw new McpInternalError(
|
|
814
|
-
`Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`
|
|
815
|
-
);
|
|
816
|
-
}
|
|
817
|
-
return name;
|
|
818
|
-
}
|
|
819
|
-
function mcpToolName(productName, ...parts) {
|
|
820
|
-
if (!productName) {
|
|
821
|
-
throw new McpInternalError("mcpToolName: productName is required");
|
|
822
|
-
}
|
|
823
|
-
const name = [productName, ...parts].filter(Boolean).join("_");
|
|
824
|
-
return assertSafeName(name);
|
|
825
|
-
}
|
|
826
|
-
function mcpResourceUri(productName, ...parts) {
|
|
827
|
-
if (!productName) {
|
|
828
|
-
throw new McpInternalError("mcpResourceUri: productName is required");
|
|
829
|
-
}
|
|
830
|
-
return `${productName}://${parts.filter(Boolean).join("/")}`;
|
|
831
|
-
}
|
|
832
|
-
function mcpPromptName(productName, ...parts) {
|
|
833
|
-
if (!productName) {
|
|
834
|
-
throw new McpInternalError("mcpPromptName: productName is required");
|
|
835
|
-
}
|
|
836
|
-
return [productName, ...parts].filter(Boolean).join("-");
|
|
837
|
-
}
|
|
838
904
|
async function startStdioServer(server, ctx, _opts = {}) {
|
|
839
905
|
ctx.logger.info("Starting MCP server with stdio transport", {
|
|
840
906
|
name: ctx.serverName,
|