@lightsage/mcp 0.4.16 → 0.4.17

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 (210) hide show
  1. package/README.md +2 -2
  2. package/api/mcp.js +30 -0
  3. package/bin/mcp-server.js +1757 -508
  4. package/bin/mcp-server.js.map +55 -24
  5. package/esm/funcs/agentAnalyticsCountriesList.d.ts +16 -0
  6. package/esm/funcs/agentAnalyticsCountriesList.d.ts.map +1 -0
  7. package/esm/funcs/agentAnalyticsCountriesList.js +94 -0
  8. package/esm/funcs/agentAnalyticsCountriesList.js.map +1 -0
  9. package/esm/funcs/agentAnalyticsErrorPagesList.d.ts +16 -0
  10. package/esm/funcs/agentAnalyticsErrorPagesList.d.ts.map +1 -0
  11. package/esm/funcs/agentAnalyticsErrorPagesList.js +96 -0
  12. package/esm/funcs/agentAnalyticsErrorPagesList.js.map +1 -0
  13. package/esm/funcs/agentAnalyticsPagesList.d.ts +16 -0
  14. package/esm/funcs/agentAnalyticsPagesList.d.ts.map +1 -0
  15. package/esm/funcs/agentAnalyticsPagesList.js +98 -0
  16. package/esm/funcs/agentAnalyticsPagesList.js.map +1 -0
  17. package/esm/funcs/agentAnalyticsSitesList.d.ts +15 -0
  18. package/esm/funcs/agentAnalyticsSitesList.d.ts.map +1 -0
  19. package/esm/funcs/agentAnalyticsSitesList.js +72 -0
  20. package/esm/funcs/agentAnalyticsSitesList.js.map +1 -0
  21. package/esm/funcs/agentAnalyticsSourcesList.d.ts +16 -0
  22. package/esm/funcs/agentAnalyticsSourcesList.d.ts.map +1 -0
  23. package/esm/funcs/agentAnalyticsSourcesList.js +93 -0
  24. package/esm/funcs/agentAnalyticsSourcesList.js.map +1 -0
  25. package/esm/funcs/agentAnalyticsSummaryRetrieve.d.ts +16 -0
  26. package/esm/funcs/agentAnalyticsSummaryRetrieve.d.ts.map +1 -0
  27. package/esm/funcs/agentAnalyticsSummaryRetrieve.js +93 -0
  28. package/esm/funcs/agentAnalyticsSummaryRetrieve.js.map +1 -0
  29. package/esm/funcs/tasksCreate.d.ts +16 -0
  30. package/esm/funcs/tasksCreate.d.ts.map +1 -0
  31. package/esm/funcs/tasksCreate.js +83 -0
  32. package/esm/funcs/tasksCreate.js.map +1 -0
  33. package/esm/landing-page.js +1 -1
  34. package/esm/lib/config.d.ts +2 -2
  35. package/esm/lib/config.js +2 -2
  36. package/esm/mcp-server/mcp-server.js +1 -1
  37. package/esm/mcp-server/server.d.ts.map +1 -1
  38. package/esm/mcp-server/server.js +15 -1
  39. package/esm/mcp-server/server.js.map +1 -1
  40. package/esm/mcp-server/tools/agentAnalyticsCountriesList.d.ts +7 -0
  41. package/esm/mcp-server/tools/agentAnalyticsCountriesList.d.ts.map +1 -0
  42. package/esm/mcp-server/tools/agentAnalyticsCountriesList.js +35 -0
  43. package/esm/mcp-server/tools/agentAnalyticsCountriesList.js.map +1 -0
  44. package/esm/mcp-server/tools/agentAnalyticsErrorPagesList.d.ts +7 -0
  45. package/esm/mcp-server/tools/agentAnalyticsErrorPagesList.d.ts.map +1 -0
  46. package/esm/mcp-server/tools/agentAnalyticsErrorPagesList.js +35 -0
  47. package/esm/mcp-server/tools/agentAnalyticsErrorPagesList.js.map +1 -0
  48. package/esm/mcp-server/tools/agentAnalyticsPagesList.d.ts +7 -0
  49. package/esm/mcp-server/tools/agentAnalyticsPagesList.d.ts.map +1 -0
  50. package/esm/mcp-server/tools/agentAnalyticsPagesList.js +35 -0
  51. package/esm/mcp-server/tools/agentAnalyticsPagesList.js.map +1 -0
  52. package/esm/mcp-server/tools/agentAnalyticsSitesList.d.ts +3 -0
  53. package/esm/mcp-server/tools/agentAnalyticsSitesList.d.ts.map +1 -0
  54. package/esm/mcp-server/tools/agentAnalyticsSitesList.js +30 -0
  55. package/esm/mcp-server/tools/agentAnalyticsSitesList.js.map +1 -0
  56. package/esm/mcp-server/tools/agentAnalyticsSourcesList.d.ts +7 -0
  57. package/esm/mcp-server/tools/agentAnalyticsSourcesList.d.ts.map +1 -0
  58. package/esm/mcp-server/tools/agentAnalyticsSourcesList.js +35 -0
  59. package/esm/mcp-server/tools/agentAnalyticsSourcesList.js.map +1 -0
  60. package/esm/mcp-server/tools/agentAnalyticsSummaryRetrieve.d.ts +7 -0
  61. package/esm/mcp-server/tools/agentAnalyticsSummaryRetrieve.d.ts.map +1 -0
  62. package/esm/mcp-server/tools/agentAnalyticsSummaryRetrieve.js +35 -0
  63. package/esm/mcp-server/tools/agentAnalyticsSummaryRetrieve.js.map +1 -0
  64. package/esm/mcp-server/tools/tasksCreate.d.ts +7 -0
  65. package/esm/mcp-server/tools/tasksCreate.d.ts.map +1 -0
  66. package/esm/mcp-server/tools/tasksCreate.js +35 -0
  67. package/esm/mcp-server/tools/tasksCreate.js.map +1 -0
  68. package/esm/models/createtaskrequest.d.ts +65 -0
  69. package/esm/models/createtaskrequest.d.ts.map +1 -0
  70. package/esm/models/createtaskrequest.js +64 -0
  71. package/esm/models/createtaskrequest.js.map +1 -0
  72. package/esm/models/graderdefinition.d.ts +1 -0
  73. package/esm/models/graderdefinition.d.ts.map +1 -1
  74. package/esm/models/graderdefinition.js +1 -0
  75. package/esm/models/graderdefinition.js.map +1 -1
  76. package/esm/models/publicagentanalyticscountrylistresponse.d.ts +10 -0
  77. package/esm/models/publicagentanalyticscountrylistresponse.d.ts.map +1 -0
  78. package/esm/models/publicagentanalyticscountrylistresponse.js +13 -0
  79. package/esm/models/publicagentanalyticscountrylistresponse.js.map +1 -0
  80. package/esm/models/publicagentanalyticserrorpagelistresponse.d.ts +11 -0
  81. package/esm/models/publicagentanalyticserrorpagelistresponse.d.ts.map +1 -0
  82. package/esm/models/publicagentanalyticserrorpagelistresponse.js +14 -0
  83. package/esm/models/publicagentanalyticserrorpagelistresponse.js.map +1 -0
  84. package/esm/models/publicagentanalyticspagelistresponse.d.ts +11 -0
  85. package/esm/models/publicagentanalyticspagelistresponse.d.ts.map +1 -0
  86. package/esm/models/publicagentanalyticspagelistresponse.js +14 -0
  87. package/esm/models/publicagentanalyticspagelistresponse.js.map +1 -0
  88. package/esm/models/publicagentanalyticssite.d.ts +9 -0
  89. package/esm/models/publicagentanalyticssite.d.ts.map +1 -0
  90. package/esm/models/publicagentanalyticssite.js +12 -0
  91. package/esm/models/publicagentanalyticssite.js.map +1 -0
  92. package/esm/models/publicagentanalyticssitelistresponse.d.ts +7 -0
  93. package/esm/models/publicagentanalyticssitelistresponse.d.ts.map +1 -0
  94. package/esm/models/publicagentanalyticssitelistresponse.js +10 -0
  95. package/esm/models/publicagentanalyticssitelistresponse.js.map +1 -0
  96. package/esm/models/publicagentanalyticssourcelistresponse.d.ts +10 -0
  97. package/esm/models/publicagentanalyticssourcelistresponse.d.ts.map +1 -0
  98. package/esm/models/publicagentanalyticssourcelistresponse.js +13 -0
  99. package/esm/models/publicagentanalyticssourcelistresponse.js.map +1 -0
  100. package/esm/models/publicagentanalyticssummary.d.ts +11 -0
  101. package/esm/models/publicagentanalyticssummary.d.ts.map +1 -0
  102. package/esm/models/publicagentanalyticssummary.js +14 -0
  103. package/esm/models/publicagentanalyticssummary.js.map +1 -0
  104. package/esm/models/publicagentcountry.d.ts +7 -0
  105. package/esm/models/publicagentcountry.d.ts.map +1 -0
  106. package/esm/models/publicagentcountry.js +11 -0
  107. package/esm/models/publicagentcountry.js.map +1 -0
  108. package/esm/models/publicagenterrorpage.d.ts +12 -0
  109. package/esm/models/publicagenterrorpage.d.ts.map +1 -0
  110. package/esm/models/publicagenterrorpage.js +16 -0
  111. package/esm/models/publicagenterrorpage.js.map +1 -0
  112. package/esm/models/publicagenterrorsource.d.ts +40 -0
  113. package/esm/models/publicagenterrorsource.d.ts.map +1 -0
  114. package/esm/models/publicagenterrorsource.js +40 -0
  115. package/esm/models/publicagenterrorsource.js.map +1 -0
  116. package/esm/models/publicagenttrafficpage.d.ts +14 -0
  117. package/esm/models/publicagenttrafficpage.d.ts.map +1 -0
  118. package/esm/models/publicagenttrafficpage.js +17 -0
  119. package/esm/models/publicagenttrafficpage.js.map +1 -0
  120. package/esm/models/publicagenttrafficsource.d.ts +47 -0
  121. package/esm/models/publicagenttrafficsource.d.ts.map +1 -0
  122. package/esm/models/publicagenttrafficsource.js +44 -0
  123. package/esm/models/publicagenttrafficsource.js.map +1 -0
  124. package/esm/models/publicagenttraffictotals.d.ts +13 -0
  125. package/esm/models/publicagenttraffictotals.d.ts.map +1 -0
  126. package/esm/models/publicagenttraffictotals.js +16 -0
  127. package/esm/models/publicagenttraffictotals.js.map +1 -0
  128. package/esm/models/updatetaskrequest.d.ts +8 -8
  129. package/esm/models/updatetaskrequest.d.ts.map +1 -1
  130. package/esm/models/updatetaskrequest.js +6 -6
  131. package/esm/models/updatetaskrequest.js.map +1 -1
  132. package/esm/models/v2agentanalyticscountrieslistop.d.ts +13 -0
  133. package/esm/models/v2agentanalyticscountrieslistop.d.ts.map +1 -0
  134. package/esm/models/v2agentanalyticscountrieslistop.js +18 -0
  135. package/esm/models/v2agentanalyticscountrieslistop.js.map +1 -0
  136. package/esm/models/v2agentanalyticserrorpageslistop.d.ts +39 -0
  137. package/esm/models/v2agentanalyticserrorpageslistop.d.ts.map +1 -0
  138. package/esm/models/v2agentanalyticserrorpageslistop.js +39 -0
  139. package/esm/models/v2agentanalyticserrorpageslistop.js.map +1 -0
  140. package/esm/models/v2agentanalyticspageslistop.d.ts +68 -0
  141. package/esm/models/v2agentanalyticspageslistop.d.ts.map +1 -0
  142. package/esm/models/v2agentanalyticspageslistop.js +65 -0
  143. package/esm/models/v2agentanalyticspageslistop.js.map +1 -0
  144. package/esm/models/v2agentanalyticssourceslistop.d.ts +12 -0
  145. package/esm/models/v2agentanalyticssourceslistop.d.ts.map +1 -0
  146. package/esm/models/v2agentanalyticssourceslistop.js +17 -0
  147. package/esm/models/v2agentanalyticssourceslistop.js.map +1 -0
  148. package/esm/models/v2agentanalyticssummaryretrieveop.d.ts +12 -0
  149. package/esm/models/v2agentanalyticssummaryretrieveop.d.ts.map +1 -0
  150. package/esm/models/v2agentanalyticssummaryretrieveop.js +17 -0
  151. package/esm/models/v2agentanalyticssummaryretrieveop.js.map +1 -0
  152. package/esm/models/v2inlinemcpdefinition.js +1 -1
  153. package/esm/models/v2inlinemcpdefinition.js.map +1 -1
  154. package/esm/models/v2repository.d.ts +4 -4
  155. package/esm/models/v2repository.d.ts.map +1 -1
  156. package/esm/models/v2repository.js +3 -3
  157. package/esm/models/v2repository.js.map +1 -1
  158. package/esm/models/v2taskscreateop.d.ts +13 -0
  159. package/esm/models/v2taskscreateop.d.ts.map +1 -0
  160. package/esm/models/v2taskscreateop.js +16 -0
  161. package/esm/models/v2taskscreateop.js.map +1 -0
  162. package/esm/tool-names.d.ts.map +1 -1
  163. package/esm/tool-names.js +28 -0
  164. package/esm/tool-names.js.map +1 -1
  165. package/lib/tracker.js +219 -0
  166. package/package.json +3 -1
  167. package/src/funcs/agentAnalyticsCountriesList.ts +159 -0
  168. package/src/funcs/agentAnalyticsErrorPagesList.ts +161 -0
  169. package/src/funcs/agentAnalyticsPagesList.ts +163 -0
  170. package/src/funcs/agentAnalyticsSitesList.ts +124 -0
  171. package/src/funcs/agentAnalyticsSourcesList.ts +158 -0
  172. package/src/funcs/agentAnalyticsSummaryRetrieve.ts +158 -0
  173. package/src/funcs/tasksCreate.ts +145 -0
  174. package/src/landing-page.ts +1 -1
  175. package/src/lib/config.ts +2 -2
  176. package/src/mcp-server/mcp-server.ts +1 -1
  177. package/src/mcp-server/server.ts +15 -1
  178. package/src/mcp-server/tools/agentAnalyticsCountriesList.ts +43 -0
  179. package/src/mcp-server/tools/agentAnalyticsErrorPagesList.ts +43 -0
  180. package/src/mcp-server/tools/agentAnalyticsPagesList.ts +43 -0
  181. package/src/mcp-server/tools/agentAnalyticsSitesList.ts +36 -0
  182. package/src/mcp-server/tools/agentAnalyticsSourcesList.ts +43 -0
  183. package/src/mcp-server/tools/agentAnalyticsSummaryRetrieve.ts +43 -0
  184. package/src/mcp-server/tools/tasksCreate.ts +43 -0
  185. package/src/models/createtaskrequest.ts +98 -0
  186. package/src/models/graderdefinition.ts +2 -0
  187. package/src/models/publicagentanalyticscountrylistresponse.ts +28 -0
  188. package/src/models/publicagentanalyticserrorpagelistresponse.ts +32 -0
  189. package/src/models/publicagentanalyticspagelistresponse.ts +30 -0
  190. package/src/models/publicagentanalyticssite.ts +26 -0
  191. package/src/models/publicagentanalyticssitelistresponse.ts +20 -0
  192. package/src/models/publicagentanalyticssourcelistresponse.ts +28 -0
  193. package/src/models/publicagentanalyticssummary.ts +28 -0
  194. package/src/models/publicagentcountry.ts +16 -0
  195. package/src/models/publicagenterrorpage.ts +35 -0
  196. package/src/models/publicagenterrorsource.ts +63 -0
  197. package/src/models/publicagenttrafficpage.ts +46 -0
  198. package/src/models/publicagenttrafficsource.ts +77 -0
  199. package/src/models/publicagenttraffictotals.ts +42 -0
  200. package/src/models/updatetaskrequest.ts +14 -10
  201. package/src/models/v2agentanalyticscountrieslistop.ts +45 -0
  202. package/src/models/v2agentanalyticserrorpageslistop.ts +79 -0
  203. package/src/models/v2agentanalyticspageslistop.ts +119 -0
  204. package/src/models/v2agentanalyticssourceslistop.ts +43 -0
  205. package/src/models/v2agentanalyticssummaryretrieveop.ts +43 -0
  206. package/src/models/v2inlinemcpdefinition.ts +1 -1
  207. package/src/models/v2repository.ts +5 -5
  208. package/src/models/v2taskscreateop.ts +34 -0
  209. package/src/tool-names.ts +28 -0
  210. package/test/tracker.test.js +323 -0
