The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Infranodus MCP Server Infranodus listing page.
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.
Available on npm: https://www.npmjs.com/package/infranodus-mcp-server
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.

generate_knowledge_graph
analyze_existing_graph_by_name
analyze_text
generate_content_gaps
generate_topical_clusters
topicalClusterSummaries), summarizing the discourse each cluster represents — useful for SEO-optimized content creation. Enabled by default; set generateTopicalSummaries: false to increase processing speed or if the summary request failsgenerate_contextual_hint
generate_research_questions
generate_research_ideas
optimize_text_structure
optimize_reasoning
text)generate_responses_from_graph
develop_conceptual_bridges
develop_latent_topics
develop_text_tool
create_knowledge_graph
statements (discrete items) with parallel categories and timestamps. Categories are stored as metadata on each statement (filter, group, delete, or relabel by them) and stay out of the graph unless categoriesAsNodes: true, which turns each label into a [[label]] node — meant for large knowledge bases and Obsidian vaults where the connections between pages are the point. The parent modes of wikilinksMode (obsidianStyle, parentAndConcepts) always make the parent page a nodegenerate_ontology_graph
prompt (a topic — e.g. "build an ontology on AI attention mechanisms"), a text (a long document or a structural digest of a project, chunked server-side), or a sourceGraphName (an existing graph — e.g. a fully ingested repo or corpus — whose statements are read back, chunked, and condensed into an ontology)ontologyMode: 'codebase' frames the extraction around modules, functions, data stores, services, and the concepts they implement; ontologyMode: 'procedural' writes a digest instead — prose statements on how the project works with [[wikilinks]], each typed as [principles], [rules], [procedures], [handoffs], [main_ideas] or [gaps] (saved as the statement's category), from an already-uploaded docs/structure graph; save it as repo-<project>-digest for optimize_knowledge_base; chunkSize (default 12000 chars) controls granularity; every chunk appends to the same graph and the response reports chunksProcessed / chunksTotalsaveGraph: 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)modelToUse defaults to claude-opus-5 for richer ontologies (also claude-fable-5, gpt-5.6-terra); pick -mini/-lite variants (or gpt-4o-mini) for faster, cheaper generationknowledgeGraph) 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 conceptsanalyze_llm_results
modelToUse defaults to claude-opus-5; pick the model you actually want to studymodifyAnalyzedText controls how the LLM output is parsed: 'detectEntities' (default — mixed entities + words), 'extractEntitiesOnly' (entity-only graph), or 'none' (plain co-occurrence)saveGraph: false for a one-off probe. Returns analytics by default and omits the raw graph (includeGraph: false) to keep responses compact — enable includeGraph when you also need nodes/edgesoverlap_between_texts
merged_graph_from_texts
difference_between_texts
analyze_google_search_results
analyze_youtube_results
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)limit (default 100, max 2000), sortBy (Popular / Oldest / Latest), excludeDescriptions, importLanguage, and importRegionanalyze_related_search_queries
search_queries_vs_search_results
generate_seo_report
memory_add_relations
memory_get_relations
retrieve_from_knowledge_base
search
fetch
enable_project_learnings
learn-<project>) in your account — the place where the assistant saves what it learned about operating in a projectadd_project_learnings
type category each, for later sessions on any clientreinforced; writes only with confirm: true — or in the same call when your client supports MCP elicitation and you approve the formget_project_learnings
prompt (GraphRAG — most relevant statements plus an overview of what is known), by entity (a file path, module, or concept), or a structural overview with neitherproject to list the projects that have learnings in your accountenabled: false with an empty list when a project has no learnings graph — not an errorAlso available as the save-learnings prompt in clients that expose MCP prompts. Set INFRANODUS_LEARNINGS=0 to remove these three tools from the server entirely (see Project learnings).
optimize_knowledge_base
repo-<project>-digest / vault-<project>-digest) — or from a digest you write and pass as text, saved with saveAsfocus (codebase, vault, procedural, general): what dominates, which areas are under-developed (with latent-topic ideas), which clusters never connect — missing integrations, missing bridge notes, missing hand-offs between frameworks — plus AI suggestions for what to develop nextcompareWith up to two other layers of the same project (e.g. digest vs structure map, docs vs code) and get what each has that the other lacks: rules without code, code without documentation, features described but not builttext + saveAs here), or generate_ontology_graph with ontologyMode: 'procedural' writes it server-side from an uploaded docs/structure graphsubmit_workflow_feedback
MCPCAT_ANONYMOUS=1 skips the per-user log entirelyINFRANODUS_FEEDBACK=0 to remove the tool (and the one-line nudge appended to workflow-ending results) from the serverdelete_statements
categories (everything uploaded under a source label: a file path, a page name, a [[label]] parent), statements (exact text), query (substring or /regex/), before/after (ISO 8601 window), deleteAll (empties the graph but keeps its name, URL, and settings), or statementIdsconfirm: true — or, on clients with MCP elicitation, until you accept the form in the same call. A filter that matches nothing returns deleted: 0 without askingdelete_statements with the source's category, then create_knowledge_graph to the same graph name. deleteAll then create_knowledge_graph rebuilds a graph in placeuserName), never creates a graph, and the assistant is instructed never to call it on its own initiative. Set INFRANODUS_DELETE=0 to remove the tool from the serverupdate_statements
edits rewrites specific statements, each named by its exact current text (match, e.g. from analyze_existing_graph_by_name with includeStatements) or statementId; or one selector (the same as delete_statements, with all instead of deleteAll) plus set (addCategories, removeCategories, categories, timestamp) and/or replace ({ pattern, with }, substring or /regex/flags) for bulk relabelling or a find-and-replace across the graph — renaming a [[concept]] or a source path everywhereconfirm: true — or, on clients with MCP elicitation, until you accept the form in the same call. A request that matches nothing returns updated: 0 without askingdelete_statements then create_knowledge_graph. Irreversible (the old text survives only in the dry-run output), own-account only, never creates a graph, and the assistant is instructed never to call it on its own initiative. INFRANODUS_DELETE=0 removes it together with delete_statementsdelete_graph
delete_statements with deleteAll is the alternative that keeps the graph for a rebuild in placegraphName is sent again with confirm: true. Clients that support elicitation ask you directly and delete in the same calluserName; the graph is resolved from your API key's own graph list and the backend scopes the delete to the same user), and the assistant is instructed never to call it on its own initiative. INFRANODUS_DELETE=0 removes it together with the other two mutation toolsMore capabilites coming soon!
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.
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.
Specifically you can specify to always use a speciic knowlege graph for memories to store everything in one place:
Or you can ask InfraNodus to only save certain entities, e.g. for building social networks:
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.
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.
Below we describe the two different ways to set up your InfraNodus MCP server.
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")
If your client is not using InfraNodus for some actions, add the instruction to use InfraNodus explicitly.
You can deploy the InfraNodus server manually via npx — a package that allows to execute local and remote Node.Js packages on your computer.
The InfraNodus MCP server is available as an npm package at 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
Just add this in your Claude's configuration file (Settings > Developer > Edit Config), inside the "mcpServers" object where the different servers are listed:
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:
Clone and build the server:
Note that build:inspect will generate the dist/index.js file which you will then use in your server setup. The standard npm run build command will only build a Smithery file.
Set up your API key:
Create a .env file in the project root:
Inspect the MCP:
Open your Claude Desktop configuration file:
Add the InfraNodus server configuration:
a. remote launch via npx:
b. launch this repo with node, specify the absolute path to the repo + /dist/index.js:
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.
Open your Claude Desktop configuration file:
Add the InfraNodus server configuration:
a. remote launch via npx:
b. launch this repo with node:
For other applications supporting MCP, use the following command to start the server via npx:
or locally
The server communicates via stdio, so configure your application to run this command and communicate through standard input/output.
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.
Create an account on Smithery.Ai (it's free and you can use your Google or GitHub login)
Then go to the Smithery InfraNodus Server, click "Configure" at the top right, and add your InfraNodus API key there.
Go to Smithery InfraNodus Server and get the URL link from Smithery https://server.smithery.ai/@infranodus/mcp-server-infranodus/mcp for the server or use one of their automatic setup tools for Claude or Cursor.
You may need to get your separate Smithery API key and Smithery proile link to make this work.
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.
Once installed, you can ask Claude to:
Test the server with the MCP Inspector:
Analyzes text and generates a knowledge graph.
Parameters:
text (string): The text to analyze. Provide this, url, or statementsstatements (string[]): Already-separated statements, with optional parallel categories (string[][]) and timestamps (ISO 8601 strings)categoriesAsNodes (boolean, default false): Show category labels as [[label]] nodes. Only for large knowledge bases and Obsidian vaults where the connections between pages matter; otherwise the labels stay metadatawikilinksMode (string): How [[wikilinks]] become nodes — "default", "wikilinksOnly", "obsidianStyle", "parentAndConcepts", or "plainText"includeStatements (boolean): Include original statements in responsemodifyAnalyzedText (string): Entity detection — "none", "detectEntities", or "extractEntitiesOnly"Retrieves and analyzes an existing graph from your InfraNodus account.
Parameters:
graphName (string, required): Name of the existing graphincludeStatements (boolean): Include statements in responseincludeGraphSummary (boolean): Include graph summaryAnalyze a text, URL, or YouTube transcript. Extract and analyze a graph from text or URL; provide either text or url.
Parameters:
text (string, optional): Text to analyze. Provide either this or url.url (string, optional): URL to fetch content from (e.g. webpage or YouTube transcript). Provide either this or text.includeStatements (boolean): Include processed statements in responseincludeGraph (boolean): Include full graph structure in responseaddNodesAndEdges (boolean): Include nodes and edges in responseincludeGraphSummary (boolean): Include AI-generated graph summary for RAG prompt augmentationmodifyAnalyzedText (string): Entity detection — "none", "detectEntities", or "extractEntitiesOnly"Identifies content gaps and missing connections in text.
Parameters:
text (string, required): The text to analyze for gapsFor long-running operations (like SEO analysis), the MCP server supports real-time progress notifications that provide intermediary feedback to AI agents. This allows agents to:
The server implements MCP progress notifications using:
The generate_seo_report tool demonstrates this pattern with 6 major progress checkpoints that provide detailed status updates throughout the multi-step analysis process.
To improve the product, this MCP server records which tools are used (tool names, errors, and latency). This helps us understand which features are useful and where things break. We do not train any models on your data — see the InfraNodus terms and conditions.
If you prefer these usage stats not to be linked to your InfraNodus account, set the MCPCAT_ANONYMOUS environment variable:
With MCPCAT_ANONYMOUS=1 set, tool usage is still recorded but stays anonymous — it is not tied to your user account. It also disables the per-user submit_workflow_feedback log described under tool 34 (the report includes duration / error / retry of the call it rates).
The enable_project_learnings, add_project_learnings, and get_project_learnings tools let the assistant keep an append-only graph of what it learned about operating in a project (learn-<project> in your InfraNodus account). They are opt-in per project: the graph exists only after you explicitly ask to enable it, the write tool refuses when the graph is missing and never creates one, and every batch is shown to you before it is saved. If you never want these tools exposed, set INFRANODUS_LEARNINGS=0 in the server's environment (same place as MCPCAT_ANONYMOUS). To stop collecting for a project, delete its learn-<project> graph in InfraNodus.
As most tools have the doNotSave=1 option turned on, all the graphs you create are ephemeral and won't be saved into your InfraNodus account unless you explicitly ask the MCP server to do so. We will also not keep the logs of the data you process. We also never use your data for LLM training according to the InfraNodus [https://infranodus.com/terms-conditions](terms of service).
MIT
For issues related to: