keywordgraph-mcp-server 1.6.1 → 1.7.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 (40) hide show
  1. package/README.md +95 -89
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +2 -1
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/config/brand.d.ts +13 -0
  6. package/dist/config/brand.d.ts.map +1 -1
  7. package/dist/config/brand.js +21 -0
  8. package/dist/config/brand.js.map +1 -1
  9. package/dist/http-server.js +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/resources/about.d.ts.map +1 -1
  14. package/dist/resources/about.js +7 -6
  15. package/dist/resources/about.js.map +1 -1
  16. package/dist/schemas/index.d.ts +46 -6
  17. package/dist/schemas/index.d.ts.map +1 -1
  18. package/dist/schemas/index.js +91 -20
  19. package/dist/schemas/index.js.map +1 -1
  20. package/dist/tools/analyzeLlmResults.d.ts +1 -1
  21. package/dist/tools/analyzeLlmResults.d.ts.map +1 -1
  22. package/dist/tools/analyzeLlmResults.js +46 -19
  23. package/dist/tools/analyzeLlmResults.js.map +1 -1
  24. package/dist/tools/generateOntologyGraph.d.ts +1 -1
  25. package/dist/tools/generateOntologyGraph.d.ts.map +1 -1
  26. package/dist/tools/generateOntologyGraph.js +44 -21
  27. package/dist/tools/generateOntologyGraph.js.map +1 -1
  28. package/dist/tools/generateYoutubeSearchResultsGraph.d.ts +42 -0
  29. package/dist/tools/generateYoutubeSearchResultsGraph.d.ts.map +1 -0
  30. package/dist/tools/generateYoutubeSearchResultsGraph.js +97 -0
  31. package/dist/tools/generateYoutubeSearchResultsGraph.js.map +1 -0
  32. package/dist/tools/index.d.ts +1 -0
  33. package/dist/tools/index.d.ts.map +1 -1
  34. package/dist/tools/index.js +1 -0
  35. package/dist/tools/index.js.map +1 -1
  36. package/dist/utils/transformers.d.ts +1 -1
  37. package/dist/utils/transformers.d.ts.map +1 -1
  38. package/dist/utils/transformers.js +7 -1
  39. package/dist/utils/transformers.js.map +1 -1
  40. package/package.json +2 -1
package/README.md CHANGED
@@ -1,18 +1,18 @@
1
- # KeywordGraph MCP Server
1
+ # InfraNodus MCP Server
2
2
 
3
- A Model Context Protocol (MCP) server that integrates KeywordGraph knowledge graph and text network analysis capabilities into LLM workflows and AI assistants like Claude Desktop.
3
+ A Model Context Protocol (MCP) server that integrates InfraNodus knowledge graph and text network analysis capabilities into LLM workflows and AI assistants like Claude Desktop.
4
4
 
5
5
  ## Overview
6
6
 
7
- KeywordGraph MCP Server enables LLM workflows and AI assistants to analyze text using advanced network science algorithms, generate knowledge graphs, detect content gaps, and identify key topics and concepts. It transforms unstructured text into structured insights using graph theory and network analysis.
7
+ InfraNodus MCP Server enables LLM workflows and AI assistants to analyze text using advanced network science algorithms, generate knowledge graphs, detect content gaps, and identify key topics and concepts. It transforms unstructured text into structured insights using graph theory and network analysis.
8
8
 