package/README.md CHANGED
@@ -33,9 +33,9 @@ Lightsage Public API: Public API for Lightsage CLI and external integrations.
33
33
  <details>
34
34
  <summary>Claude Desktop</summary>
35
35
 
36
- Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/lightsagehq/mcp/releases/download/v0.4.16/mcp-server.mcpb) file:
36
+ Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/lightsagehq/mcp/releases/download/v0.4.17/mcp-server.mcpb) file:
37
37
 
38
- Simply drag and drop the [`mcp-server.mcpb`](https://github.com/lightsagehq/mcp/releases/download/v0.4.16/mcp-server.mcpb) file onto Claude Desktop to install the extension.
38
+ Simply drag and drop the [`mcp-server.mcpb`](https://github.com/lightsagehq/mcp/releases/download/v0.4.17/mcp-server.mcpb) file onto Claude Desktop to install the extension.
39
39
 
40
40
  The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.
41
41
 
package/api/mcp.js CHANGED
@@ -10,6 +10,15 @@ import {
10
10
  exchangeFailureResponse,
11
11
  } from "../lib/oauth.js";
12
12
  import { registerProfileTool } from "../lib/profile.js";
13
+ import {
14
+ apiKeyCaller,
15
+ clearVerifiedCaller,
16
+ flushTracking,
17
+ instrumentServer,
18
+ isTrackedApiKey,
19
+ setVerifiedCaller,
20
+ trackingEnabled,
21
+ } from "../lib/tracker.js";
13
22
 
14
23
  const logLevel = process.env.MCP_LOG_LEVEL || "info";
15
24
  const logger = createConsoleLogger(logLevel);
@@ -79,6 +88,9 @@ export default async function handler(req, res) {
79
88
  return;
80
89
  }
81
90
 
91
+ // Only this handler may say who the caller is (see lib/tracker.js)
92
+ clearVerifiedCaller(req);
93
+
82
94
  const headers = new Headers();
83
95
  for (const [key, value] of Object.entries(req.headers)) {
84
96
  if (Array.isArray(value)) {
@@ -118,6 +130,8 @@ export default async function handler(req, res) {
118
130
  res.status(401).json({ error: "unauthorized" });
119
131
  return;
120
132
  }
133
+ // The user, not the token: tokens rotate, so sessions would split
134
+ setVerifiedCaller(req, `oauth:${auth.userId}`);
121
135
 
122
136
  try {
123
137
  const identity = await exchangeForLightsageIdentity(
@@ -140,6 +154,17 @@ export default async function handler(req, res) {
140
154
  }
141
155
 
142
156
  const flags = getFlags();
157
+
158
+ // Record analytics only for callers who proved who they are. A request key
159
+ // is checked against the API, because tools that never call it accept any
160
+ // value. A static server key is the deployment's own.
161
+ if (trackingEnabled && requestApiKey) {
162
+ if (await isTrackedApiKey(requestApiKey, flags["server-url"])) {
163
+ setVerifiedCaller(req, apiKeyCaller(requestApiKey));
164
+ }
165
+ } else if (trackingEnabled && !useOAuth && !requestApiKey) {
166
+ setVerifiedCaller(req, "static:server");
167
+ }
143
168
  // OAuth-enabled deployments may use either a caller-supplied request key or
144
169
  // an OAuth-exchanged key, but must never fall back to a static server key.
145
170
  const disableStaticAuth = useOAuth
@@ -162,6 +187,10 @@ export default async function handler(req, res) {
162
187
  registerProfileTool(mcpServer, profile);
163
188
  }
164
189
 
190
+ if (req.headers["x-lightsage-verified-caller"]) {
191
+ instrumentServer(mcpServer);
192
+ }
193
+
165
194
  mcpServer.server.onerror = (error) => {
166
195
  logger.error("MCP protocol error", {
167
196
  error: error instanceof Error ? error.message : String(error),
@@ -171,4 +200,5 @@ export default async function handler(req, res) {
171
200
 
172
201
  await mcpServer.connect(transport);
173
202
  await transport.handleRequest(req, res, req.body);
203
+ await flushTracking(res);
174
204
  }