noverload-mcp 0.7.0 → 0.7.2

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/index.js CHANGED
@@ -4,18 +4,23 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
4
4
  import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
5
5
  import { z } from "zod";
6
6
  import { NoverloadClient } from "./client.js";
7
- import { tools } from "./tools/index.js";
8
7
  import { resources } from "./resources/index.js";
8
+ import { tools } from "./tools/index.js";
9
9
  const ConfigSchema = z.object({
10
10
  accessToken: z.string().min(1, "Access token is required"),
11
11
  apiUrl: z.string().url().optional().default("https://www.noverload.com"),
12
12
  readOnly: z.boolean().optional().default(true),
13
13
  });
14
14
  async function main() {
15
+ // Log tools status at startup
16
+ console.error(`MCP Server starting with ${tools ? tools.length : 0} tools`);
17
+ if (!tools || tools.length === 0) {
18
+ console.error("WARNING: No tools loaded! Check imports.");
19
+ }
15
20
  const transport = new StdioServerTransport();
16
21
  const server = new Server({
17
22
  name: "noverload-mcp",
18
- version: "0.4.0",
23
+ version: "0.7.2",
19
24
  }, {
20
25
  capabilities: {
21
26
  tools: {},
@@ -26,6 +31,25 @@ async function main() {
26
31
  let config = null;
27
32
  // Initialize with config from environment only (security: no args to prevent token exposure in ps)
28
33
  server.setRequestHandler(ListToolsRequestSchema, async () => {
34
+ console.error("ListTools handler called");
35
+ // Debug: Check if tools are loaded
36
+ console.error(`Tools loaded: ${tools ? tools.length : 'undefined'}`);
37
+ if (!tools || tools.length === 0) {
38
+ console.error('Warning: No tools loaded!');
39
+ return { tools: [] };
40
+ }
41
+ const toolList = tools.map(tool => ({
42
+ name: tool.name,
43
+ description: tool.description,
44
+ inputSchema: tool.inputSchema,
45
+ }));
46
+ console.error(`Returning ${toolList.length} tools to client`);
47
+ console.error(`First tool: ${toolList[0]?.name}`);
48
+ return {
49
+ tools: toolList,
50
+ };
51
+ });
52
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
29
53
  if (!client) {
30
54
  const rawConfig = process.env.NOVERLOAD_CONFIG;
31
55
  if (!rawConfig) {
@@ -40,18 +64,6 @@ async function main() {
40
64
  throw new Error(`Invalid configuration: ${error}`);
41
65
  }
42
66
  }
43
- return {
44
- tools: tools.map(tool => ({
45
- name: tool.name,
46
- description: tool.description,
47
- inputSchema: tool.inputSchema,
48
- })),
49
- };
50
- });
51
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
52
- if (!client) {
53
- throw new Error("Client not initialized");
54
- }
55
67
  const tool = tools.find(t => t.name === request.params.name);
56
68
  if (!tool) {
57
69
  throw new Error(`Unknown tool: ${request.params.name}`);
@@ -62,8 +74,20 @@ async function main() {
62
74
  return await tool.handler(client, request.params.arguments);
63
75
  });
64
76
  server.setRequestHandler(ListResourcesRequestSchema, async () => {
77
+ console.error("ListResources handler called");
65
78
  if (!client) {
66
- throw new Error("Client not initialized");
79
+ const rawConfig = process.env.NOVERLOAD_CONFIG;
80
+ if (!rawConfig) {
81
+ throw new Error("Configuration required. Set NOVERLOAD_CONFIG environment variable.");
82
+ }
83
+ try {
84
+ config = ConfigSchema.parse(JSON.parse(rawConfig));
85
+ client = new NoverloadClient(config);
86
+ await client.initialize();
87
+ }
88
+ catch (error) {
89
+ throw new Error(`Invalid configuration: ${error}`);
90
+ }
67
91
  }
68
92
  const resourceList = await resources.list(client);
69
93
  return {
@@ -72,7 +96,18 @@ async function main() {
72
96
  });
73
97
  server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
74
98
  if (!client) {
75
- throw new Error("Client not initialized");
99
+ const rawConfig = process.env.NOVERLOAD_CONFIG;
100
+ if (!rawConfig) {
101
+ throw new Error("Configuration required. Set NOVERLOAD_CONFIG environment variable.");
102
+ }
103
+ try {
104
+ config = ConfigSchema.parse(JSON.parse(rawConfig));
105
+ client = new NoverloadClient(config);
106
+ await client.initialize();
107
+ }
108
+ catch (error) {
109
+ throw new Error(`Invalid configuration: ${error}`);
110
+ }
76
111
  }
77
112
  return await resources.read(client, request.params.uri);
78
113
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC;IAC1D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACxE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC/C,CAAC,CAAC;AAIH,KAAK,UAAU,IAAI;IACjB,8BAA8B;IAC9B,OAAO,CAAC,KAAK,CAAC,4BAA4B,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;SACd;KACF,CACF,CAAC;IAEF,IAAI,MAAM,GAA2B,IAAI,CAAC;IAC1C,IAAI,MAAM,GAAkB,IAAI,CAAC;IAEjC,mGAAmG;IACnG,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAE1C,mCAAmC;QACnC,OAAO,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,MAAM,kBAAkB,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,OAAO;YACL,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnD,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,CAAC,MAAM,CAAC,IAAI,gDAAgD,CAAC,CAAC;QAC/F,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC9D,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnD,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO;YACL,SAAS,EAAE,YAAY;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACpE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnD,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAChD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "noverload-mcp",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "MCP server for Noverload - Access saved content in AI tools with advanced search, synthesis, and token management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,16 +0,0 @@
1
- import { NoverloadClient } from "../client.js";
2
- export interface Tool {
3
- name: string;
4
- description: string;
5
- inputSchema: Record<string, unknown>;
6
- modifies: boolean;
7
- handler: (client: NoverloadClient, args: unknown) => Promise<{
8
- content: Array<{
9
- type: string;
10
- text: string;
11
- }>;
12
- data?: unknown;
13
- }>;
14
- }
15
- export declare const tools: Tool[];
16
- //# sourceMappingURL=index-old.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-old.d.ts","sourceRoot":"","sources":["../../src/tools/index-old.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAClI;AAED,eAAO,MAAM,KAAK,EAAE,IAAI,EAi+DvB,CAAC"}