mindgraph-mcp 0.14.5 → 0.14.7

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/cli.js CHANGED
@@ -2891,6 +2891,7 @@ async function handleRetrieve(client2, args) {
2891
2891
  limit,
2892
2892
  offset,
2893
2893
  include_chunks,
2894
+ include_documents,
2894
2895
  include_graph,
2895
2896
  graph_expansion_limit,
2896
2897
  graph_max_depth,
@@ -2908,6 +2909,10 @@ async function handleRetrieve(client2, args) {
2908
2909
  node_types,
2909
2910
  layer,
2910
2911
  chunk_limit: include_chunks ? limit ?? 5 : 0,
2912
+ // Scoped by default, never walled: the coding profile drops the
2913
+ // document/article leg (the "Bob Work" class of noise) unless the
2914
+ // model opts in for a genuinely document-shaped question.
2915
+ ...process.env.MINDGRAPH_PROFILE === "coding" && !include_documents ? { article_limit: 0 } : {},
2911
2916
  include_graph,
2912
2917
  graph_expansion_limit: graph_expansion_limit ?? 3,
2913
2918
  graph_max_depth: graph_max_depth ?? 2
@@ -3855,7 +3860,7 @@ var init_tools = __esm({
3855
3860
  },
3856
3861
  {
3857
3862
  name: "mindgraph_retrieve",
3858
- description: "Search and explore the knowledge graph. Use 'context' (default) for BM25 keyword retrieval plus bounded cheapest-first graph expansion \u2014 returns graph nodes only by default (labels, summaries, types, confidence); set include_chunks=true to also get full source text. Pass 1-3 discriminating keywords, not sentences. GOOD: 'Kissinger NATO'. BAD: 'What is Kissinger\\'s view on NATO?'. Use 'document_index' to list all ingested documents (titles, dates, UIDs) for orientation. Use 'semantic' when keywords return nothing \u2014 conceptual/fuzzy queries. Use 'hybrid' for keyword + semantic. Use 'text' for fast keyword-only. Use 'neighborhood'/'chain'/'path'/'subgraph' for graph traversal \u2014 traversal steps carry the cheapest witness path_cost (lower = stronger connection; sum of -ln(edge weight)), path_confidence, and witness depth. Use 'preferences' for advice or recommendation requests ('suggest a hotel', 'what should I read?') \u2014 it returns the user's stated/learned preferences relevant to the query (pass the topic as 'query'), so your answer reflects what they actually like instead of being generic. Other structured actions ('active_goals', 'open_questions', etc.) only when the user explicitly asks.",
3863
+ description: "Search and explore the knowledge graph. NOT for work state: for 'what was I working on' or resuming work, use mindgraph_plan action resume_work (structural, deterministic) \u2014 this tool is semantic/keyword recall over ALL knowledge. Use 'context' (default) for BM25 keyword retrieval plus bounded cheapest-first graph expansion \u2014 returns graph nodes only by default (labels, summaries, types, confidence); set include_chunks=true to also get full source text. Pass 1-3 discriminating keywords, not sentences. GOOD: 'Kissinger NATO'. BAD: 'What is Kissinger\\'s view on NATO?'. Use 'document_index' to list all ingested documents (titles, dates, UIDs) for orientation. Use 'semantic' when keywords return nothing \u2014 conceptual/fuzzy queries. Use 'hybrid' for keyword + semantic. Use 'text' for fast keyword-only. Use 'neighborhood'/'chain'/'path'/'subgraph' for graph traversal \u2014 traversal steps carry the cheapest witness path_cost (lower = stronger connection; sum of -ln(edge weight)), path_confidence, and witness depth. Use 'preferences' for advice or recommendation requests ('suggest a hotel', 'what should I read?') \u2014 it returns the user's stated/learned preferences relevant to the query (pass the topic as 'query'), so your answer reflects what they actually like instead of being generic. Other structured actions ('active_goals', 'open_questions', etc.) only when the user explicitly asks.",
3859
3864
  inputSchema: {
3860
3865
  type: "object",
3861
3866
  properties: {
@@ -3940,6 +3945,10 @@ var init_tools = __esm({
3940
3945
  type: "number",
3941
3946
  description: "Pagination offset (for stale_derivations)"
3942
3947
  },
3948
+ include_documents: {
3949
+ type: "boolean",
3950
+ description: "Include ingested documents and wiki articles in context results. The coding profile defaults these OFF so engineering questions aren't answered from unrelated ingested content; pass true when the question is about a document, spec, or article."
3951
+ },
3943
3952
  include_chunks: {
3944
3953
  type: "boolean",
3945
3954
  description: "Include source document chunks in context results (default: false \u2014 set true to fetch full chunk text for citations or deep reading)"
@@ -4891,6 +4900,11 @@ Capture knowledge when the user shares something worth remembering:
4891
4900
 
4892
4901
  ## Coding profile
4893
4902
 
4903
+ **Recall order (overrides the #1 rule above for work and code questions):**
4904
+ - "What was I working on?" / current work state / resuming anything: call \`mindgraph_plan\` action \`resume_work\` FIRST. Work state is structural; never answer it from keyword search ("recent work" famously retrieves people named Work).
4905
+ - Knowledge about specific code (a function, file, or route): \`mindgraph_code\` action \`recall\` \u2014 anchor-based, not keyword-based.
4906
+ - Broad knowledge searches: \`mindgraph_retrieve\` as usual, but when searching for work artifacts pass node_types filters (Task, Lesson, RiskAssessment, Claim) to keep personal-graph content out of engineering answers.
4907
+
4894
4908
  - Use mindgraph_sync for explicit, one-way project memory-file imports. It discovers and hashes files, but you deliberately map durable assertions with record; it never writes graph state back to files.
4895
4909
  - Capture corrections, decisions with rationale, fixes that survived meaningful failed attempts, durable invariants/preferences, and blockers with evidence.
4896
4910
  - Do not capture routine mechanics, transient command output, facts cheaply derivable from code, unsupported speculation as high-confidence lessons, or completion without evidence.
@@ -4903,7 +4917,7 @@ Capture knowledge when the user shares something worth remembering:
4903
4917
  server = new import_server.Server(
4904
4918
  {
4905
4919
  name: "mindgraph",
4906
- version: "0.14.5"
4920
+ version: "0.14.7"
4907
4921
  },
4908
4922
  {
4909
4923
  capabilities: {
package/dist/index.js CHANGED
@@ -1975,7 +1975,7 @@ var TOOLS = [
1975
1975
  },
1976
1976
  {
1977
1977
  name: "mindgraph_retrieve",
1978
- description: "Search and explore the knowledge graph. Use 'context' (default) for BM25 keyword retrieval plus bounded cheapest-first graph expansion \u2014 returns graph nodes only by default (labels, summaries, types, confidence); set include_chunks=true to also get full source text. Pass 1-3 discriminating keywords, not sentences. GOOD: 'Kissinger NATO'. BAD: 'What is Kissinger\\'s view on NATO?'. Use 'document_index' to list all ingested documents (titles, dates, UIDs) for orientation. Use 'semantic' when keywords return nothing \u2014 conceptual/fuzzy queries. Use 'hybrid' for keyword + semantic. Use 'text' for fast keyword-only. Use 'neighborhood'/'chain'/'path'/'subgraph' for graph traversal \u2014 traversal steps carry the cheapest witness path_cost (lower = stronger connection; sum of -ln(edge weight)), path_confidence, and witness depth. Use 'preferences' for advice or recommendation requests ('suggest a hotel', 'what should I read?') \u2014 it returns the user's stated/learned preferences relevant to the query (pass the topic as 'query'), so your answer reflects what they actually like instead of being generic. Other structured actions ('active_goals', 'open_questions', etc.) only when the user explicitly asks.",
1978
+ description: "Search and explore the knowledge graph. NOT for work state: for 'what was I working on' or resuming work, use mindgraph_plan action resume_work (structural, deterministic) \u2014 this tool is semantic/keyword recall over ALL knowledge. Use 'context' (default) for BM25 keyword retrieval plus bounded cheapest-first graph expansion \u2014 returns graph nodes only by default (labels, summaries, types, confidence); set include_chunks=true to also get full source text. Pass 1-3 discriminating keywords, not sentences. GOOD: 'Kissinger NATO'. BAD: 'What is Kissinger\\'s view on NATO?'. Use 'document_index' to list all ingested documents (titles, dates, UIDs) for orientation. Use 'semantic' when keywords return nothing \u2014 conceptual/fuzzy queries. Use 'hybrid' for keyword + semantic. Use 'text' for fast keyword-only. Use 'neighborhood'/'chain'/'path'/'subgraph' for graph traversal \u2014 traversal steps carry the cheapest witness path_cost (lower = stronger connection; sum of -ln(edge weight)), path_confidence, and witness depth. Use 'preferences' for advice or recommendation requests ('suggest a hotel', 'what should I read?') \u2014 it returns the user's stated/learned preferences relevant to the query (pass the topic as 'query'), so your answer reflects what they actually like instead of being generic. Other structured actions ('active_goals', 'open_questions', etc.) only when the user explicitly asks.",
1979
1979
  inputSchema: {
1980
1980
  type: "object",
1981
1981
  properties: {
@@ -2060,6 +2060,10 @@ var TOOLS = [
2060
2060
  type: "number",
2061
2061
  description: "Pagination offset (for stale_derivations)"
2062
2062
  },
2063
+ include_documents: {
2064
+ type: "boolean",
2065
+ description: "Include ingested documents and wiki articles in context results. The coding profile defaults these OFF so engineering questions aren't answered from unrelated ingested content; pass true when the question is about a document, spec, or article."
2066
+ },
2063
2067
  include_chunks: {
2064
2068
  type: "boolean",
2065
2069
  description: "Include source document chunks in context results (default: false \u2014 set true to fetch full chunk text for citations or deep reading)"
@@ -2923,6 +2927,7 @@ async function handleRetrieve(client2, args) {
2923
2927
  limit,
2924
2928
  offset,
2925
2929
  include_chunks,
2930
+ include_documents,
2926
2931
  include_graph,
2927
2932
  graph_expansion_limit,
2928
2933
  graph_max_depth,
@@ -2940,6 +2945,10 @@ async function handleRetrieve(client2, args) {
2940
2945
  node_types,
2941
2946
  layer,
2942
2947
  chunk_limit: include_chunks ? limit ?? 5 : 0,
2948
+ // Scoped by default, never walled: the coding profile drops the
2949
+ // document/article leg (the "Bob Work" class of noise) unless the
2950
+ // model opts in for a genuinely document-shaped question.
2951
+ ...process.env.MINDGRAPH_PROFILE === "coding" && !include_documents ? { article_limit: 0 } : {},
2943
2952
  include_graph,
2944
2953
  graph_expansion_limit: graph_expansion_limit ?? 3,
2945
2954
  graph_max_depth: graph_max_depth ?? 2
@@ -3929,6 +3938,11 @@ if (PROFILE === "coding") {
3929
3938
 
3930
3939
  ## Coding profile
3931
3940
 
3941
+ **Recall order (overrides the #1 rule above for work and code questions):**
3942
+ - "What was I working on?" / current work state / resuming anything: call \`mindgraph_plan\` action \`resume_work\` FIRST. Work state is structural; never answer it from keyword search ("recent work" famously retrieves people named Work).
3943
+ - Knowledge about specific code (a function, file, or route): \`mindgraph_code\` action \`recall\` \u2014 anchor-based, not keyword-based.
3944
+ - Broad knowledge searches: \`mindgraph_retrieve\` as usual, but when searching for work artifacts pass node_types filters (Task, Lesson, RiskAssessment, Claim) to keep personal-graph content out of engineering answers.
3945
+
3932
3946
  - Use mindgraph_sync for explicit, one-way project memory-file imports. It discovers and hashes files, but you deliberately map durable assertions with record; it never writes graph state back to files.
3933
3947
  - Capture corrections, decisions with rationale, fixes that survived meaningful failed attempts, durable invariants/preferences, and blockers with evidence.
3934
3948
  - Do not capture routine mechanics, transient command output, facts cheaply derivable from code, unsupported speculation as high-confidence lessons, or completion without evidence.
@@ -3941,7 +3955,7 @@ if (PROFILE === "coding") {
3941
3955
  var server = new import_server.Server(
3942
3956
  {
3943
3957
  name: "mindgraph",
3944
- version: "0.14.5"
3958
+ version: "0.14.7"
3945
3959
  },
3946
3960
  {
3947
3961
  capabilities: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mindgraph-mcp",
3
- "version": "0.14.5",
3
+ "version": "0.14.7",
4
4
  "description": "MCP server for MindGraph — connect Claude Desktop, Claude Code, and any MCP client to your knowledge graph",
5
5
  "repository": {
6
6
  "type": "git",