@linqapp/sdk-mcp 0.19.0

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.
Files changed (153) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +101 -0
  3. package/auth.d.mts +6 -0
  4. package/auth.d.mts.map +1 -0
  5. package/auth.d.ts +6 -0
  6. package/auth.d.ts.map +1 -0
  7. package/auth.js +37 -0
  8. package/auth.js.map +1 -0
  9. package/auth.mjs +32 -0
  10. package/auth.mjs.map +1 -0
  11. package/code-tool-paths.cjs +8 -0
  12. package/code-tool-paths.cjs.map +1 -0
  13. package/code-tool-paths.d.cts +2 -0
  14. package/code-tool-paths.d.cts.map +1 -0
  15. package/code-tool-types.d.mts +14 -0
  16. package/code-tool-types.d.mts.map +1 -0
  17. package/code-tool-types.d.ts +14 -0
  18. package/code-tool-types.d.ts.map +1 -0
  19. package/code-tool-types.js +4 -0
  20. package/code-tool-types.js.map +1 -0
  21. package/code-tool-types.mjs +3 -0
  22. package/code-tool-types.mjs.map +1 -0
  23. package/code-tool-worker.d.mts +5 -0
  24. package/code-tool-worker.d.mts.map +1 -0
  25. package/code-tool-worker.d.ts +5 -0
  26. package/code-tool-worker.d.ts.map +1 -0
  27. package/code-tool-worker.js +301 -0
  28. package/code-tool-worker.js.map +1 -0
  29. package/code-tool-worker.mjs +263 -0
  30. package/code-tool-worker.mjs.map +1 -0
  31. package/code-tool.d.mts +21 -0
  32. package/code-tool.d.mts.map +1 -0
  33. package/code-tool.d.ts +21 -0
  34. package/code-tool.d.ts.map +1 -0
  35. package/code-tool.js +341 -0
  36. package/code-tool.js.map +1 -0
  37. package/code-tool.mjs +305 -0
  38. package/code-tool.mjs.map +1 -0
  39. package/docs-search-tool.d.mts +59 -0
  40. package/docs-search-tool.d.mts.map +1 -0
  41. package/docs-search-tool.d.ts +59 -0
  42. package/docs-search-tool.d.ts.map +1 -0
  43. package/docs-search-tool.js +104 -0
  44. package/docs-search-tool.js.map +1 -0
  45. package/docs-search-tool.mjs +99 -0
  46. package/docs-search-tool.mjs.map +1 -0
  47. package/http.d.mts +12 -0
  48. package/http.d.mts.map +1 -0
  49. package/http.d.ts +12 -0
  50. package/http.d.ts.map +1 -0
  51. package/http.js +190 -0
  52. package/http.js.map +1 -0
  53. package/http.mjs +182 -0
  54. package/http.mjs.map +1 -0
  55. package/index.d.mts +3 -0
  56. package/index.d.mts.map +1 -0
  57. package/index.d.ts +3 -0
  58. package/index.d.ts.map +1 -0
  59. package/index.js +60 -0
  60. package/index.js.map +1 -0
  61. package/index.mjs +58 -0
  62. package/index.mjs.map +1 -0
  63. package/instructions.d.mts +5 -0
  64. package/instructions.d.mts.map +1 -0
  65. package/instructions.d.ts +5 -0
  66. package/instructions.d.ts.map +1 -0
  67. package/instructions.js +61 -0
  68. package/instructions.js.map +1 -0
  69. package/instructions.mjs +55 -0
  70. package/instructions.mjs.map +1 -0
  71. package/local-docs-search.d.mts +28 -0
  72. package/local-docs-search.d.mts.map +1 -0
  73. package/local-docs-search.d.ts +28 -0
  74. package/local-docs-search.d.ts.map +1 -0
  75. package/local-docs-search.js +1339 -0
  76. package/local-docs-search.js.map +1 -0
  77. package/local-docs-search.mjs +1299 -0
  78. package/local-docs-search.mjs.map +1 -0
  79. package/logger.d.mts +7 -0
  80. package/logger.d.mts.map +1 -0
  81. package/logger.d.ts +7 -0
  82. package/logger.d.ts.map +1 -0
  83. package/logger.js +29 -0
  84. package/logger.js.map +1 -0
  85. package/logger.mjs +22 -0
  86. package/logger.mjs.map +1 -0
  87. package/methods.d.mts +10 -0
  88. package/methods.d.mts.map +1 -0
  89. package/methods.d.ts +10 -0
  90. package/methods.d.ts.map +1 -0
  91. package/methods.js +270 -0
  92. package/methods.js.map +1 -0
  93. package/methods.mjs +266 -0
  94. package/methods.mjs.map +1 -0
  95. package/options.d.mts +23 -0
  96. package/options.d.mts.map +1 -0
  97. package/options.d.ts +23 -0
  98. package/options.d.ts.map +1 -0
  99. package/options.js +141 -0
  100. package/options.js.map +1 -0
  101. package/options.mjs +134 -0
  102. package/options.mjs.map +1 -0
  103. package/package.json +236 -0
  104. package/server.d.mts +38 -0
  105. package/server.d.mts.map +1 -0
  106. package/server.d.ts +38 -0
  107. package/server.d.ts.map +1 -0
  108. package/server.js +168 -0
  109. package/server.js.map +1 -0
  110. package/server.mjs +158 -0
  111. package/server.mjs.map +1 -0
  112. package/src/auth.ts +42 -0
  113. package/src/code-tool-paths.cts +5 -0
  114. package/src/code-tool-types.ts +17 -0
  115. package/src/code-tool-worker.ts +314 -0
  116. package/src/code-tool.ts +398 -0
  117. package/src/docs-search-tool.ts +138 -0
  118. package/src/http.ts +227 -0
  119. package/src/index.ts +67 -0
  120. package/src/instructions.ts +83 -0
  121. package/src/local-docs-search.ts +1583 -0
  122. package/src/logger.ts +28 -0
  123. package/src/methods.ts +291 -0
  124. package/src/options.ts +185 -0
  125. package/src/server.ts +208 -0
  126. package/src/stdio.ts +17 -0
  127. package/src/tsconfig.json +11 -0
  128. package/src/types.ts +126 -0
  129. package/src/util.ts +25 -0
  130. package/stdio.d.mts +3 -0
  131. package/stdio.d.mts.map +1 -0
  132. package/stdio.d.ts +3 -0
  133. package/stdio.d.ts.map +1 -0
  134. package/stdio.js +18 -0
  135. package/stdio.js.map +1 -0
  136. package/stdio.mjs +14 -0
  137. package/stdio.mjs.map +1 -0
  138. package/types.d.mts +65 -0
  139. package/types.d.mts.map +1 -0
  140. package/types.d.ts +65 -0
  141. package/types.d.ts.map +1 -0
  142. package/types.js +58 -0
  143. package/types.js.map +1 -0
  144. package/types.mjs +53 -0
  145. package/types.mjs.map +1 -0
  146. package/util.d.mts +4 -0
  147. package/util.d.mts.map +1 -0
  148. package/util.d.ts +4 -0
  149. package/util.d.ts.map +1 -0
  150. package/util.js +30 -0
  151. package/util.js.map +1 -0
  152. package/util.mjs +24 -0
  153. package/util.mjs.map +1 -0
