@fleetx_io/fleetx-mcp-server 1.0.2 → 1.0.3
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/apiDiscovery.d.ts +1 -1
- package/dist/apiDiscovery.d.ts.map +1 -1
- package/dist/apiDiscovery.js +3 -9
- package/dist/apiDiscovery.js.map +1 -1
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +6 -13
- package/dist/auth.js.map +1 -1
- package/dist/index.js +9 -11
- package/dist/index.js.map +1 -1
- package/dist/mcpServer.d.ts +1 -1
- package/dist/mcpServer.d.ts.map +1 -1
- package/dist/mcpServer.js +20 -23
- package/dist/mcpServer.js.map +1 -1
- package/dist/proxyCaller.d.ts +1 -1
- package/dist/proxyCaller.d.ts.map +1 -1
- package/dist/proxyCaller.js +3 -9
- package/dist/proxyCaller.js.map +1 -1
- package/dist/schemaBuilder.d.ts +1 -1
- package/dist/schemaBuilder.d.ts.map +1 -1
- package/dist/schemaBuilder.js +8 -12
- package/dist/schemaBuilder.js.map +1 -1
- package/dist/toolGenerator.d.ts +1 -1
- package/dist/toolGenerator.d.ts.map +1 -1
- package/dist/toolGenerator.js +6 -9
- package/dist/toolGenerator.js.map +1 -1
- package/dist/types.js +1 -2
- package/dist/utils.js +3 -8
- package/dist/utils.js.map +1 -1
- package/package.json +2 -1
package/dist/apiDiscovery.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiDiscovery.d.ts","sourceRoot":"","sources":["../src/apiDiscovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"apiDiscovery.d.ts","sourceRoot":"","sources":["../src/apiDiscovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA6C9E"}
|
package/dist/apiDiscovery.js
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.fetchApiDefinitions = fetchApiDefinitions;
|
|
7
|
-
const axios_1 = __importDefault(require("axios"));
|
|
1
|
+
import axios from "axios";
|
|
8
2
|
/**
|
|
9
3
|
* Fetches API definitions from a protected endpoint.
|
|
10
4
|
* Requires a valid Bearer token in the token store.
|
|
11
5
|
*/
|
|
12
|
-
async function fetchApiDefinitions(apiDefinitionUrl, tokenStore) {
|
|
6
|
+
export async function fetchApiDefinitions(apiDefinitionUrl, tokenStore) {
|
|
13
7
|
const token = tokenStore.getToken();
|
|
14
8
|
if (!token) {
|
|
15
9
|
return { success: false, definitions: [], message: "Not authenticated. Call login first." };
|
|
16
10
|
}
|
|
17
11
|
try {
|
|
18
|
-
const response = await
|
|
12
|
+
const response = await axios.get(apiDefinitionUrl, {
|
|
19
13
|
headers: { Authorization: `Bearer ${token}` },
|
|
20
14
|
});
|
|
21
15
|
const data = response.data?.data;
|
package/dist/apiDiscovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiDiscovery.js","sourceRoot":"","sources":["../src/apiDiscovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apiDiscovery.js","sourceRoot":"","sources":["../src/apiDiscovery.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TokenStore } from "./types";
|
|
1
|
+
import { TokenStore } from "./types.js";
|
|
2
2
|
export declare function createTokenStore(): TokenStore;
|
|
3
3
|
export declare function login(loginUrl: string, username: string, password: string, tokenStore: TokenStore): Promise<{
|
|
4
4
|
success: boolean;
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,wBAAgB,gBAAgB,IAAI,UAAU,CAoB7C;AAED,wBAAsB,KAAK,CACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwChD"}
|
package/dist/auth.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createTokenStore = createTokenStore;
|
|
7
|
-
exports.login = login;
|
|
8
|
-
const axios_1 = __importDefault(require("axios"));
|
|
9
|
-
const utils_1 = require("./utils");
|
|
10
|
-
function createTokenStore() {
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import { log } from "./utils.js";
|
|
3
|
+
export function createTokenStore() {
|
|
11
4
|
let accessToken = null;
|
|
12
5
|
return {
|
|
13
6
|
get accessToken() {
|
|
@@ -27,14 +20,14 @@ function createTokenStore() {
|
|
|
27
20
|
},
|
|
28
21
|
};
|
|
29
22
|
}
|
|
30
|
-
async function login(loginUrl, username, password, tokenStore) {
|
|
23
|
+
export async function login(loginUrl, username, password, tokenStore) {
|
|
31
24
|
try {
|
|
32
25
|
const formData = new FormData();
|
|
33
26
|
formData.append("grant_type", "password");
|
|
34
27
|
formData.append("username", username);
|
|
35
28
|
formData.append("password", password);
|
|
36
|
-
|
|
37
|
-
const response = await
|
|
29
|
+
log("Login attempt for user:", username, "to URL:", loginUrl);
|
|
30
|
+
const response = await axios.post(loginUrl, formData, {
|
|
38
31
|
headers: {
|
|
39
32
|
clientId: "fleetxMcpClient",
|
|
40
33
|
},
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,UAAU,gBAAgB;IAC9B,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,OAAO;QACL,IAAI,WAAW;YACb,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,QAAQ,CAAC,KAAa;YACpB,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,QAAQ;YACN,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,UAAU;YACR,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,eAAe;YACb,OAAO,WAAW,KAAK,IAAI,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,UAAsB;IAEtB,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC1C,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;YACpD,OAAO,EAAE;gBACP,QAAQ,EAAE,iBAAiB;aAC5B;SACF,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;QAGzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,wDAAwD;aAClE,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC;IAClF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,GAAiB,CAAC;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;QACrC,MAAM,MAAM,GACV,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI;YAC5D,CAAC,CAAE,IAA4B,CAAC,OAAO;YACvC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,sBAAsB,MAAM,MAAM,MAAM,EAAE;SACpD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
2
|
// Node will treat it as executable.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const utils_1 = require("./utils");
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { createMcpServer } from "./mcpServer.js";
|
|
5
|
+
import { createTokenStore } from "./auth.js";
|
|
6
|
+
import { log } from "./utils.js";
|
|
9
7
|
async function main() {
|
|
10
|
-
const tokenStore =
|
|
11
|
-
const server =
|
|
12
|
-
const transport = new
|
|
8
|
+
const tokenStore = createTokenStore();
|
|
9
|
+
const server = createMcpServer(tokenStore);
|
|
10
|
+
const transport = new StdioServerTransport();
|
|
13
11
|
await server.connect(transport);
|
|
14
|
-
|
|
12
|
+
log("Running on stdio");
|
|
15
13
|
}
|
|
16
14
|
main().catch((err) => {
|
|
17
|
-
|
|
15
|
+
log("Fatal error:", err);
|
|
18
16
|
process.exit(1);
|
|
19
17
|
});
|
|
20
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,oCAAoC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC1B,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/mcpServer.d.ts
CHANGED
package/dist/mcpServer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpServer.d.ts","sourceRoot":"","sources":["../src/mcpServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAiB,MAAM,
|
|
1
|
+
{"version":3,"file":"mcpServer.d.ts","sourceRoot":"","sources":["../src/mcpServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAMvD;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CASjE"}
|
package/dist/mcpServer.js
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const apiDiscovery_1 = require("./apiDiscovery");
|
|
8
|
-
const toolGenerator_1 = require("./toolGenerator");
|
|
9
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { login } from "./auth.js";
|
|
4
|
+
import { fetchApiDefinitions } from "./apiDiscovery.js";
|
|
5
|
+
import { generateTools } from "./toolGenerator.js";
|
|
6
|
+
import { log, getLoginURL, getAPIDefinitionURL } from "./utils.js";
|
|
10
7
|
/**
|
|
11
8
|
* Creates and configures the McpServer instance with login + dynamic tools.
|
|
12
9
|
*/
|
|
13
|
-
function createMcpServer(tokenStore) {
|
|
14
|
-
const mcp = new
|
|
10
|
+
export function createMcpServer(tokenStore) {
|
|
11
|
+
const mcp = new McpServer({ name: "fleetx-mcp-server", version: "1.0.0" }, { capabilities: { tools: {} } });
|
|
15
12
|
registerLoginTool(mcp, tokenStore);
|
|
16
13
|
return mcp;
|
|
17
14
|
}
|
|
18
15
|
function registerLoginTool(mcp, tokenStore) {
|
|
19
16
|
mcp.tool("login", "Authenticate with the FleetX API. Must be called before any other tool.", {
|
|
20
|
-
username:
|
|
21
|
-
password:
|
|
17
|
+
username: z.string().describe("Login username"),
|
|
18
|
+
password: z.string().describe("Login password"),
|
|
22
19
|
}, async ({ username, password }) => {
|
|
23
|
-
const result = await
|
|
20
|
+
const result = await login(getLoginURL(), username, password, tokenStore);
|
|
24
21
|
if (!result.success) {
|
|
25
22
|
return {
|
|
26
23
|
content: [{ type: "text", text: result.message }],
|
|
27
24
|
isError: true,
|
|
28
25
|
};
|
|
29
26
|
}
|
|
30
|
-
const discoveryResult = await
|
|
27
|
+
const discoveryResult = await fetchApiDefinitions(getAPIDefinitionURL(), tokenStore);
|
|
31
28
|
if (!discoveryResult.success) {
|
|
32
29
|
return {
|
|
33
30
|
content: [
|
|
@@ -65,7 +62,7 @@ function registerDynamicTools(mcp, definitions, tokenStore) {
|
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
64
|
registeredDynamicTools = [];
|
|
68
|
-
const tools =
|
|
65
|
+
const tools = generateTools(definitions, tokenStore);
|
|
69
66
|
const registeredNames = [];
|
|
70
67
|
for (const tool of tools) {
|
|
71
68
|
if (tool.name === "login")
|
|
@@ -83,16 +80,16 @@ function registerDynamicTools(mcp, definitions, tokenStore) {
|
|
|
83
80
|
registeredNames.push(tool.name);
|
|
84
81
|
}
|
|
85
82
|
catch (err) {
|
|
86
|
-
|
|
83
|
+
log(`Failed to register tool "${tool.name}":`, err);
|
|
87
84
|
}
|
|
88
85
|
}
|
|
89
86
|
try {
|
|
90
87
|
mcp.sendToolListChanged();
|
|
91
88
|
}
|
|
92
89
|
catch (err) {
|
|
93
|
-
|
|
90
|
+
log("sendToolListChanged failed:", err);
|
|
94
91
|
}
|
|
95
|
-
|
|
92
|
+
log(`Registered ${registeredNames.length} dynamic tool(s): ${registeredNames.join(", ")}`);
|
|
96
93
|
return registeredNames;
|
|
97
94
|
}
|
|
98
95
|
/**
|
|
@@ -104,17 +101,17 @@ function jsonSchemaPropertyToZod(prop, required) {
|
|
|
104
101
|
let schema;
|
|
105
102
|
switch (p.type) {
|
|
106
103
|
case "boolean":
|
|
107
|
-
schema =
|
|
104
|
+
schema = z.boolean();
|
|
108
105
|
break;
|
|
109
106
|
case "number":
|
|
110
|
-
schema =
|
|
107
|
+
schema = z.number();
|
|
111
108
|
break;
|
|
112
109
|
case "array":
|
|
113
|
-
schema =
|
|
110
|
+
schema = z.array(z.string());
|
|
114
111
|
break;
|
|
115
112
|
case "string":
|
|
116
113
|
default:
|
|
117
|
-
schema =
|
|
114
|
+
schema = z.string();
|
|
118
115
|
break;
|
|
119
116
|
}
|
|
120
117
|
if (typeof p.description === "string") {
|
package/dist/mcpServer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpServer.js","sourceRoot":"","sources":["../src/mcpServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcpServer.js","sourceRoot":"","sources":["../src/mcpServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEnE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAsB;IACpD,MAAM,GAAG,GAAG,IAAI,SAAS,CACvB,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC/C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAc,EAAE,UAAsB;IAC/D,GAAG,CAAC,IAAI,CACN,OAAO,EACP,yEAAyE,EACzE;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KAChD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE1E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC1D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,mBAAmB,EAAE,EAAE,UAAU,CAAC,CAAC;QAErF,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wDAAwD,eAAe,CAAC,OAAO,EAAE;qBACxF;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAErF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,MAAM,CAAC,OAAO;wBACd,eAAe,CAAC,OAAO;wBACvB,cAAc,SAAS,CAAC,MAAM,aAAa,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAClE,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,IAAI,sBAAsB,GAAoC,EAAE,CAAC;AAEjE,SAAS,oBAAoB,CAC3B,GAAc,EACd,WAA4B,EAC5B,UAAsB;IAEtB,KAAK,MAAM,EAAE,IAAI,sBAAsB,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;IACD,sBAAsB,GAAG,EAAE,CAAC;IAE5B,MAAM,KAAK,GAAoB,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACtE,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,SAAS;QACpC,MAAM,KAAK,GAAiC,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5E,KAAK,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,UAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACtG,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CACzB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,KAAK,EACL,KAAK,EAAE,IAAI,EAAE,EAAE;gBACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAA+B,CAAC,CAAC;gBACnE,OAAO,MAAM,CAAC;YAChB,CAAC,CACF,CAAC;YACF,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,4BAA4B,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAAC,cAAc,eAAe,CAAC,MAAM,qBAAqB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,IAAY,EAAE,QAAiB;IAC9D,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,IAAI,MAAoB,CAAC;IAEzB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,OAAO;YACV,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,QAAQ,CAAC;QACd;YACE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM;IACV,CAAC;IAED,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC"}
|
package/dist/proxyCaller.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyCaller.d.ts","sourceRoot":"","sources":["../src/proxyCaller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"proxyCaller.d.ts","sourceRoot":"","sources":["../src/proxyCaller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiCvD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAuE5C"}
|
package/dist/proxyCaller.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.proxyCall = proxyCall;
|
|
7
|
-
const axios_1 = __importDefault(require("axios"));
|
|
1
|
+
import axios from "axios";
|
|
8
2
|
/**
|
|
9
3
|
* Constructs the full URL by replacing path parameters and appending query parameters.
|
|
10
4
|
*/
|
|
@@ -31,7 +25,7 @@ function buildUrl(baseDomain, pathTemplate, pathParams, queryParams) {
|
|
|
31
25
|
/**
|
|
32
26
|
* Executes a proxied API call to the external service.
|
|
33
27
|
*/
|
|
34
|
-
async function proxyCall(apiDef, inputArgs, tokenStore) {
|
|
28
|
+
export async function proxyCall(apiDef, inputArgs, tokenStore) {
|
|
35
29
|
const token = tokenStore.getToken();
|
|
36
30
|
if (!token && apiDef.authType === "Bearer") {
|
|
37
31
|
throw new Error("Not authenticated. Call login first.");
|
|
@@ -75,7 +69,7 @@ async function proxyCall(apiDef, inputArgs, tokenStore) {
|
|
|
75
69
|
config.data = bodyValues;
|
|
76
70
|
}
|
|
77
71
|
try {
|
|
78
|
-
const response = await (
|
|
72
|
+
const response = await axios(config);
|
|
79
73
|
return { status: response.status, data: response.data };
|
|
80
74
|
}
|
|
81
75
|
catch (err) {
|
package/dist/proxyCaller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyCaller.js","sourceRoot":"","sources":["../src/proxyCaller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxyCaller.js","sourceRoot":"","sources":["../src/proxyCaller.ts"],"names":[],"mappings":"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"}
|
package/dist/schemaBuilder.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z, ZodTypeAny } from "zod";
|
|
2
|
-
import { ApiParamDefinition } from "./types";
|
|
2
|
+
import { ApiParamDefinition } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Builds a Zod object schema from a flat list of parameter definitions.
|
|
5
5
|
* Returns both the ZodObject and a JSON-Schema-compatible shape for MCP tool registration.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaBuilder.d.ts","sourceRoot":"","sources":["../src/schemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"schemaBuilder.d.ts","sourceRoot":"","sources":["../src/schemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA4BhD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAQpG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG;IAChE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAiCA"}
|
package/dist/schemaBuilder.js
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildZodSchema = buildZodSchema;
|
|
4
|
-
exports.paramsToJsonSchema = paramsToJsonSchema;
|
|
5
|
-
const zod_1 = require("zod");
|
|
1
|
+
import { z } from "zod";
|
|
6
2
|
function primitiveToZod(param) {
|
|
7
3
|
let schema;
|
|
8
4
|
switch (param.type) {
|
|
9
5
|
case "boolean":
|
|
10
|
-
schema =
|
|
6
|
+
schema = z.boolean();
|
|
11
7
|
break;
|
|
12
8
|
case "number":
|
|
13
|
-
schema =
|
|
9
|
+
schema = z.number();
|
|
14
10
|
break;
|
|
15
11
|
case "array":
|
|
16
|
-
schema =
|
|
12
|
+
schema = z.array(z.string());
|
|
17
13
|
break;
|
|
18
14
|
case "string":
|
|
19
15
|
default:
|
|
20
|
-
schema =
|
|
16
|
+
schema = z.string();
|
|
21
17
|
break;
|
|
22
18
|
}
|
|
23
19
|
if (param.description) {
|
|
@@ -29,18 +25,18 @@ function primitiveToZod(param) {
|
|
|
29
25
|
* Builds a Zod object schema from a flat list of parameter definitions.
|
|
30
26
|
* Returns both the ZodObject and a JSON-Schema-compatible shape for MCP tool registration.
|
|
31
27
|
*/
|
|
32
|
-
function buildZodSchema(params) {
|
|
28
|
+
export function buildZodSchema(params) {
|
|
33
29
|
const shape = {};
|
|
34
30
|
for (const param of params) {
|
|
35
31
|
shape[param.name] = primitiveToZod(param);
|
|
36
32
|
}
|
|
37
|
-
return
|
|
33
|
+
return z.object(shape);
|
|
38
34
|
}
|
|
39
35
|
/**
|
|
40
36
|
* Converts a flat param list into a JSON Schema `properties` + `required` object
|
|
41
37
|
* suitable for MCP tool inputSchema registration.
|
|
42
38
|
*/
|
|
43
|
-
function paramsToJsonSchema(params) {
|
|
39
|
+
export function paramsToJsonSchema(params) {
|
|
44
40
|
const properties = {};
|
|
45
41
|
const required = [];
|
|
46
42
|
for (const param of params) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaBuilder.js","sourceRoot":"","sources":["../src/schemaBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schemaBuilder.js","sourceRoot":"","sources":["../src/schemaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAc,MAAM,KAAK,CAAC;AAGpC,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,MAAkB,CAAC;IAEvB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,OAAO;YACV,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,QAAQ,CAAC;QACd;YACE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM;IACV,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAA4B;IACzD,MAAM,KAAK,GAA+B,EAAE,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA4B;IAK7D,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAA4B,EAAE,CAAC;QAEzC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS;gBACZ,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;gBACtB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACrB,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACpB,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAChC,MAAM;YACR,KAAK,QAAQ,CAAC;YACd;gBACE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACrB,MAAM;QACV,CAAC;QAED,IAAI,KAAK,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAC5D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE9D,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAE9B,IAAI,KAAK,CAAC,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC"}
|
package/dist/toolGenerator.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolGenerator.d.ts","sourceRoot":"","sources":["../src/toolGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsB,UAAU,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"toolGenerator.d.ts","sourceRoot":"","sources":["../src/toolGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsB,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIjG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC3E;AAgHD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,cAAc,EAAE,aAAa,EAAE,EAC/B,UAAU,EAAE,UAAU,GACrB,aAAa,EAAE,CAEjB"}
|
package/dist/toolGenerator.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.generateTools = generateTools;
|
|
4
|
-
const schemaBuilder_1 = require("./schemaBuilder");
|
|
5
|
-
const proxyCaller_1 = require("./proxyCaller");
|
|
1
|
+
import { buildZodSchema, paramsToJsonSchema } from "./schemaBuilder.js";
|
|
2
|
+
import { proxyCall } from "./proxyCaller.js";
|
|
6
3
|
/**
|
|
7
4
|
* Convert an API name like "Get Vehicle Location" to "get_vehicle_location".
|
|
8
5
|
*/
|
|
@@ -39,8 +36,8 @@ function mergeParams(apiDef) {
|
|
|
39
36
|
*/
|
|
40
37
|
function generateTool(apiDef, tokenStore) {
|
|
41
38
|
const allParams = mergeParams(apiDef);
|
|
42
|
-
const zodSchema =
|
|
43
|
-
const jsonSchema =
|
|
39
|
+
const zodSchema = buildZodSchema(allParams);
|
|
40
|
+
const jsonSchema = paramsToJsonSchema(allParams);
|
|
44
41
|
const toolName = toSnakeCase(apiDef.name);
|
|
45
42
|
const handler = async (rawArgs) => {
|
|
46
43
|
if (!tokenStore.isAuthenticated()) {
|
|
@@ -63,7 +60,7 @@ function generateTool(apiDef, tokenStore) {
|
|
|
63
60
|
};
|
|
64
61
|
}
|
|
65
62
|
try {
|
|
66
|
-
const result = await
|
|
63
|
+
const result = await proxyCall(apiDef, validation.data, tokenStore);
|
|
67
64
|
if (result.status === 401 || result.status === 403) {
|
|
68
65
|
return {
|
|
69
66
|
content: [
|
|
@@ -102,7 +99,7 @@ function generateTool(apiDef, tokenStore) {
|
|
|
102
99
|
/**
|
|
103
100
|
* Generates MCP tools for all API definitions.
|
|
104
101
|
*/
|
|
105
|
-
function generateTools(apiDefinitions, tokenStore) {
|
|
102
|
+
export function generateTools(apiDefinitions, tokenStore) {
|
|
106
103
|
return apiDefinitions.map((def) => generateTool(def, tokenStore));
|
|
107
104
|
}
|
|
108
105
|
//# sourceMappingURL=toolGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolGenerator.js","sourceRoot":"","sources":["../src/toolGenerator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toolGenerator.js","sourceRoot":"","sources":["../src/toolGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
package/dist/utils.js
CHANGED
|
@@ -1,20 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.log = log;
|
|
4
|
-
exports.getAPIDefinitionURL = getAPIDefinitionURL;
|
|
5
|
-
exports.getLoginURL = getLoginURL;
|
|
6
1
|
/**
|
|
7
2
|
* All logging goes to stderr so stdout stays clean for the stdio JSON-RPC transport.
|
|
8
3
|
* Use log() everywhere instead of console.log / console.error.
|
|
9
4
|
*/
|
|
10
|
-
function log(...args) {
|
|
5
|
+
export function log(...args) {
|
|
11
6
|
const msg = args.map((a) => (typeof a === "string" ? a : JSON.stringify(a))).join(" ");
|
|
12
7
|
console.error(`[FleetX MCP] ${msg}`);
|
|
13
8
|
}
|
|
14
|
-
function getAPIDefinitionURL() {
|
|
9
|
+
export function getAPIDefinitionURL() {
|
|
15
10
|
return process.env.API_DEFINITION_URL ?? "https://app.fleetx.io/napp/api-reference/apis";
|
|
16
11
|
}
|
|
17
|
-
function getLoginURL() {
|
|
12
|
+
export function getLoginURL() {
|
|
18
13
|
return process.env.LOGIN_URL ?? "https://api.fleetx.io/api/v1/login";
|
|
19
14
|
}
|
|
20
15
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,GAAG,IAAe;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvF,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;AAEvC,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAmB,IAAI,+CAA+C,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,SAAU,IAAI,oCAAoC,CAAC;AACxE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fleetx_io/fleetx-mcp-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "MCP server that gives AI agents access to the FleetX REST API. Works with Cursor, Claude Desktop, Windsurf, and any MCP-compatible client.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
7
8
|
"bin": {
|
|
8
9
|
"fleetx-mcp-server": "dist/index.js"
|