9
- ![KeywordGraph MCP Server](https://keywordgraph.com/images/front/keywordgraph-overview.jpg)
9
+ ![InfraNodus MCP Server](https://infranodus.com/images/front/infranodus-overview.jpg)
10
10
 
11
11
  ## Features
12
12
 
13
13
  ### You Can Use It To
14
14
 
15
- - Connect your existing KeywordGraph knowledge graphs to your LLM workflows and AI chats
15
+ - Connect your existing InfraNodus knowledge graphs to your LLM workflows and AI chats
16
16
  - Identify the main topical clusters in discourse without missing the important nuances (works better than standard LLM workflows)
17
17
  - Identify the content gaps in any discourse (helpful for content creation and research)
18
18
  - Generate new knowledge graphs from any text and use them to augment your LLM responses
@@ -28,7 +28,7 @@ KeywordGraph MCP Server enables LLM workflows and AI assistants to analyze text
28
28
  - Perform entity detection for cleaner graphs
29
29
 
30
30
  2. **analyze_existing_graph_by_name**
31
- - Retrieve and analyze existing graphs from your KeywordGraph account
31
+ - Retrieve and analyze existing graphs from your InfraNodus account
32
32
  - Access previously saved analyses
33
33
  - Export graph data with full statistics
34
34
 
@@ -55,15 +55,15 @@ KeywordGraph MCP Server enables LLM workflows and AI assistants to analyze text
55
55
  - Use it to augment prompts in your LLM workflows and AI assistants
56
56
 
57
57
  7. **generate_research_questions**
58
- - Generate research questions that bridge content gaps from text, URL, or an existing KeywordGraph graph
58
+ - Generate research questions that bridge content gaps from text, URL, or an existing InfraNodus graph
59
59
  - Use them as prompts in your LLM models and AI workflows
60
- - Use any AI model (included in KeywordGraph API)
60
+ - Use any AI model (included in InfraNodus API)
61
61
  - Content gaps are identified based on topical clustering
62
62
 
63
63
  8. **generate_research_ideas**
64
64
  - Generate innovative research ideas based on content gaps identified in the text
65
65
  - Get actionable ideas to improve the text and develop the discourse
66
- - Use any AI model (included in KeywordGraph API)
66
+ - Use any AI model (included in InfraNodus API)
67
67
  - Ideas are generated from gaps between topical clusters
68
68
 
69
69
  9. **optimize_text_structure**
@@ -74,21 +74,21 @@ KeywordGraph MCP Server enables LLM workflows and AI assistants to analyze text
74
74
  - Choose response type: response, idea, question, or transcend
75
75
 
76
76
  10. **generate_responses_from_graph**
77
- - Generate responses based on an existing KeywordGraph graph
77
+ - Generate responses based on an existing InfraNodus graph
78
78
  - Integrate them into your LLM workflows and AI assistants
79
- - Use any AI model (included in KeywordGraph API)
79
+ - Use any AI model (included in InfraNodus API)
80
80
  - Use any prompt
81
81
 
82
82
  11. **develop_conceptual_bridges**
83
83
  - Analyze text and develop latent ideas based on concepts that connect this text to a broader discourse
84
84
  - Discover hidden themes and patterns that link your text to wider contexts
85
- - Use any AI model (included in KeywordGraph API)
85
+ - Use any AI model (included in InfraNodus API)
86
86
  - Generate insights that help develop the discourse
87
87
 
88
88
  12. **develop_latent_topics**
89
89
  - Analyze text and extract underdeveloped topics with ideas on how to develop them
90
90
  - Identify topics that need more attention and elaboration
91
- - Use any AI model (included in KeywordGraph API)
91
+ - Use any AI model (included in InfraNodus API)
92
92
  - Get actionable suggestions for content expansion
93
93
 
94
94
  13. **develop_text_tool**
@@ -99,12 +99,12 @@ KeywordGraph MCP Server enables LLM workflows and AI assistants to analyze text
99
99
  - Finds content gaps for deeper exploration
100
100
 
101
101
  14. **create_knowledge_graph**
102
- - Create a knowledge graph in KeywordGraph from text and provide a link to it
103
- - Use it to create a knowledge graph in KeywordGraph from text
102
+ - Create a knowledge graph in InfraNodus from text and provide a link to it
103
+ - Use it to create a knowledge graph in InfraNodus from text
104
104
 
105
105
  15. **generate_ontology_graph**
106
106
  - Use AI to generate a reasoning ontology graph (entities and the relations between them) from a topic, prompt, or text — e.g. "build an ontology on AI attention mechanisms"
107
- - Saved as a persistent KeywordGraph graph by default and a link is returned; set `saveGraph: false` if the user asks not to save, or when you only need a one-off AI ontology overview of a topic for the current context that won't be reused later (the generated statements are returned directly without persisting)
107
+ - Saved as a persistent InfraNodus graph by default and a link is returned; set `saveGraph: false` if the user asks not to save, or when you only need a one-off AI ontology overview of a topic for the current context that won't be reused later (the generated statements are returned directly without persisting)
108
108
  - `modelToUse` defaults to `claude-opus-4.6` for richer ontologies; pick `-mini`/`-lite` variants (or `gpt-4o-mini`) for faster, cheaper generation
109
109
  - Returns the compact graph structure (`knowledgeGraph`) and analytics (main topical clusters, content gaps, top influential nodes, top relations, statistics) by default. Set `includeGraph: false` to save context space when only the ontology statements or insights are needed. Set `includeAnalytics: false` if you just need the raw ontology without graph-derived insights — keep it on whenever you want to understand the structure, gaps, or key concepts
110
110
 
@@ -131,47 +131,53 @@ KeywordGraph MCP Server enables LLM workflows and AI assistants to analyze text
131
131
  - Generate a graph with keywords and topics for Google search results for a certain query
132
132
  - Use it to understand the current informational supply (what people find)
133
133
 
134
- 21. **analyze_related_search_queries**
134
+ 21. **analyze_youtube_results**
135
+ - Generate a graph with keywords and topics from YouTube results for a query, channel, or playlist
136
+ - Choose what to pull via `searchMode`: `search` (video metadata for a search term), `comments` (comments on a video), `channel` (a channel's videos — pass a username, URL, or @handle), `playlist` (a playlist's videos — pass a playlist ID or a URL with `list=`), `subtitles` / `subtitlesChannel` / `subtitlesPlaylist` (transcribed subtitles of a video / channel / playlist), or `searchVideos` (analyzes the content of the videos found — limit hard-capped to 20)
137
+ - Control results with `limit` (default 100, max 2000), `sortBy` (`Popular` / `Oldest` / `Latest`), `excludeDescriptions`, `importLanguage`, and `importRegion`
138
+ - Use it to understand the topics, clusters, and content gaps in the discourse around a video, channel, playlist, or search term on YouTube
139
+
140
+ 22. **analyze_related_search_queries**
135
141
  - Generate a graph from the search queries suggested by Google for a certain query
136
142
  - Use it to understand the current informational demand (what people are looking for)
137
143
 
138
- 22. **search_queries_vs_search_results**
144
+ 23. **search_queries_vs_search_results**
139
145
  - Generate a graph of keyword combinations and topics people tend to search for that do not readily appear in the search results for the same queries
140
146
  - Use it to understand what people search for but don't yet find
141
147
 
142
- 23. **generate_seo_report**
148
+ 24. **generate_seo_report**
143
149
  - Analyze content for SEO optimization by comparing it with Google search results and search queries
144
150
  - Identify content gaps and opportunities for better search visibility
145
151
  - Get comprehensive analysis of what's in search results but not in your text
146
152
  - Discover what people search for but don't find in current results
147
153
 
148
- 24. **memory_add_relations**
149
- - Add relations to the KeywordGraph memory from text
154
+ 25. **memory_add_relations**
155
+ - Add relations to the InfraNodus memory from text
150
156
  - Automatically detect entities or use [[wikilinks]] syntax to mark them
151
157
  - Save memory to a specified graph name for future retrieval
152
158
  - Support automatic entity extraction or manual entity marking
153
159
  - Provide links to created memory graphs for easy access
154
160
 
155
- 25. **memory_get_relations**
156
- - Retrieve relations from KeywordGraph memory for specific entities
161
+ 26. **memory_get_relations**
162
+ - Retrieve relations from InfraNodus memory for specific entities
157
163
  - Search for entity relations using [[wikilinks]] syntax
158
164
  - Query specific memory contexts or search across all memory graphs
159
165
  - Extract statements and relationships from stored knowledge graphs
160
166
  - Support both entity-specific searches and full context retrieval
161
167
 
162
- 26. **retrieve_from_knowledge_base**
163
- - Retrieve context from an existing KeywordGraph knowledge graph using GraphRAG
168
+ 27. **retrieve_from_knowledge_base**
169
+ - Retrieve context from an existing InfraNodus knowledge graph using GraphRAG
164
170
  - Query your knowledge base with a natural language prompt to get relevant statements
165
171
  - Include graph summaries for quick overviews of the knowledge structure
166
172
  - Optionally retrieve the full graph, statements, or extended analysis
167
173
  - Ideal for augmenting LLM responses with domain-specific knowledge
168
174
 
169
- 27. **search**
170
- - Search through existing KeywordGraph graphs
175
+ 28. **search**
176
+ - Search through existing InfraNodus graphs
171
177
  - Also use it to search through the public graphs of a specific user
172
178
  - Compatible with ChatGPT Deep Research mode via Developer Mode > Connectors
173
179
 
174
- 28. **fetch**
180
+ 29. **fetch**
175
181
  - Fetch a specific search result for a graph
176
182
  - Can be used in ChatGPT Deep Research mode via Developer Mode > Connectors
177
183
 
@@ -189,17 +195,17 @@ _More capabilites coming soon!_
189
195
 
190
196
  ## Knowledge Graph Memory Use Advice
191
197
 
192
- KeywordGraph represents any text as a network graph in order to identify the main clusters of ideas and gaps between them. This helps generate advanced insights based on the text's structure. The network is effectively a knowledge graph that can also be used to retrieve complex ontological relations between different entities and concepts. This process is automated in KeywordGraph using the `search` and `fetch` tools along with the other tools that analyze the underlying network.
198
+ InfraNodus represents any text as a network graph in order to identify the main clusters of ideas and gaps between them. This helps generate advanced insights based on the text's structure. The network is effectively a knowledge graph that can also be used to retrieve complex ontological relations between different entities and concepts. This process is automated in InfraNodus using the `search` and `fetch` tools along with the other tools that analyze the underlying network.
193
199
 
194
- However, you can also easily use KeywordGraph as a more traditional memory server to save and retrieve relations. We use [[wikilinks]] to highlight entities in your text to make your content and graphs compatible with markup syntax and PKM tools such as Obsidian. By default, KeywordGraph will generate the name of the memory graph for you based on the context of the conversation. However, you can modify this default behavior by adding a **system prompt** or **project instruction** into your LLM client.
200
+ However, you can also easily use InfraNodus as a more traditional memory server to save and retrieve relations. We use [[wikilinks]] to highlight entities in your text to make your content and graphs compatible with markup syntax and PKM tools such as Obsidian. By default, InfraNodus will generate the name of the memory graph for you based on the context of the conversation. However, you can modify this default behavior by adding a **system prompt** or **project instruction** into your LLM client.
195
201
 
196
202
  Specifically you can specify to always use a speciic knowlege graph for memories to store everything in one place:
197
203
 
198
204
  ```
199
- Save all memories in the `my-memories` graph in KeywordGraph.
205
+ Save all memories in the `my-memories` graph in InfraNodus.
200
206
  ```
201
207
 
202
- Or you can ask KeywordGraph to only save certain entities, e.g. for building social networks:
208
+ Or you can ask InfraNodus to only save certain entities, e.g. for building social networks:
203
209
 
204
210
  ```
205
211
  When generating entities, only extract people, companies, and organizations. Ignore everything else.
@@ -207,41 +213,41 @@ When generating entities, only extract people, companies, and organizations. Ign
207
213
 
208
214
  ## Installation
209
215
 
210
- The easiest and the fastest way to launch the KeywordGraph MCP server is to either use our server URL `https://mcp.keywordgraph.com` for the remote / web applications or to add a manual configuration to your LLM apps if you're running them locally.
216
+ The easiest and the fastest way to launch the InfraNodus MCP server is to either use our server URL `https://mcp.infranodus.com` for the remote / web applications or to add a manual configuration to your LLM apps if you're running them locally.
211
217
 
212
- You can also install the server locally, so you have more control over it. In this case, you can also edit the source files and even create your tools based on the [KeywordGraph API](https://keywordgraph.com/api).
218
+ You can also install the server locally, so you have more control over it. In this case, you can also edit the source files and even create your tools based on the [InfraNodus API](https://infranodus.com/api).
213
219
 
214
- Below we describe the two different ways to set up your KeywordGraph MCP server.
220
+ Below we describe the two different ways to set up your InfraNodus MCP server.
215
221
 
216
- ### 1. Easiest Setup: KeywordGraph MCP Server (via HTTP/SSE)
222
+ ### 1. Easiest Setup: InfraNodus MCP Server (via HTTP/SSE)
217
223
 
218
224
  0. **Prerequisites**
219
225
 
220
- - Create an account on [KeywordGraph](https://keywordgraph.com) if you don't have it already and get your [KeywordGraph API Key](https://keywordgraph.com/api-access). We offer 14-day free trials.
226
+ - Create an account on [InfraNodus](https://infranodus.com) if you don't have it already and get your [InfraNodus API Key](https://infranodus.com/api-access). We offer 14-day free trials.
221
227
 
222
228
  1. **Get the URL**
223
229
 
224
230
  - We currently use the following URL for our MCP server deployed in our infrastructure:
225
231
 
226
232
  ```bash
227
- https://mcp.keywordgraph.com
233
+ https://mcp.infranodus.com
228
234
  ```
229
235
 
230
- 2. **Add the MCP server URL to the Client Tool Where You Want to Use KeywordGraph**
236
+ 2. **Add the MCP server URL to the Client Tool Where You Want to Use InfraNodus**
231
237
 
232
- - Once you add the URL above to your tool, it will automatically prompt you to authenticate using OAuth in order to be able to access the KeywordGraph MCP hosted on it.
238
+ - Once you add the URL above to your tool, it will automatically prompt you to authenticate using OAuth in order to be able to access the InfraNodus MCP hosted on it.
233
239
 
234
- 4. **Using KeywordGraph Tools in Your Calls**
240
+ 4. **Using InfraNodus Tools in Your Calls**
235
241
 
236
- - To use KeywordGraph, see the tools available and simply call them through the chat interface (e.g. "show me the graphs where I talk about this topic" or "get the content gaps from the document I uploaded")
242
+ - To use InfraNodus, see the tools available and simply call them through the chat interface (e.g. "show me the graphs where I talk about this topic" or "get the content gaps from the document I uploaded")
237
243
 
238
- - If your client is not using KeywordGraph for some actions, add the instruction to use KeywordGraph explicitly.
244
+ - If your client is not using InfraNodus for some actions, add the instruction to use InfraNodus explicitly.
239
245
 
240
246
  ### 2. Manual Setup: via NPX
241
247
 
242
- You can deploy the KeywordGraph server manually via `npx` — a package that allows to execute local and remote Node.Js packages on your computer.
248
+ You can deploy the InfraNodus server manually via `npx` — a package that allows to execute local and remote Node.Js packages on your computer.
243
249
 
244
- The KeywordGraph MCP server is available as an npm package at [https://www.npmjs.com/package/keywordgraph-mcp-server](https://www.npmjs.com/package/keywordgraph-mcp-server) from where you can launch it remotely on your local computer with npx. It will expose its tools to the MCP client that will be using this command to launch the server
250
+ The InfraNodus MCP server is available as an npm package at [https://www.npmjs.com/package/infranodus-mcp-server](https://www.npmjs.com/package/infranodus-mcp-server) from where you can launch it remotely on your local computer with npx. It will expose its tools to the MCP client that will be using this command to launch the server
245
251
 
246
252
  #### For Claude Desktop / Cursor IDE:
247
253
 
@@ -250,11 +256,11 @@ Just add this in your Claude's configuration file (Settings > Developer > Edit C
250
256
  ```json
251
257
  {
252
258
  "mcpServers": {
253
- "keywordgraph": {
259
+ "infranodus": {
254
260
  "command": "npx",
255
- "args": ["-y", "keywordgraph-mcp-server"],
261
+ "args": ["-y", "infranodus-mcp-server"],
256
262
  "env": {
257
- "KEYWORDGRAPH_API_KEY": "YOUR_KEYWORDGRAPH_API_KEY"
263
+ "INFRANODUS_API_KEY": "YOUR_INFRANODUS_API_KEY"
258
264
  }
259
265
  }
260
266
  }
@@ -263,12 +269,12 @@ Just add this in your Claude's configuration file (Settings > Developer > Edit C
263
269
 
264
270
  #### For Claude Code
265
271
 
266
- To connect the KeywordGraph MCP server to your Claude code, you can use this command. Make sure to provide the correct KeywordGraph API key for your account:
272
+ To connect the InfraNodus MCP server to your Claude code, you can use this command. Make sure to provide the correct InfraNodus API key for your account:
267
273
 
268
274
  ```bash
269
- claude mcp add keywordgraph -s user \
270
- -- env KEYWORDGRAPH_API_KEY=YOUR_INRANODUS_KEY \
271
- npx -y keywordgraph-mcp-server
275
+ claude mcp add infranodus -s user \
276
+ -- env INFRANODUS_API_KEY=YOUR_INRANODUS_KEY \
277
+ npx -y infranodus-mcp-server
272
278
  ```
273
279
 
274
280
  ### 3. Manual Setup: Launching MCP as a Local Server (for inspection & development)
@@ -276,13 +282,13 @@ claude mcp add keywordgraph -s user \
276
282
  0. **Prerequisites**
277
283
 
278
284
  - Node.js 18+ installed
279
- - KeywordGraph API key (get yours at [https://keywordgraph.com/api-access](https://keywordgraph.com/api-access))
285
+ - InfraNodus API key (get yours at [https://infranodus.com/api-access](https://infranodus.com/api-access))
280
286
 
281
287
  1. **Clone and build the server:**
282
288
 
283
289
  ```bash
284
- git clone https://github.com/yourusername/mcp-server-keywordgraph.git
285
- cd mcp-server-keywordgraph
290
+ git clone https://github.com/yourusername/mcp-server-infranodus.git
291
+ cd mcp-server-infranodus
286
292
  npm install
287
293
  npm run build:inspect
288
294
  npm run inspect
@@ -295,7 +301,7 @@ Note that `build:inspect` will generate the `dist/index.js` file which you will
295
301
  Create a `.env` file in the project root:
296
302
 
297
303
  ```
298
- KEYWORDGRAPH_API_KEY=your-api-key-here
304
+ INFRANODUS_API_KEY=your-api-key-here
299
305
  ```
300
306
 
301
307
  3. **Inspect the MCP:**
@@ -312,18 +318,18 @@ Note that `build:inspect` will generate the `dist/index.js` file which you will
312
318
  open ~/Library/Application\ Support/Claude/claude_desktop_config.json
313
319
  ```
314
320
 
315
- 2. Add the KeywordGraph server configuration:
321
+ 2. Add the InfraNodus server configuration:
316
322
 
317
323
  a. remote launch via `npx`:
318
324
 
319
325
  ```json
320
326
  {
321
327
  "mcpServers": {
322
- "keywordgraph": {
328
+ "infranodus": {
323
329
  "command": "npx",
324
- "args": ["-y", "keywordgraph-mcp-server"],
330
+ "args": ["-y", "infranodus-mcp-server"],
325
331
  "env": {
326
- "KEYWORDGRAPH_API_KEY": "YOUR_KEYWORDGRAPH_API_KEY"
332
+ "INFRANODUS_API_KEY": "YOUR_INFRANODUS_API_KEY"
327
333
  }
328
334
  }
329
335
  }
@@ -335,18 +341,18 @@ b. launch this repo with `node`, specify the absolute path to the repo + `/dist/
335
341
  ```json
336
342
  {
337
343
  "mcpServers": {
338
- "keywordgraph": {
344
+ "infranodus": {
339
345
  "command": "node",
340
- "args": ["/absolute/path/to/mcp-server-keywordgraph/dist/index.js"],
346
+ "args": ["/absolute/path/to/mcp-server-infranodus/dist/index.js"],
341
347
  "env": {
342
- "KEYWORDGRAPH_API_KEY": "your-api-key-here"
348
+ "INFRANODUS_API_KEY": "your-api-key-here"
343
349
  }
344
350
  }
345
351
  }
346
352
  }
347
353
  ```
348
354
 
349
- **Note:** you can leave the `KEYWORDGRAPH_API_KEY` empty in which case you can make 70 free requests after which you will hit quota and will need to add your API key.
355
+ **Note:** you can leave the `INFRANODUS_API_KEY` empty in which case you can make 70 free requests after which you will hit quota and will need to add your API key.
350
356
 
351
357
  3. Restart Claude Desktop to load the new server.
352
358
 
@@ -358,18 +364,18 @@ b. launch this repo with `node`, specify the absolute path to the repo + `/dist/
358
364
  %APPDATA%\Claude\claude_desktop_config.json
359
365
  ```
360
366
 
361
- 2. Add the KeywordGraph server configuration:
367
+ 2. Add the InfraNodus server configuration:
362
368
 
363
369
  a. remote launch via `npx`:
364
370
 
365
371
  ```json
366
372
  {
367
373
  "mcpServers": {
368
- "keywordgraph": {
374
+ "infranodus": {
369
375
  "command": "npx",
370
- "args": ["-y", "keywordgraph-mcp-server"],
376
+ "args": ["-y", "infranodus-mcp-server"],
371
377
  "env": {
372
- "KEYWORDGRAPH_API_KEY": "YOUR_KEYWORDGRAPH_API_KEY"
378
+ "INFRANODUS_API_KEY": "YOUR_INFRANODUS_API_KEY"
373
379
  }
374
380
  }
375
381
  }
@@ -381,11 +387,11 @@ b. launch this repo with `node`:
381
387
  ```json
382
388
  {
383
389
  "mcpServers": {
384
- "keywordgraph": {
390
+ "infranodus": {
385
391
  "command": "node",
386
- "args": ["C:\\path\\to\\mcp-server-keywordgraph\\dist\\index.js"],
392
+ "args": ["C:\\path\\to\\mcp-server-infranodus\\dist\\index.js"],
387
393
  "env": {
388
- "KEYWORDGRAPH_API_KEY": "your-api-key-here"
394
+ "INFRANODUS_API_KEY": "your-api-key-here"
389
395
  }
390
396
  }
391
397
  }
@@ -401,26 +407,26 @@ b. launch this repo with `node`:
401
407
  For other applications supporting MCP, use the following command to start the server via npx:
402
408
 
403
409
  ```bash
404
- KEYWORDGRAPH_API_KEY=your-api-key npx -y keywordgraph-mcp-server
410
+ INFRANODUS_API_KEY=your-api-key npx -y infranodus-mcp-server
405
411
  ```
406
412
 
407
413
  or locally
408
414
 
409
415
  ```bash
410
- KEYWORDGRAPH_API_KEY=your-api-key node /path/to/mcp-server-keywordgraph/dist/index.js
416
+ INFRANODUS_API_KEY=your-api-key node /path/to/mcp-server-infranodus/dist/index.js
411
417
  ```
412
418
 
413
419
  The server communicates via stdio, so configure your application to run this command and communicate through standard input/output.
414
420
 
415
421
  ### Legacy Setup via Smithery
416
422
 
417
- KeywordGraph server is also available through Smithery: a repository of MCP servers that has an easy-to-follow installation process for most LLM clients. You will need a separate accout at Smithery though.
423
+ InfraNodus server is also available through Smithery: a repository of MCP servers that has an easy-to-follow installation process for most LLM clients. You will need a separate accout at Smithery though.
418
424
 
419
425
  - Create an account on [Smithery.Ai](https://smithery.ai/) (it's free and you can use your Google or GitHub login)
420
426
 
421
- - Then go to the [Smithery KeywordGraph Server](https://smithery.ai/server/@keywordgraph/mcp-server-keywordgraph), click "Configure" at the top right, and add your KeywordGraph API key there.
427
+ - Then go to the [Smithery InfraNodus Server](https://smithery.ai/server/@infranodus/mcp-server-infranodus), click "Configure" at the top right, and add your InfraNodus API key there.
422
428
 
423
- - Go to [Smithery KeywordGraph Server](https://smithery.ai/server/@keywordgraph/mcp-server-keywordgraph) and get the URL link from Smithery [https://server.smithery.ai/@keywordgraph/mcp-server-keywordgraph/mcp](https://server.smithery.ai/@keywordgraph/mcp-server-keywordgraph/mcp) for the server or use one of their automatic setup tools for Claude or Cursor.
429
+ - Go to [Smithery InfraNodus Server](https://smithery.ai/server/@infranodus/mcp-server-infranodus) and get the URL link from Smithery [https://server.smithery.ai/@infranodus/mcp-server-infranodus/mcp](https://server.smithery.ai/@infranodus/mcp-server-infranodus/mcp) for the server or use one of their automatic setup tools for Claude or Cursor.
424
430
 
425
431
  - You may need to get your separate Smithery API key and Smithery proile link to make this work.
426
432
 
@@ -429,9 +435,9 @@ KeywordGraph server is also available through Smithery: a repository of MCP serv
429
435
  ```json
430
436
  // e.g. Cursor will access directly the server via Smithery
431
437
  "mcpServers": {
432
- "mcp-server-keywordgraph": {
438
+ "mcp-server-infranodus": {
433
439
  "type": "http",
434
- "url": "https://server.smithery.ai/@keywordgraph/mcp-server-keywordgraph/mcp?api_key=YOUR_SMITHERY_KEY&profile=YOUR_SMITHERY_PROFILE",
440
+ "url": "https://server.smithery.ai/@infranodus/mcp-server-infranodus/mcp?api_key=YOUR_SMITHERY_KEY&profile=YOUR_SMITHERY_PROFILE",
435
441
  "headers": {}
436
442
  }
437
443
  }
@@ -443,13 +449,13 @@ KeywordGraph server is also available through Smithery: a repository of MCP serv
443
449
  // Claude uses a slightly different implementation
444
450
  // Fot this, it launches the MCP server on your local machine
445
451
  "mcpServers": {
446
- "mcp-server-keywordgraph": {
452
+ "mcp-server-infranodus": {
447
453
  "command": "npx",
448
454
  "args": [
449
455
  "-y",
450
456
  "@smithery/cli@latest",
451
457
  "run",
452
- "@keywordgraph/mcp-server-keywordgraph",
458
+ "@infranodus/mcp-server-infranodus",
453
459
  "--key",
454
460
  "YOUR_SMITHERY_KEY",
455
461
  "--profile",
@@ -459,16 +465,16 @@ KeywordGraph server is also available through Smithery: a repository of MCP serv
459
465
  }
460
466
  ```
461
467
 
462
- **Note**, in both cases, you'll automatically get the `YOUR_SMITHERY_KEY` and `YOUR_SMITHERY_PROFILE` values from Smithery when you copy the URL with credentials. These are not your KeywordGraph API keys. You can use the KeywordGraph API server without the API for the first 70 calls. Then you can add it to your Smithery profile and it will automatically connect to your account using the link above.
468
+ **Note**, in both cases, you'll automatically get the `YOUR_SMITHERY_KEY` and `YOUR_SMITHERY_PROFILE` values from Smithery when you copy the URL with credentials. These are not your InfraNodus API keys. You can use the InfraNodus API server without the API for the first 70 calls. Then you can add it to your Smithery profile and it will automatically connect to your account using the link above.
463
469
 
464
470
  ## Usage Examples
465
471
 
466
472
  Once installed, you can ask Claude to:
467
473
 
468
- - "Use KeywordGraph to analyze this text and show me the main topics"
474
+ - "Use InfraNodus to analyze this text and show me the main topics"
469
475
  - "Generate a knowledge graph from this document"
470
476
  - "Find content gaps in this article"
471
- - "Retrieve my existing graph called 'Research Notes' from KeywordGraph"
477
+ - "Retrieve my existing graph called 'Research Notes' from InfraNodus"
472
478
  - "What are the structural gaps in this text?"
473
479
  - "Identify the most influential concepts in this content"
474
480
 
@@ -516,7 +522,7 @@ Analyzes text and generates a knowledge graph.
516
522
 
517
523
  ### analyze_existing_graph_by_name
518
524
 
519
- Retrieves and analyzes an existing graph from your KeywordGraph account.
525
+ Retrieves and analyzes an existing graph from your InfraNodus account.
520
526
 
521
527
  **Parameters:**
522
528
 
@@ -595,7 +601,7 @@ The `generate_seo_report` tool demonstrates this pattern with 6 major progress c
595
601
 
596
602
  ### API Key Issues
597
603
 
598
- - Get your API key at: [https://keywordgraph.com/api-access](https://keywordgraph.com/api-access)
604
+ - Get your API key at: [https://infranodus.com/api-access](https://infranodus.com/api-access)
599
605
  - Ensure the key is correctly set in the configuration
600
606
  - Check that the key has not expired
601
607
 
@@ -610,9 +616,9 @@ npm run build
610
616
 
611
617
  ## Resources
612
618
 
613
- - [KeywordGraph Website](https://keywordgraph.com)
614
- - [KeywordGraph MCP](https://keywordgraph.com/mcp)
615
- - [KeywordGraph API Documentation](https://keywordgraph.com/api-access)
619
+ - [InfraNodus Website](https://infranodus.com)
620
+ - [InfraNodus MCP](https://infranodus.com/mcp)
621
+ - [InfraNodus API Documentation](https://infranodus.com/api-access)
616
622
  - [MCP Protocol Documentation](https://modelcontextprotocol.io)
617
623
  - [Graph Theory Concepts](https://noduslabs.com/research/)
618
624
 
@@ -625,5 +631,5 @@ MIT
625
631
  For issues related to:
626
632
 
627
633
  - This MCP server: Open an issue in this repository
628
- - KeywordGraph API: Contact support@keywordgraph.com
634
+ - InfraNodus API: Contact support@infranodus.com
629
635
  - MCP Protocol: Visit the [MCP community](https://modelcontextprotocol.io)
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,MAAM,GAAE,MAAe,GACrB,OAAO,CAAC,aAAa,CAAC,CAgCxB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,MAAM,GAAE,MAAe,GACrB,OAAO,CAAC,aAAa,CAAC,CAgCxB"}
@@ -1,8 +1,9 @@
1
1
  import { getConfig } from "./config-store.js";
2
+ import { brandSource } from "../config/brand.js";
2
3
  export async function makeInfraNodusRequest(endpoint, body, method = "POST") {
3
4
  try {
4
5
  const config = getConfig();
5
- const requestBody = { ...body, modal: "mcp_server" };
6
+ const requestBody = { ...body, modal: "mcp_server", source: brandSource() };
6
7
  const response = await fetch(`${config.apiBase}${endpoint}`, {
7
8
  method,
8
9
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,QAAgB,EAChB,IAAS,EACT,SAAiB,MAAM;IAEvB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAErD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE;YAC5D,MAAM;YACN,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aACxC;YACD,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,iCAAiC;QACjC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,wBAAwB,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,0DAA0D;QAC1D,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,QAAgB,EAChB,IAAS,EACT,SAAiB,MAAM;IAEvB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;QAE5E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE;YAC5D,MAAM;YACN,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aACxC;YACD,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,iCAAiC;QACjC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,wBAAwB,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,0DAA0D;QAC1D,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC"}
@@ -53,6 +53,19 @@ export declare const brand: BrandDef;
53
53
  export declare function brandApiKey(): string;
54
54
  /** API base for the active brand: brand-specific env var, else the brand default. */
55
55
  export declare function brandApiBase(): string;
56
+ /**
57
+ * Per-instance source tag sent to the API (as `source`) so analytics can tell
58
+ * deploys apart. Brand alone is not enough: e.g. the ExaltGrowth and
59
+ * KeywordGraph apps both run BRAND=keywordgraph, so they share a brand but are
60
+ * distinct instances.
61
+ *
62
+ * Resolution order:
63
+ * 1. MCP_SOURCE — explicit per-deploy override (set in each fly.*.toml).
64
+ * 2. FLY_APP_NAME — auto-injected by Fly; the trailing `-mcp-server` is
65
+ * stripped so e.g. `exaltgrowth-mcp-server` → `exaltgrowth`.
66
+ * 3. brand.id — final fallback for local/npm/smithery runs.
67
+ */
68
+ export declare function brandSource(): string;
56
69
  /** Whether a tool (by its MCP `name`) is exposed for the active brand. */
57
70
  export declare function isToolEnabled(name: string): boolean;
58
71
  //# sourceMappingURL=brand.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/config/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,cAAc,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,GAAG,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACF;AAsED,eAAO,MAAM,KAAK,EAAE,QAAyB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED,qFAAqF;AACrF,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/config/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,cAAc,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,GAAG,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACF;AAsED,eAAO,MAAM,KAAK,EAAE,QAAyB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED,qFAAqF;AACrF,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAQpC;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD"}
@@ -90,6 +90,27 @@ export function brandApiKey() {
90
90
  export function brandApiBase() {
91
91
  return process.env[`${brand.envPrefix}_API_BASE`] || brand.apiBase;
92
92
  }
93
+ /**
94
+ * Per-instance source tag sent to the API (as `source`) so analytics can tell
95
+ * deploys apart. Brand alone is not enough: e.g. the ExaltGrowth and
96
+ * KeywordGraph apps both run BRAND=keywordgraph, so they share a brand but are
97
+ * distinct instances.
98
+ *
99
+ * Resolution order:
100
+ * 1. MCP_SOURCE — explicit per-deploy override (set in each fly.*.toml).
101
+ * 2. FLY_APP_NAME — auto-injected by Fly; the trailing `-mcp-server` is
102
+ * stripped so e.g. `exaltgrowth-mcp-server` → `exaltgrowth`.
103
+ * 3. brand.id — final fallback for local/npm/smithery runs.
104
+ */
105
+ export function brandSource() {
106
+ const explicit = process.env.MCP_SOURCE?.trim();
107
+ if (explicit)
108
+ return explicit;
109
+ const flyApp = process.env.FLY_APP_NAME?.trim();
110
+ if (flyApp)
111
+ return flyApp.replace(/-mcp-server$/, "");
112
+ return brand.id;
113
+ }
93
114
  /** Whether a tool (by its MCP `name`) is exposed for the active brand. */
94
115
  export function isToolEnabled(name) {
95
116
  return !brand.excludedTools.includes(name);
@@ -1 +1 @@
1
- {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/config/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsCH,MAAM,MAAM,GAA8B;IACzC,UAAU,EAAE;QACX,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,+BAA+B;QACxC,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,uBAAuB;QACnC,aAAa,EAAE,EAAE;QACjB,GAAG,EAAE;YACJ,WAAW,EAAE,uBAAuB;YACpC,OAAO,EAAE,uBAAuB;YAChC,WAAW,EACV,iGAAiG;YAClG,UAAU,EAAE,yDAAyD;YACrE,QAAQ,EAAE;gBACT,KAAK;gBACL,wBAAwB;gBACxB,YAAY;gBACZ,iBAAiB;gBACjB,kBAAkB;aAClB;SACD;KACD;IACD,YAAY,EAAE;QACb,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,iCAAiC;QAC1C,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,yBAAyB;QACrC,kEAAkE;QAClE,yEAAyE;QACzE,aAAa,EAAE;YACd,0BAA0B;YAC1B,yBAAyB;YACzB,sBAAsB;YACtB,sBAAsB;YACtB,6BAA6B;YAC7B,yBAAyB;YACzB,+BAA+B;YAC/B,4BAA4B;YAC5B,uBAAuB;YACvB,0BAA0B;YAC1B,8BAA8B;SAC9B;QACD,GAAG,EAAE;YACJ,WAAW,EAAE,yBAAyB;YACtC,OAAO,EAAE,yBAAyB;YAClC,WAAW,EACV,mGAAmG;YACpG,UAAU,EAAE,6DAA6D;YACzE,QAAQ,EAAE;gBACT,KAAK;gBACL,wBAAwB;gBACxB,cAAc;gBACd,iBAAiB;gBACjB,kBAAkB;aAClB;SACD;KACD;CACD,CAAC;AAEF,SAAS,YAAY;IACpB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAA4B,CAAC;IACpD,OAAO,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAa,YAAY,EAAE,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,UAAU,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,EAAE,CACF,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;AACpE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/config/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsCH,MAAM,MAAM,GAA8B;IACzC,UAAU,EAAE;QACX,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,+BAA+B;QACxC,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,uBAAuB;QACnC,aAAa,EAAE,EAAE;QACjB,GAAG,EAAE;YACJ,WAAW,EAAE,uBAAuB;YACpC,OAAO,EAAE,uBAAuB;YAChC,WAAW,EACV,iGAAiG;YAClG,UAAU,EAAE,yDAAyD;YACrE,QAAQ,EAAE;gBACT,KAAK;gBACL,wBAAwB;gBACxB,YAAY;gBACZ,iBAAiB;gBACjB,kBAAkB;aAClB;SACD;KACD;IACD,YAAY,EAAE;QACb,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,iCAAiC;QAC1C,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,yBAAyB;QACrC,kEAAkE;QAClE,yEAAyE;QACzE,aAAa,EAAE;YACd,0BAA0B;YAC1B,yBAAyB;YACzB,sBAAsB;YACtB,sBAAsB;YACtB,6BAA6B;YAC7B,yBAAyB;YACzB,+BAA+B;YAC/B,4BAA4B;YAC5B,uBAAuB;YACvB,0BAA0B;YAC1B,8BAA8B;SAC9B;QACD,GAAG,EAAE;YACJ,WAAW,EAAE,yBAAyB;YACtC,OAAO,EAAE,yBAAyB;YAClC,WAAW,EACV,mGAAmG;YACpG,UAAU,EAAE,6DAA6D;YACzE,QAAQ,EAAE;gBACT,KAAK;gBACL,wBAAwB;gBACxB,cAAc;gBACd,iBAAiB;gBACjB,kBAAkB;aAClB;SACD;KACD;CACD,CAAC;AAEF,SAAS,YAAY;IACpB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAA4B,CAAC;IACpD,OAAO,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAa,YAAY,EAAE,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,UAAU,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,EAAE,CACF,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAEtD,OAAO,KAAK,CAAC,EAAE,CAAC;AACjB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC"}
@@ -793,7 +793,7 @@ app.get("/", (req, res, next) => {
793
793
  }
794
794
  res.json({
795
795
  name: `${brand.name} MCP Server`,
796
- version: "1.6.1",
796
+ version: "1.7.0",
797
797
  description: `MCP server for ${brand.name} knowledge graph analysis`,
798
798
  endpoints: {
799
799
  oauth: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AA0C7D,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACpC,MAAM,GACN,EAAE;IACF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACrC;;;;;;;;;;;;;;;;;;;;;;GAwGA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AAgD7D,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACpC,MAAM,GACN,EAAE;IACF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACrC;;;;;;;;;;;;;;;;;;;;;;GAyGA"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { configSchema, serverInfo } from "./config/index.js";
4
- import { brand, brandApiKey, brandApiBase, isToolEnabled } from "./config/brand.js";
5
- import { generateKnowledgeGraphTool, createKnowledgeGraphTool, generateOntologyGraphTool, analyzeLlmResultsTool, addMemoryTool, getMemoryTool, analyzeExistingGraphTool, analyzeTextTool, generateContentGapsTool, generateTopicalClustersTool, generateResearchQuestionsTool, generateResearchIdeasTool, generateResponsesFromGraphTool, generateContextualHintTool, retrieveContextForPromptFromGraphTool, developConceptualBridgesTool, developLatentTopicsTool, optimizeTextStructureTool, listGraphsTool, searchExistingGraphsTool, searchExistingGraphsFetchTool, generateOverlapGraphFromTextsTool, generateMergedGraphFromTextsTool, generateDifferenceGraphFromTextsTool, generateGoogleSearchResultsGraphTool, generateGoogleSearchQueriesGraphTool, generateGoogleResultsVsQueriesGraphTool, generateSEOGraphTool, developTextTool, } from "./tools/index.js";
4
+ import { brand, brandApiKey, brandApiBase, isToolEnabled, } from "./config/brand.js";
5
+ import { generateKnowledgeGraphTool, createKnowledgeGraphTool, generateOntologyGraphTool, analyzeLlmResultsTool, addMemoryTool, getMemoryTool, analyzeExistingGraphTool, analyzeTextTool, generateContentGapsTool, generateTopicalClustersTool, generateResearchQuestionsTool, generateResearchIdeasTool, generateResponsesFromGraphTool, generateContextualHintTool, retrieveContextForPromptFromGraphTool, developConceptualBridgesTool, developLatentTopicsTool, optimizeTextStructureTool, listGraphsTool, searchExistingGraphsTool, searchExistingGraphsFetchTool, generateOverlapGraphFromTextsTool, generateMergedGraphFromTextsTool, generateDifferenceGraphFromTextsTool, generateGoogleSearchResultsGraphTool, generateYoutubeSearchResultsGraphTool, generateGoogleSearchQueriesGraphTool, generateGoogleResultsVsQueriesGraphTool, generateSEOGraphTool, developTextTool, } from "./tools/index.js";
6
6
  import { aboutResource } from "./resources/about.js";
7
7
  import { llmsTxtResource, llmsFullTxtResource } from "./resources/llms-txt.js";
8
8
  import { prompts } from "./prompts/index.js";
@@ -36,7 +36,6 @@ export default function createServer({ config, }) {
36
36
  generateKnowledgeGraphTool,
37
37
  createKnowledgeGraphTool,
38
38
  generateOntologyGraphTool,
39
- analyzeLlmResultsTool,
40
39
  addMemoryTool,
41
40
  getMemoryTool,
42
41
  analyzeExistingGraphTool,
@@ -59,8 +58,10 @@ export default function createServer({ config, }) {
59
58
  generateMergedGraphFromTextsTool,
60
59
  generateDifferenceGraphFromTextsTool,
61
60
  generateGoogleSearchResultsGraphTool,
61
+ generateYoutubeSearchResultsGraphTool,
62
62
  generateGoogleSearchQueriesGraphTool,
63
63
  generateGoogleResultsVsQueriesGraphTool,
64
+ analyzeLlmResultsTool,
64
65
  generateSEOGraphTool,
65
66
  ];
66
67
  // Register tools enabled for the active brand