package/package.json ADDED
@@ -0,0 +1,236 @@
1
+ {
2
+ "name": "@linqapp/sdk-mcp",
3
+ "version": "0.19.0",
4
+ "description": "The official MCP Server for the Linq API V3 API",
5
+ "author": "Linq API V3 <support@linq.com>",
6
+ "types": "./index.d.ts",
7
+ "main": "./index.js",
8
+ "type": "commonjs",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/linq-team/linq-node.git",
12
+ "directory": "packages/mcp-server"
13
+ },
14
+ "homepage": "https://github.com/linq-team/linq-node/tree/main/packages/mcp-server#readme",
15
+ "license": "Apache-2.0",
16
+ "packageManager": "pnpm@10.30.1",
17
+ "private": false,
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "scripts": {
22
+ "test": "jest",
23
+ "build": "bash ./build",
24
+ "format": "prettier --write --cache --cache-strategy metadata . !dist",
25
+ "tsn": "ts-node -r tsconfig-paths/register",
26
+ "lint": "eslint .",
27
+ "fix": "eslint --fix ."
28
+ },
29
+ "dependencies": {
30
+ "@linqapp/sdk": "^0.19.0",
31
+ "ajv": "^8.18.0",
32
+ "@cloudflare/cabidela": "^0.2.4",
33
+ "@hono/node-server": "^1.19.10",
34
+ "@modelcontextprotocol/sdk": "^1.27.1",
35
+ "hono": "^4.12.4",
36
+ "@valtown/deno-http-worker": "^0.0.21",
37
+ "cookie-parser": "^1.4.6",
38
+ "cors": "^2.8.5",
39
+ "express": "^5.1.0",
40
+ "fuse.js": "^7.1.0",
41
+ "minisearch": "^7.2.0",
42
+ "jq-web": "https://github.com/stainless-api/jq-web/releases/download/v0.8.8/jq-web.tar.gz",
43
+ "pino": "^10.3.1",
44
+ "pino-http": "^11.0.0",
45
+ "pino-pretty": "^13.1.3",
46
+ "qs": "^6.14.1",
47
+ "typescript": "5.8.3",
48
+ "yargs": "^17.7.2",
49
+ "zod": "^3.25.20",
50
+ "zod-to-json-schema": "^3.24.5",
51
+ "zod-validation-error": "^4.0.1"
52
+ },
53
+ "bin": {
54
+ "mcp-server": "./index.js"
55
+ },
56
+ "imports": {
57
+ "@linqapp/sdk-mcp": ".",
58
+ "@linqapp/sdk-mcp/*": "./src/*"
59
+ },
60
+ "exports": {
61
+ ".": {
62
+ "require": {
63
+ "types": "./index.d.ts",
64
+ "default": "./index.js"
65
+ },
66
+ "types": "./index.d.mts",
67
+ "default": "./index.mjs"
68
+ },
69
+ "./auth": {
70
+ "import": "./auth.mjs",
71
+ "require": "./auth.js"
72
+ },
73
+ "./auth.js": {
74
+ "default": "./auth.js"
75
+ },
76
+ "./auth.mjs": {
77
+ "default": "./auth.mjs"
78
+ },
79
+ "./code-tool-paths": {
80
+ "require": "./code-tool-paths.cjs"
81
+ },
82
+ "./code-tool-paths.cjs": {
83
+ "default": "./code-tool-paths.cjs"
84
+ },
85
+ "./code-tool-types": {
86
+ "import": "./code-tool-types.mjs",
87
+ "require": "./code-tool-types.js"
88
+ },
89
+ "./code-tool-types.js": {
90
+ "default": "./code-tool-types.js"
91
+ },
92
+ "./code-tool-types.mjs": {
93
+ "default": "./code-tool-types.mjs"
94
+ },
95
+ "./code-tool-worker": {
96
+ "import": "./code-tool-worker.mjs",
97
+ "require": "./code-tool-worker.js"
98
+ },
99
+ "./code-tool-worker.js": {
100
+ "default": "./code-tool-worker.js"
101
+ },
102
+ "./code-tool-worker.mjs": {
103
+ "default": "./code-tool-worker.mjs"
104
+ },
105
+ "./code-tool": {
106
+ "import": "./code-tool.mjs",
107
+ "require": "./code-tool.js"
108
+ },
109
+ "./code-tool.js": {
110
+ "default": "./code-tool.js"
111
+ },
112
+ "./code-tool.mjs": {
113
+ "default": "./code-tool.mjs"
114
+ },
115
+ "./docs-search-tool": {
116
+ "import": "./docs-search-tool.mjs",
117
+ "require": "./docs-search-tool.js"
118
+ },
119
+ "./docs-search-tool.js": {
120
+ "default": "./docs-search-tool.js"
121
+ },
122
+ "./docs-search-tool.mjs": {
123
+ "default": "./docs-search-tool.mjs"
124
+ },
125
+ "./http": {
126
+ "import": "./http.mjs",
127
+ "require": "./http.js"
128
+ },
129
+ "./http.js": {
130
+ "default": "./http.js"
131
+ },
132
+ "./http.mjs": {
133
+ "default": "./http.mjs"
134
+ },
135
+ "./index": {
136
+ "import": "./index.mjs",
137
+ "require": "./index.js"
138
+ },
139
+ "./index.js": {
140
+ "default": "./index.js"
141
+ },
142
+ "./index.mjs": {
143
+ "default": "./index.mjs"
144
+ },
145
+ "./instructions": {
146
+ "import": "./instructions.mjs",
147
+ "require": "./instructions.js"
148
+ },
149
+ "./instructions.js": {
150
+ "default": "./instructions.js"
151
+ },
152
+ "./instructions.mjs": {
153
+ "default": "./instructions.mjs"
154
+ },
155
+ "./local-docs-search": {
156
+ "import": "./local-docs-search.mjs",
157
+ "require": "./local-docs-search.js"
158
+ },
159
+ "./local-docs-search.js": {
160
+ "default": "./local-docs-search.js"
161
+ },
162
+ "./local-docs-search.mjs": {
163
+ "default": "./local-docs-search.mjs"
164
+ },
165
+ "./logger": {
166
+ "import": "./logger.mjs",
167
+ "require": "./logger.js"
168
+ },
169
+ "./logger.js": {
170
+ "default": "./logger.js"
171
+ },
172
+ "./logger.mjs": {
173
+ "default": "./logger.mjs"
174
+ },
175
+ "./methods": {
176
+ "import": "./methods.mjs",
177
+ "require": "./methods.js"
178
+ },
179
+ "./methods.js": {
180
+ "default": "./methods.js"
181
+ },
182
+ "./methods.mjs": {
183
+ "default": "./methods.mjs"
184
+ },
185
+ "./options": {
186
+ "import": "./options.mjs",
187
+ "require": "./options.js"
188
+ },
189
+ "./options.js": {
190
+ "default": "./options.js"
191
+ },
192
+ "./options.mjs": {
193
+ "default": "./options.mjs"
194
+ },
195
+ "./server": {
196
+ "import": "./server.mjs",
197
+ "require": "./server.js"
198
+ },
199
+ "./server.js": {
200
+ "default": "./server.js"
201
+ },
202
+ "./server.mjs": {
203
+ "default": "./server.mjs"
204
+ },
205
+ "./stdio": {
206
+ "import": "./stdio.mjs",
207
+ "require": "./stdio.js"
208
+ },
209
+ "./stdio.js": {
210
+ "default": "./stdio.js"
211
+ },
212
+ "./stdio.mjs": {
213
+ "default": "./stdio.mjs"
214
+ },
215
+ "./types": {
216
+ "import": "./types.mjs",
217
+ "require": "./types.js"
218
+ },
219
+ "./types.js": {
220
+ "default": "./types.js"
221
+ },
222
+ "./types.mjs": {
223
+ "default": "./types.mjs"
224
+ },
225
+ "./util": {
226
+ "import": "./util.mjs",
227
+ "require": "./util.js"
228
+ },
229
+ "./util.js": {
230
+ "default": "./util.js"
231
+ },
232
+ "./util.mjs": {
233
+ "default": "./util.mjs"
234
+ }
235
+ }
236
+ }
package/server.d.mts ADDED
@@ -0,0 +1,38 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { ClientOptions } from '@linqapp/sdk';
4
+ import { McpOptions } from "./options.mjs";
5
+ import { HandlerFunction, McpRequestContext, ToolCallResult, McpTool } from "./types.mjs";
6
+ export declare const newMcpServer: ({ stainlessApiKey, customInstructionsPath, }: {
7
+ stainlessApiKey?: string | undefined;
8
+ customInstructionsPath?: string | undefined;
9
+ }) => Promise<McpServer>;
10
+ /**
11
+ * Initializes the provided MCP Server with the given tools and handlers.
12
+ * If not provided, the default client, tools and handlers will be used.
13
+ */
14
+ export declare function initMcpServer(params: {
15
+ server: Server | McpServer;
16
+ clientOptions?: ClientOptions;
17
+ mcpOptions?: McpOptions;
18
+ stainlessApiKey?: string | undefined;
19
+ upstreamClientEnvs?: Record<string, string> | undefined;
20
+ mcpSessionId?: string | undefined;
21
+ mcpClientInfo?: {
22
+ name: string;
23
+ version: string;
24
+ } | undefined;
25
+ }): Promise<void>;
26
+ /**
27
+ * Selects the tools to include in the MCP Server based on the provided options.
28
+ */
29
+ export declare function selectTools(options?: McpOptions): McpTool[];
30
+ /**
31
+ * Runs the provided handler with the given client and arguments.
32
+ */
33
+ export declare function executeHandler({ handler, reqContext, args, }: {
34
+ handler: HandlerFunction;
35
+ reqContext: McpRequestContext;
36
+ args: Record<string, unknown> | undefined;
37
+ }): Promise<ToolCallResult>;
38
+ //# sourceMappingURL=server.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.mts","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,EAAE,MAAM,2CAA2C;OAC3D,EAAE,SAAS,EAAE,MAAM,yCAAyC;OAM5D,EAAE,aAAa,EAAE,MAAM,cAAc;OAOrC,EAAE,UAAU,EAAE;OAEd,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE;AAEtE,eAAO,MAAM,YAAY,GAAU,8CAGhC;IACD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,uBAUE,CAAC;AAEJ;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC/D,iBA0HA;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,CAe3D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,UAAU,EACV,IAAI,GACL,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC3C,GAAG,OAAO,CAAC,cAAc,CAAC,CAE1B"}
package/server.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { ClientOptions } from '@linqapp/sdk';
4
+ import { McpOptions } from "./options.js";
5
+ import { HandlerFunction, McpRequestContext, ToolCallResult, McpTool } from "./types.js";
6
+ export declare const newMcpServer: ({ stainlessApiKey, customInstructionsPath, }: {
7
+ stainlessApiKey?: string | undefined;
8
+ customInstructionsPath?: string | undefined;
9
+ }) => Promise<McpServer>;
10
+ /**
11
+ * Initializes the provided MCP Server with the given tools and handlers.
12
+ * If not provided, the default client, tools and handlers will be used.
13
+ */
14
+ export declare function initMcpServer(params: {
15
+ server: Server | McpServer;
16
+ clientOptions?: ClientOptions;
17
+ mcpOptions?: McpOptions;
18
+ stainlessApiKey?: string | undefined;
19
+ upstreamClientEnvs?: Record<string, string> | undefined;
20
+ mcpSessionId?: string | undefined;
21
+ mcpClientInfo?: {
22
+ name: string;
23
+ version: string;
24
+ } | undefined;
25
+ }): Promise<void>;
26
+ /**
27
+ * Selects the tools to include in the MCP Server based on the provided options.
28
+ */
29
+ export declare function selectTools(options?: McpOptions): McpTool[];
30
+ /**
31
+ * Runs the provided handler with the given client and arguments.
32
+ */
33
+ export declare function executeHandler({ handler, reqContext, args, }: {
34
+ handler: HandlerFunction;
35
+ reqContext: McpRequestContext;
36
+ args: Record<string, unknown> | undefined;
37
+ }): Promise<ToolCallResult>;
38
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"OAEO,EAAE,MAAM,EAAE,MAAM,2CAA2C;OAC3D,EAAE,SAAS,EAAE,MAAM,yCAAyC;OAM5D,EAAE,aAAa,EAAE,MAAM,cAAc;OAOrC,EAAE,UAAU,EAAE;OAEd,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE;AAEtE,eAAO,MAAM,YAAY,GAAU,8CAGhC;IACD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,uBAUE,CAAC;AAEJ;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC/D,iBA0HA;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,CAe3D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,UAAU,EACV,IAAI,GACL,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC3C,GAAG,OAAO,CAAC,cAAc,CAAC,CAE1B"}
package/server.js ADDED
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.newMcpServer = void 0;
8
+ exports.initMcpServer = initMcpServer;
9
+ exports.selectTools = selectTools;
10
+ exports.executeHandler = executeHandler;
11
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
12
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
13
+ const sdk_1 = __importDefault(require("@linqapp/sdk"));
14
+ const code_tool_1 = require("./code-tool.js");
15
+ const docs_search_tool_1 = __importDefault(require("./docs-search-tool.js"));
16
+ const docs_search_tool_2 = require("./docs-search-tool.js");
17
+ const local_docs_search_1 = require("./local-docs-search.js");
18
+ const instructions_1 = require("./instructions.js");
19
+ const methods_1 = require("./methods.js");
20
+ const newMcpServer = async ({ stainlessApiKey, customInstructionsPath, }) => new mcp_js_1.McpServer({
21
+ name: 'linqapp_sdk_api',
22
+ version: '0.19.0',
23
+ }, {
24
+ instructions: await (0, instructions_1.getInstructions)({ stainlessApiKey, customInstructionsPath }),
25
+ capabilities: { tools: {}, logging: {} },
26
+ });
27
+ exports.newMcpServer = newMcpServer;
28
+ /**
29
+ * Initializes the provided MCP Server with the given tools and handlers.
30
+ * If not provided, the default client, tools and handlers will be used.
31
+ */
32
+ async function initMcpServer(params) {
33
+ const server = params.server instanceof mcp_js_1.McpServer ? params.server.server : params.server;
34
+ const logAtLevel = (level) => (message, ...rest) => {
35
+ void server.sendLoggingMessage({
36
+ level,
37
+ data: { message, rest },
38
+ });
39
+ };
40
+ const logger = {
41
+ debug: logAtLevel('debug'),
42
+ info: logAtLevel('info'),
43
+ warn: logAtLevel('warning'),
44
+ error: logAtLevel('error'),
45
+ };
46
+ if (params.mcpOptions?.docsSearchMode === 'local') {
47
+ const docsDir = params.mcpOptions?.docsDir;
48
+ const localSearch = await local_docs_search_1.LocalDocsSearch.create(docsDir ? { docsDir } : undefined);
49
+ (0, docs_search_tool_2.setLocalSearch)(localSearch);
50
+ }
51
+ let _client;
52
+ let _clientError;
53
+ let _logLevel;
54
+ const getClient = () => {
55
+ if (_clientError)
56
+ throw _clientError;
57
+ if (!_client) {
58
+ try {
59
+ _client = new sdk_1.default({
60
+ logger,
61
+ ...params.clientOptions,
62
+ defaultHeaders: {
63
+ ...params.clientOptions?.defaultHeaders,
64
+ 'X-Stainless-MCP': 'true',
65
+ },
66
+ });
67
+ if (_logLevel) {
68
+ _client = _client.withOptions({ logLevel: _logLevel });
69
+ }
70
+ }
71
+ catch (e) {
72
+ _clientError = e instanceof Error ? e : new Error(String(e));
73
+ throw _clientError;
74
+ }
75
+ }
76
+ return _client;
77
+ };
78
+ const providedTools = selectTools(params.mcpOptions);
79
+ const toolMap = Object.fromEntries(providedTools.map((mcpTool) => [mcpTool.tool.name, mcpTool]));
80
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
81
+ return {
82
+ tools: providedTools.map((mcpTool) => mcpTool.tool),
83
+ };
84
+ });
85
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
86
+ const { name, arguments: args } = request.params;
87
+ const mcpTool = toolMap[name];
88
+ if (!mcpTool) {
89
+ throw new Error(`Unknown tool: ${name}`);
90
+ }
91
+ let client;
92
+ try {
93
+ client = getClient();
94
+ }
95
+ catch (error) {
96
+ return {
97
+ content: [
98
+ {
99
+ type: 'text',
100
+ text: `Failed to initialize client: ${error instanceof Error ? error.message : String(error)}`,
101
+ },
102
+ ],
103
+ isError: true,
104
+ };
105
+ }
106
+ return executeHandler({
107
+ handler: mcpTool.handler,
108
+ reqContext: {
109
+ client,
110
+ stainlessApiKey: params.stainlessApiKey ?? params.mcpOptions?.stainlessApiKey,
111
+ upstreamClientEnvs: params.upstreamClientEnvs,
112
+ mcpSessionId: params.mcpSessionId,
113
+ mcpClientInfo: params.mcpClientInfo,
114
+ },
115
+ args,
116
+ });
117
+ });
118
+ server.setRequestHandler(types_js_1.SetLevelRequestSchema, async (request) => {
119
+ const { level } = request.params;
120
+ let logLevel;
121
+ switch (level) {
122
+ case 'debug':
123
+ logLevel = 'debug';
124
+ break;
125
+ case 'info':
126
+ logLevel = 'info';
127
+ break;
128
+ case 'notice':
129
+ case 'warning':
130
+ logLevel = 'warn';
131
+ break;
132
+ case 'error':
133
+ logLevel = 'error';
134
+ break;
135
+ default:
136
+ logLevel = 'off';
137
+ break;
138
+ }
139
+ _logLevel = logLevel;
140
+ if (_client) {
141
+ _client = _client.withOptions({ logLevel });
142
+ }
143
+ return {};
144
+ });
145
+ }
146
+ /**
147
+ * Selects the tools to include in the MCP Server based on the provided options.
148
+ */
149
+ function selectTools(options) {
150
+ const includedTools = [];
151
+ if (options?.includeCodeTool ?? true) {
152
+ includedTools.push((0, code_tool_1.codeTool)({
153
+ blockedMethods: (0, methods_1.blockedMethodsForCodeTool)(options),
154
+ codeExecutionMode: options?.codeExecutionMode ?? 'stainless-sandbox',
155
+ }));
156
+ }
157
+ if (options?.includeDocsTools ?? true) {
158
+ includedTools.push(docs_search_tool_1.default);
159
+ }
160
+ return includedTools;
161
+ }
162
+ /**
163
+ * Runs the provided handler with the given client and arguments.
164
+ */
165
+ async function executeHandler({ handler, reqContext, args, }) {
166
+ return await handler({ reqContext, args: args || {} });
167
+ }
168
+ //# sourceMappingURL=server.js.map
package/server.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"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"}
package/server.mjs ADDED
@@ -0,0 +1,158 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, SetLevelRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
4
+ import LinqAPIV3 from '@linqapp/sdk';
5
+ import { codeTool } from "./code-tool.mjs";
6
+ import docsSearchTool from "./docs-search-tool.mjs";
7
+ import { setLocalSearch } from "./docs-search-tool.mjs";
8
+ import { LocalDocsSearch } from "./local-docs-search.mjs";
9
+ import { getInstructions } from "./instructions.mjs";
10
+ import { blockedMethodsForCodeTool } from "./methods.mjs";
11
+ export const newMcpServer = async ({ stainlessApiKey, customInstructionsPath, }) => new McpServer({
12
+ name: 'linqapp_sdk_api',
13
+ version: '0.19.0',
14
+ }, {
15
+ instructions: await getInstructions({ stainlessApiKey, customInstructionsPath }),
16
+ capabilities: { tools: {}, logging: {} },
17
+ });
18
+ /**
19
+ * Initializes the provided MCP Server with the given tools and handlers.
20
+ * If not provided, the default client, tools and handlers will be used.
21
+ */
22
+ export async function initMcpServer(params) {
23
+ const server = params.server instanceof McpServer ? params.server.server : params.server;
24
+ const logAtLevel = (level) => (message, ...rest) => {
25
+ void server.sendLoggingMessage({
26
+ level,
27
+ data: { message, rest },
28
+ });
29
+ };
30
+ const logger = {
31
+ debug: logAtLevel('debug'),
32
+ info: logAtLevel('info'),
33
+ warn: logAtLevel('warning'),
34
+ error: logAtLevel('error'),
35
+ };
36
+ if (params.mcpOptions?.docsSearchMode === 'local') {
37
+ const docsDir = params.mcpOptions?.docsDir;
38
+ const localSearch = await LocalDocsSearch.create(docsDir ? { docsDir } : undefined);
39
+ setLocalSearch(localSearch);
40
+ }
41
+ let _client;
42
+ let _clientError;
43
+ let _logLevel;
44
+ const getClient = () => {
45
+ if (_clientError)
46
+ throw _clientError;
47
+ if (!_client) {
48
+ try {
49
+ _client = new LinqAPIV3({
50
+ logger,
51
+ ...params.clientOptions,
52
+ defaultHeaders: {
53
+ ...params.clientOptions?.defaultHeaders,
54
+ 'X-Stainless-MCP': 'true',
55
+ },
56
+ });
57
+ if (_logLevel) {
58
+ _client = _client.withOptions({ logLevel: _logLevel });
59
+ }
60
+ }
61
+ catch (e) {
62
+ _clientError = e instanceof Error ? e : new Error(String(e));
63
+ throw _clientError;
64
+ }
65
+ }
66
+ return _client;
67
+ };
68
+ const providedTools = selectTools(params.mcpOptions);
69
+ const toolMap = Object.fromEntries(providedTools.map((mcpTool) => [mcpTool.tool.name, mcpTool]));
70
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
71
+ return {
72
+ tools: providedTools.map((mcpTool) => mcpTool.tool),
73
+ };
74
+ });
75
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
76
+ const { name, arguments: args } = request.params;
77
+ const mcpTool = toolMap[name];
78
+ if (!mcpTool) {
79
+ throw new Error(`Unknown tool: ${name}`);
80
+ }
81
+ let client;
82
+ try {
83
+ client = getClient();
84
+ }
85
+ catch (error) {
86
+ return {
87
+ content: [
88
+ {
89
+ type: 'text',
90
+ text: `Failed to initialize client: ${error instanceof Error ? error.message : String(error)}`,
91
+ },
92
+ ],
93
+ isError: true,
94
+ };
95
+ }
96
+ return executeHandler({
97
+ handler: mcpTool.handler,
98
+ reqContext: {
99
+ client,
100
+ stainlessApiKey: params.stainlessApiKey ?? params.mcpOptions?.stainlessApiKey,
101
+ upstreamClientEnvs: params.upstreamClientEnvs,
102
+ mcpSessionId: params.mcpSessionId,
103
+ mcpClientInfo: params.mcpClientInfo,
104
+ },
105
+ args,
106
+ });
107
+ });
108
+ server.setRequestHandler(SetLevelRequestSchema, async (request) => {
109
+ const { level } = request.params;
110
+ let logLevel;
111
+ switch (level) {
112
+ case 'debug':
113
+ logLevel = 'debug';
114
+ break;
115
+ case 'info':
116
+ logLevel = 'info';
117
+ break;
118
+ case 'notice':
119
+ case 'warning':
120
+ logLevel = 'warn';
121
+ break;
122
+ case 'error':
123
+ logLevel = 'error';
124
+ break;
125
+ default:
126
+ logLevel = 'off';
127
+ break;
128
+ }
129
+ _logLevel = logLevel;
130
+ if (_client) {
131
+ _client = _client.withOptions({ logLevel });
132
+ }
133
+ return {};
134
+ });
135
+ }
136
+ /**
137
+ * Selects the tools to include in the MCP Server based on the provided options.
138
+ */
139
+ export function selectTools(options) {
140
+ const includedTools = [];
141
+ if (options?.includeCodeTool ?? true) {
142
+ includedTools.push(codeTool({
143
+ blockedMethods: blockedMethodsForCodeTool(options),
144
+ codeExecutionMode: options?.codeExecutionMode ?? 'stainless-sandbox',
145
+ }));
146
+ }
147
+ if (options?.includeDocsTools ?? true) {
148
+ includedTools.push(docsSearchTool);
149
+ }
150
+ return includedTools;
151
+ }
152
+ /**
153
+ * Runs the provided handler with the given client and arguments.
154
+ */
155
+ export async function executeHandler({ handler, reqContext, args, }) {
156
+ return await handler({ reqContext, args: args || {} });
157
+ }
158
+ //# sourceMappingURL=server.mjs.map
package/server.mjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.mjs","sourceRoot":"","sources":["src/server.ts"],"names":[],"mappings":"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"}