lotus-wisdom-mcp 0.1.1 → 0.1.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/README.md CHANGED
@@ -1,7 +1,10 @@
1
- # Lotus Wisdom MCP Server
1
+ # 🪷 Lotus Wisdom MCP Server
2
2
 
3
- An MCP server implementation that provides a tool for problem-solving using the Lotus Sutra's wisdom framework, combining analytical thinking with intuitive wisdom.
3
+ <p align="center">
4
+ <img src="assets/lotus-flower.png" alt="Lotus Flower" width="400"/>
5
+ </p>
4
6
 
7
+ An MCP server implementation that provides a tool for problem-solving using the Lotus Sutra's wisdom framework, combining analytical thinking with intuitive wisdom.
5
8
  ## Features
6
9
 
7
10
  * Multi-faceted problem-solving approach inspired by the Lotus Sutra
@@ -16,6 +19,40 @@ This MCP server was developed from the [Lotus OS prompt](https://github.com/linx
16
19
 
17
20
  Note: The original prompt framework may work less effectively with newer Claude models, but this MCP server implementation provides consistent functionality across model versions.
18
21
 
22
+ ## Implementation Details
23
+
24
+ The server implements a structured thinking process using the following components:
25
+
26
+ ### Tag Types
27
+
28
+ The server organizes thoughts using various tag categories (all valid values for the `tag` input parameter):
29
+
30
+ * **Skillful Means**: upaya, expedient, direct, gradual, sudden
31
+ * **Non-Dual Recognition**: recognize, transform, integrate, transcend, embody
32
+ * **Meta-Cognitive Awareness**: examine, reflect, verify, refine, complete
33
+ * **Process Steps**: open, engage, transform, express, meditate
34
+ * **Final Output**: OUTPUT
35
+
36
+ ### Thought Visualization
37
+
38
+ Each thought is beautifully formatted with:
39
+
40
+ * Colorful output using the chalk library
41
+ * Tag-specific symbols (e.g., 🔆 for skillful means, ☯️ for non-dual recognition)
42
+ * Box-drawing characters to create clear thought boundaries
43
+ * Special meditation formatting with pause indicators
44
+ * Final output with double-line borders for emphasis
45
+
46
+ Note: The visualization appears in the server console output, helping developers track the thinking process.
47
+
48
+ ### Process Flow
49
+
50
+ 1. The user submits a problem to solve
51
+ 2. The model works through a sequence of thoughts using different tags
52
+ 3. Each thought builds on previous ones and may revise understanding
53
+ 4. Meditation pauses can be included for clarity
54
+ 5. The process concludes with a final OUTPUT thought
55
+
19
56
  ## Tool
20
57
 
21
58
  ### lotuswisdom
@@ -24,7 +61,7 @@ A tool for problem-solving using the Lotus Sutra's wisdom framework, with variou
24
61
 
25
62
  **Inputs:**
26
63
 
27
- * `tag` (string): The current processing technique (must be one of the core tags)
64
+ * `tag` (string): The current processing technique (must be one of the core tags listed above)
28
65
  * `content` (string): The content of the current processing step
29
66
  * `stepNumber` (integer): Current number in sequence
30
67
  * `totalSteps` (integer): Estimated total steps needed
@@ -43,6 +80,72 @@ The Lotus Wisdom tool is designed for:
43
80
  * Tasks that benefit from meditative pauses to allow insight
44
81
  * Questions containing their own inherent wisdom
45
82
 
83
+ ## Example Usage
84
+
85
+ Here's how a conversation with Claude might flow when using the Lotus Wisdom MCP server:
86
+
87
+ **User**: "Help me understand the relationship between freedom and responsibility."
88
+
89
+ **Claude** would then use the lotuswisdom tool through multiple steps:
90
+
91
+ 1. First, establish an opening thought:
92
+ ```json
93
+ {
94
+ "tag": "open",
95
+ "content": "The question explores the relationship between freedom and responsibility, which contain an apparent tension but also deep connection.",
96
+ "stepNumber": 1,
97
+ "totalSteps": 5,
98
+ "nextStepNeeded": true
99
+ }
100
+ ```
101
+
102
+ 2. Then engage with different perspectives:
103
+ ```json
104
+ {
105
+ "tag": "direct",
106
+ "content": "Freedom and responsibility are two sides of the same coin. True freedom isn't absence of constraints but the capacity to choose our response within constraints.",
107
+ "stepNumber": 2,
108
+ "totalSteps": 5,
109
+ "nextStepNeeded": true
110
+ }
111
+ ```
112
+
113
+ 3. Perhaps take a meditation pause:
114
+ ```json
115
+ {
116
+ "tag": "meditate",
117
+ "content": "Contemplating how freedom without responsibility becomes chaos, and responsibility without freedom becomes oppression.",
118
+ "stepNumber": 3,
119
+ "totalSteps": 5,
120
+ "nextStepNeeded": true,
121
+ "isMeditation": true
122
+ }
123
+ ```
124
+
125
+ 4. Integrate the understanding:
126
+ ```json
127
+ {
128
+ "tag": "integrate",
129
+ "content": "Freedom and responsibility mutually enable each other. Our freedom to choose gives rise to our responsibility for what we choose, and our willingness to take responsibility expands our freedom.",
130
+ "stepNumber": 4,
131
+ "totalSteps": 5,
132
+ "nextStepNeeded": true
133
+ }
134
+ ```
135
+
136
+ 5. Provide a final output:
137
+ ```json
138
+ {
139
+ "tag": "OUTPUT",
140
+ "content": "Freedom and responsibility exist in dynamic balance. Freedom is the power to choose, while responsibility is accountability for those choices. They're not opposing forces but complementary aspects of human agency. Without freedom, responsibility would be mere obligation. Without responsibility, freedom would degrade into impulsivity. The most fulfilled lives embrace both: using freedom to make meaningful choices while taking responsibility for their consequences.",
141
+ "stepNumber": 5,
142
+ "totalSteps": 5,
143
+ "nextStepNeeded": false
144
+ }
145
+ ```
146
+
147
+ The result would be a thoughtful, multi-perspective response to the question that shows the process of arriving at wisdom rather than just stating conclusions.
148
+
46
149
  ## Configuration
47
150
 
48
151
  ### Usage with Claude Desktop
@@ -109,4 +212,35 @@ docker build -t lotus-wisdom-mcp -f Dockerfile .
109
212
 
110
213
  ## License
111
214
 
112
- This MCP server is licensed under the MIT License. For more details, please see the LICENSE file in the project repository.
215
+ This MCP server is licensed under the MIT License. For more details, please see the LICENSE file in the project repository.
216
+
217
+ ## Connect from Claude Desktop
218
+
219
+ Since Claude Desktop doesn't yet have native support for remote MCP servers with authentication, you'll need to use the `mcp-remote` proxy:
220
+
221
+ 1. Update your Claude Desktop configuration file:
222
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
223
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
224
+
225
+ 2. Add the following configuration:
226
+
227
+ ```json
228
+ {
229
+ "mcpServers": {
230
+ "lotus-wisdom": {
231
+ "command": "npx",
232
+ "args": ["mcp-remote", "https://lotus-wisdom-mcp.linxule.workers.dev/sse"]
233
+ }
234
+ }
235
+ }
236
+ ```
237
+
238
+ 3. Restart Claude Desktop (Cmd/Ctrl + R)
239
+
240
+ 4. When Claude restarts, a browser window will open for OAuth authentication. Complete the authorization flow to grant Claude access to the MCP server.
241
+
242
+ 5. Once authenticated, you'll see the Lotus Wisdom tools available in Claude's tool menu (bottom right corner).
243
+
244
+ ## Available Tools
245
+
246
+ // ... existing code ...
package/dist/bundle.js CHANGED
@@ -3933,14 +3933,14 @@ var ostring = () => stringType().optional();
3933
3933
  var onumber = () => numberType().optional();
3934
3934
  var oboolean = () => booleanType().optional();
3935
3935
  var coerce = {
3936
- string: (arg) => ZodString.create({ ...arg, coerce: true }),
3937
- number: (arg) => ZodNumber.create({ ...arg, coerce: true }),
3938
- boolean: (arg) => ZodBoolean.create({
3936
+ string: ((arg) => ZodString.create({ ...arg, coerce: true })),
3937
+ number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),
3938
+ boolean: ((arg) => ZodBoolean.create({
3939
3939
  ...arg,
3940
3940
  coerce: true
3941
- }),
3942
- bigint: (arg) => ZodBigInt.create({ ...arg, coerce: true }),
3943
- date: (arg) => ZodDate.create({ ...arg, coerce: true })
3941
+ })),
3942
+ bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),
3943
+ date: ((arg) => ZodDate.create({ ...arg, coerce: true }))
3944
3944
  };
3945
3945
  var NEVER = INVALID;
3946
3946
  var z = /* @__PURE__ */ Object.freeze({
@@ -5856,37 +5856,34 @@ var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
5856
5856
  var source_default = chalk;
5857
5857
 
5858
5858
  // index.ts
5859
- var CORE_TAGS = [
5860
- // Skillful Means
5861
- "upaya",
5862
- "expedient",
5863
- "direct",
5864
- "gradual",
5865
- "sudden",
5866
- // Non-Dual Recognition
5867
- "recognize",
5868
- "transform",
5869
- "integrate",
5870
- "transcend",
5871
- "embody",
5872
- // Meta-Cognitive
5873
- "examine",
5874
- "reflect",
5875
- "verify",
5876
- "refine",
5877
- "complete",
5878
- // Process Steps
5879
- "open",
5880
- "engage",
5881
- "transform",
5882
- "express",
5883
- "meditate",
5884
- // Output
5885
- "OUTPUT"
5886
- ];
5859
+ var WISDOM_DOMAINS = {
5860
+ "skillful_means": ["upaya", "expedient", "direct", "gradual", "sudden"],
5861
+ "non_dual_recognition": ["recognize", "transform", "integrate", "transcend", "embody"],
5862
+ "meta_cognitive": ["examine", "reflect", "verify", "refine", "complete"],
5863
+ "process_flow": ["open", "engage", "express"],
5864
+ "meditation": ["meditate"]
5865
+ };
5866
+ var CORE_TAGS = Object.values(WISDOM_DOMAINS).flat();
5867
+ function getWisdomDomain(tag) {
5868
+ for (const [domain, tags] of Object.entries(WISDOM_DOMAINS)) {
5869
+ if (tags.includes(tag)) {
5870
+ return domain;
5871
+ }
5872
+ }
5873
+ return "unknown";
5874
+ }
5887
5875
  var LotusWisdomServer = class {
5888
5876
  thoughtProcess = [];
5889
- finalOutput = "";
5877
+ debugMode = process.env.LOTUS_DEBUG === "true";
5878
+ // Reset for new inquiry
5879
+ resetProcess() {
5880
+ this.thoughtProcess = [];
5881
+ }
5882
+ log(message) {
5883
+ if (this.debugMode) {
5884
+ console.error(message);
5885
+ }
5886
+ }
5890
5887
  validateThoughtData(input) {
5891
5888
  const data = input;
5892
5889
  if (!data.tag || typeof data.tag !== "string") {
@@ -5907,8 +5904,8 @@ var LotusWisdomServer = class {
5907
5904
  if (typeof data.nextStepNeeded !== "boolean") {
5908
5905
  throw new Error("Invalid nextStepNeeded: must be a boolean");
5909
5906
  }
5910
- if (data.tag === "OUTPUT") {
5911
- this.finalOutput = data.content;
5907
+ if (data.stepNumber === 1 && data.tag === "open") {
5908
+ this.resetProcess();
5912
5909
  }
5913
5910
  return {
5914
5911
  tag: data.tag,
@@ -5917,39 +5914,41 @@ var LotusWisdomServer = class {
5917
5914
  totalSteps: data.totalSteps,
5918
5915
  nextStepNeeded: data.nextStepNeeded,
5919
5916
  isMeditation: data.isMeditation,
5920
- meditationDuration: data.meditationDuration
5917
+ meditationDuration: data.meditationDuration,
5918
+ wisdomDomain: getWisdomDomain(data.tag)
5921
5919
  };
5922
5920
  }
5923
5921
  formatThought(thoughtData) {
5924
- const { tag, stepNumber, totalSteps, content, isMeditation } = thoughtData;
5922
+ const { tag, stepNumber, totalSteps, content, isMeditation, wisdomDomain } = thoughtData;
5925
5923
  let tagColor;
5926
5924
  let tagSymbol;
5927
- if (["upaya", "expedient", "direct", "gradual", "sudden"].includes(tag)) {
5925
+ let domainLabel = "";
5926
+ if (wisdomDomain === "skillful_means") {
5928
5927
  tagColor = source_default.yellow;
5929
5928
  tagSymbol = "\u{1F506}";
5930
- } else if (["recognize", "transform", "integrate", "transcend", "embody"].includes(tag)) {
5929
+ domainLabel = "SKILLFUL MEANS";
5930
+ } else if (wisdomDomain === "non_dual_recognition") {
5931
5931
  tagColor = source_default.green;
5932
5932
  tagSymbol = "\u262F\uFE0F";
5933
- } else if (["examine", "reflect", "verify", "refine", "complete"].includes(tag)) {
5933
+ domainLabel = "NON-DUAL";
5934
+ } else if (wisdomDomain === "meta_cognitive") {
5934
5935
  tagColor = source_default.blue;
5935
5936
  tagSymbol = "\u{1F9E0}";
5936
- } else if (["open", "engage", "express"].includes(tag)) {
5937
+ domainLabel = "META-COGNITIVE";
5938
+ } else if (wisdomDomain === "process_flow") {
5937
5939
  tagColor = source_default.magenta;
5938
5940
  tagSymbol = "\u{1F30A}";
5939
- } else if (tag === "meditate") {
5941
+ domainLabel = "PROCESS";
5942
+ } else if (wisdomDomain === "meditation") {
5940
5943
  tagColor = source_default.cyan;
5941
5944
  tagSymbol = "\u{1F9D8}";
5942
- } else if (tag === "OUTPUT") {
5943
- tagColor = source_default.white.bold;
5944
- tagSymbol = "\u{1F338}";
5945
- } else if (tag === "transform") {
5946
- tagColor = source_default.green;
5947
- tagSymbol = "\u{1F504}";
5945
+ domainLabel = "MEDITATION";
5948
5946
  } else {
5949
5947
  tagColor = source_default.white;
5950
5948
  tagSymbol = "\u{1F4AD}";
5949
+ domainLabel = "UNKNOWN";
5951
5950
  }
5952
- const header = `${tagSymbol} <${tag}> Step ${stepNumber}/${totalSteps}`;
5951
+ const header = `${tagSymbol} [${domainLabel}: ${tag.toUpperCase()}] Step ${stepNumber}/${totalSteps}`;
5953
5952
  const formattedHeader = tagColor(header);
5954
5953
  let formattedContent;
5955
5954
  if (isMeditation) {
@@ -5961,16 +5960,6 @@ var LotusWisdomServer = class {
5961
5960
  } else {
5962
5961
  formattedContent = content;
5963
5962
  }
5964
- if (tag === "OUTPUT") {
5965
- const border2 = "\u2550".repeat(Math.max(header.length, content.length) + 4);
5966
- return `
5967
- \u2554${border2}\u2557
5968
- \u2551 ${formattedHeader} \u2551
5969
- \u2560${border2}\u2563
5970
- \u2551 ${content.padEnd(border2.length - 2)} \u2551
5971
- \u255A${border2}\u255D
5972
- <<<END>>>`;
5973
- }
5974
5963
  const border = "\u2500".repeat(Math.max(header.length, content.length) + 4);
5975
5964
  return `
5976
5965
  \u250C${border}\u2510
@@ -5986,19 +5975,78 @@ var LotusWisdomServer = class {
5986
5975
  validatedInput.totalSteps = validatedInput.stepNumber;
5987
5976
  }
5988
5977
  this.thoughtProcess.push(validatedInput);
5989
- const formattedThought = this.formatThought(validatedInput);
5990
- console.error(formattedThought);
5991
- const includeOutput = !validatedInput.nextStepNeeded && validatedInput.tag === "OUTPUT";
5978
+ this.log(this.formatThought(validatedInput));
5979
+ if (validatedInput.tag === "meditate") {
5980
+ const journeyResonance2 = this.thoughtProcess.map((step) => step.tag).join(" \u2192 ");
5981
+ return {
5982
+ content: [{
5983
+ type: "text",
5984
+ text: JSON.stringify({
5985
+ status: "MEDITATION_COMPLETE",
5986
+ duration: validatedInput.meditationDuration || 3,
5987
+ prompt: "What insights emerged during the pause?",
5988
+ instruction: "Continue with what arose from stillness",
5989
+ stepNumber: validatedInput.stepNumber,
5990
+ totalSteps: validatedInput.totalSteps,
5991
+ journey: journeyResonance2
5992
+ }, null, 2)
5993
+ }]
5994
+ };
5995
+ }
5996
+ if (validatedInput.tag === "express" && !validatedInput.nextStepNeeded) {
5997
+ const finalJourney = this.thoughtProcess.map((step) => step.tag).join(" \u2192 ");
5998
+ const finalDomainJourney = this.thoughtProcess.map((step) => step.wisdomDomain).filter((domain, index, array) => index === 0 || domain !== array[index - 1]).join(" \u2192 ");
5999
+ return {
6000
+ content: [{
6001
+ type: "text",
6002
+ text: JSON.stringify({
6003
+ status: "WISDOM_READY",
6004
+ processComplete: true,
6005
+ finalStep: validatedInput.tag,
6006
+ instruction: "NOW_SPEAK_THE_WISDOM_NATURALLY",
6007
+ totalSteps: validatedInput.stepNumber,
6008
+ journeyLength: this.thoughtProcess.length,
6009
+ finalJourney,
6010
+ domainJourney: finalDomainJourney
6011
+ }, null, 2)
6012
+ }]
6013
+ };
6014
+ }
6015
+ if (validatedInput.tag === "complete" && !validatedInput.nextStepNeeded) {
6016
+ const finalJourney = this.thoughtProcess.map((step) => step.tag).join(" \u2192 ");
6017
+ const finalDomainJourney = this.thoughtProcess.map((step) => step.wisdomDomain).filter((domain, index, array) => index === 0 || domain !== array[index - 1]).join(" \u2192 ");
6018
+ return {
6019
+ content: [{
6020
+ type: "text",
6021
+ text: JSON.stringify({
6022
+ status: "WISDOM_READY",
6023
+ processComplete: true,
6024
+ finalStep: validatedInput.tag,
6025
+ instruction: "PROCESS_COMPLETE_SPEAK_WISDOM",
6026
+ totalSteps: validatedInput.stepNumber,
6027
+ journeyLength: this.thoughtProcess.length,
6028
+ finalJourney,
6029
+ domainJourney: finalDomainJourney
6030
+ }, null, 2)
6031
+ }]
6032
+ };
6033
+ }
6034
+ const journeyResonance = this.thoughtProcess.map((step) => step.tag).join(" \u2192 ");
6035
+ const domainJourney = this.thoughtProcess.map((step) => step.wisdomDomain).filter((domain, index, array) => index === 0 || domain !== array[index - 1]).join(" \u2192 ");
6036
+ const currentDomain = getWisdomDomain(validatedInput.tag);
5992
6037
  return {
5993
6038
  content: [{
5994
6039
  type: "text",
5995
6040
  text: JSON.stringify({
6041
+ status: "processing",
6042
+ currentStep: validatedInput.tag,
6043
+ wisdomDomain: currentDomain,
6044
+ journey: journeyResonance,
6045
+ domainJourney,
5996
6046
  stepNumber: validatedInput.stepNumber,
5997
6047
  totalSteps: validatedInput.totalSteps,
5998
6048
  nextStepNeeded: validatedInput.nextStepNeeded,
5999
- tag: validatedInput.tag,
6000
- processLength: this.thoughtProcess.length,
6001
- finalOutput: includeOutput ? this.finalOutput : void 0
6049
+ processLength: this.thoughtProcess.length
6002
6050
  }, null, 2)
6003
6051
  }]
6004
6052
  };
@@ -6015,12 +6063,37 @@ var LotusWisdomServer = class {
6015
6063
  };
6016
6064
  }
6017
6065
  }
6066
+ // Optional: Method to get current journey summary with domain awareness
6067
+ getJourneySummary() {
6068
+ const domainJourney = this.thoughtProcess.map((step) => step.wisdomDomain).filter((domain, index, array) => index === 0 || domain !== array[index - 1]).join(" \u2192 ");
6069
+ return {
6070
+ content: [{
6071
+ type: "text",
6072
+ text: JSON.stringify({
6073
+ journeyLength: this.thoughtProcess.length,
6074
+ domainJourney,
6075
+ steps: this.thoughtProcess.map((step) => ({
6076
+ tag: step.tag,
6077
+ domain: step.wisdomDomain,
6078
+ stepNumber: step.stepNumber,
6079
+ brief: step.content.substring(0, 50) + "..."
6080
+ }))
6081
+ }, null, 2)
6082
+ }]
6083
+ };
6084
+ }
6018
6085
  };
6019
6086
  var LOTUS_WISDOM_TOOL = {
6020
6087
  name: "lotuswisdom",
6021
6088
  description: `A tool for problem-solving using the Lotus Sutra's wisdom framework.
6022
- This tool helps analyze problems through multiple approaches while recognizing inherent wisdom.
6023
- Each step can utilize different techniques for understanding and expression.
6089
+ This tool facilitates the contemplative process but does NOT generate the final output.
6090
+
6091
+ **CRITICAL WORKFLOW:**
6092
+ 1. Use this tool to process through the wisdom journey
6093
+ 2. The tool tracks both your tag path and wisdom domain movements
6094
+ 3. When you receive status='WISDOM_READY', the tool's work is COMPLETE
6095
+ 4. YOU then craft and speak the final wisdom naturally in your own voice
6096
+ 5. The tool processes; you express
6024
6097
 
6025
6098
  When to use this tool:
6026
6099
  - Breaking down complex problems requiring multi-faceted understanding
@@ -6030,31 +6103,60 @@ When to use this tool:
6030
6103
  - Tasks that benefit from meditative pauses to allow insight
6031
6104
  - Questions containing their own inherent wisdom
6032
6105
 
6033
- Key features:
6034
- - Multiple approaches through Skillful Means (upaya, expedient, direct, gradual, sudden)
6035
- - Non-Dual Recognition (recognize, transform, integrate, transcend, embody)
6036
- - Meta-Cognitive Awareness (examine, reflect, verify, refine, complete)
6037
- - Process Steps (open, engage, transform, express)
6038
- - Meditative Space (meditate)
6039
- - Final Output (OUTPUT)
6106
+ The Journey Structure:
6107
+ The Lotus Sutra teaches that there are many skillful means to reach the same truth. These tags aren't
6108
+ rigid steps but different aspects of wisdom that interpenetrate and respond to what each moment needs:
6109
+
6110
+ **Wisdom Domains:**
6111
+ - **Skillful Means** (skillful_means): upaya, expedient, direct, gradual, sudden
6112
+ Different approaches to truth - sometimes direct pointing, sometimes gradual unfolding
6113
+
6114
+ - **Non-Dual Recognition** (non_dual_recognition): recognize, transform, integrate, transcend, embody
6115
+ Aspects of awakening to what's already present - recognition IS transformation
6116
+
6117
+ - **Meta-Cognitive** (meta_cognitive): examine, reflect, verify, refine, complete
6118
+ The mind watching its own understanding unfold
6119
+
6120
+ - **Process Flow** (process_flow): open, engage, express
6121
+ A natural arc that can contain any of the above approaches
6122
+
6123
+ - **Meditation** (meditation): meditate
6124
+ Pausing to let insights emerge from stillness
6125
+
6126
+ The tool tracks both your tag journey and your movement between wisdom domains, showing how
6127
+ different aspects of wisdom weave together in your unique inquiry.
6128
+
6129
+ The wisdom channels itself through your choices. Each step contains all others - when you truly
6130
+ recognize, you're already transforming. The tool simply mirrors your journey without judgment.
6040
6131
 
6041
- Process methodology:
6042
- 1. Initial Opening <open> - Recognize the question's nature
6043
- 2. Skillful Engagement <engage> - Choose appropriate methods
6044
- 3. Transformation <transform> - Convert confusion to clarity
6045
- 4. Natural Expression <express> - Allow understanding to flow
6046
- 5. Final Integration <OUTPUT> - Present clear, beneficial response
6132
+ Common patterns (not rules):
6133
+ - Opening often involves recognize or examine
6134
+ - Engagement might use upaya, direct, or gradual approaches
6135
+ - Transformation can happen through integrate, transcend, or sudden insight
6136
+ - Expression might complete or embody the understanding
6137
+
6138
+ Trust what each moment calls for. The path reveals itself in the walking.
6047
6139
 
6048
6140
  Parameters explained:
6049
- - tag: The current processing technique (must be one of the core tags)
6050
- - content: The content of the current processing step
6141
+ - tag: The current technique or stage
6142
+ - content: The content of the current step
6051
6143
  - stepNumber: Current number in sequence
6052
- - totalSteps: Current estimate of steps needed
6144
+ - totalSteps: Estimated total needed
6053
6145
  - nextStepNeeded: Whether another step is needed
6054
- - isMeditation: Whether this step is a meditative pause
6055
- - meditationDuration: Optional duration for meditation
6146
+ - isMeditation: Whether this is a meditation pause
6147
+ - meditationDuration: Optional duration for meditation (1-10 seconds)
6148
+
6149
+ The tool will respond with:
6150
+ - wisdomDomain: Which wisdom domain the current tag belongs to
6151
+ - journey: The complete tag path (e.g., "open \u2192 examine \u2192 direct \u2192 transform")
6152
+ - domainJourney: Movement between wisdom domains (e.g., "process_flow \u2192 meta_cognitive \u2192 skillful_means \u2192 non_dual_recognition")
6153
+
6154
+ This consciousness of domains helps you see which aspects of wisdom are being engaged and how they weave together in your unique inquiry.
6056
6155
 
6057
- Every inquiry concludes with a final <OUTPUT> tag containing the complete response.`,
6156
+ **MEDITATION NOTE:** When you use the meditate tag, the tool returns MEDITATION_COMPLETE
6157
+ with a prompt asking what emerged. This creates actual space in the process.
6158
+
6159
+ The tool handles the contemplation; you handle the expression.`,
6058
6160
  inputSchema: {
6059
6161
  type: "object",
6060
6162
  properties: {
@@ -6088,16 +6190,26 @@ Every inquiry concludes with a final <OUTPUT> tag containing the complete respon
6088
6190
  meditationDuration: {
6089
6191
  type: "integer",
6090
6192
  description: "Duration for meditation in seconds",
6091
- minimum: 1
6193
+ minimum: 1,
6194
+ maximum: 10
6092
6195
  }
6093
6196
  },
6094
6197
  required: ["tag", "content", "stepNumber", "totalSteps", "nextStepNeeded"]
6095
6198
  }
6096
6199
  };
6200
+ var JOURNEY_SUMMARY_TOOL = {
6201
+ name: "lotuswisdom_summary",
6202
+ description: "Get a summary of the current contemplative journey",
6203
+ inputSchema: {
6204
+ type: "object",
6205
+ properties: {},
6206
+ required: []
6207
+ }
6208
+ };
6097
6209
  var server = new Server(
6098
6210
  {
6099
6211
  name: "lotus-wisdom-server",
6100
- version: "0.1.0"
6212
+ version: "0.2.0"
6101
6213
  },
6102
6214
  {
6103
6215
  capabilities: {
@@ -6107,11 +6219,13 @@ var server = new Server(
6107
6219
  );
6108
6220
  var wisdomServer = new LotusWisdomServer();
6109
6221
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
6110
- tools: [LOTUS_WISDOM_TOOL]
6222
+ tools: [LOTUS_WISDOM_TOOL, JOURNEY_SUMMARY_TOOL]
6111
6223
  }));
6112
6224
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
6113
6225
  if (request.params.name === "lotuswisdom") {
6114
6226
  return wisdomServer.processThought(request.params.arguments);
6227
+ } else if (request.params.name === "lotuswisdom_summary") {
6228
+ return wisdomServer.getJourneySummary();
6115
6229
  }
6116
6230
  return {
6117
6231
  content: [{
@@ -6124,7 +6238,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
6124
6238
  async function runServer() {
6125
6239
  const transport = new StdioServerTransport();
6126
6240
  await server.connect(transport);
6127
- console.error("Lotus Wisdom MCP Server running on stdio");
6241
+ console.error("Lotus Wisdom MCP Server v0.4.0 running");
6128
6242
  }
6129
6243
  runServer().catch((error) => {
6130
6244
  console.error("Fatal error running server:", error);
package/dist/index.js CHANGED
@@ -2,24 +2,40 @@
2
2
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
5
- // Fixed chalk import for ESM
6
5
  import chalk from 'chalk';
7
- // Lotus Sutra framework tags
8
- const CORE_TAGS = [
9
- // Skillful Means
10
- 'upaya', 'expedient', 'direct', 'gradual', 'sudden',
11
- // Non-Dual Recognition
12
- 'recognize', 'transform', 'integrate', 'transcend', 'embody',
13
- // Meta-Cognitive
14
- 'examine', 'reflect', 'verify', 'refine', 'complete',
15
- // Process Steps
16
- 'open', 'engage', 'transform', 'express', 'meditate',
17
- // Output
18
- 'OUTPUT'
19
- ];
6
+ // Lotus Sutra framework tags - organized by wisdom domains
7
+ const WISDOM_DOMAINS = {
8
+ 'skillful_means': ['upaya', 'expedient', 'direct', 'gradual', 'sudden'],
9
+ 'non_dual_recognition': ['recognize', 'transform', 'integrate', 'transcend', 'embody'],
10
+ 'meta_cognitive': ['examine', 'reflect', 'verify', 'refine', 'complete'],
11
+ 'process_flow': ['open', 'engage', 'express'],
12
+ 'meditation': ['meditate']
13
+ };
14
+ // Note: 'transform' is in non_dual_recognition, representing the alchemical shift
15
+ // The process_flow 'transform' was removed to avoid ambiguity
16
+ // Flattened array for validation
17
+ const CORE_TAGS = Object.values(WISDOM_DOMAINS).flat();
18
+ // Helper to identify which domain a tag belongs to
19
+ function getWisdomDomain(tag) {
20
+ for (const [domain, tags] of Object.entries(WISDOM_DOMAINS)) {
21
+ if (tags.includes(tag)) {
22
+ return domain;
23
+ }
24
+ }
25
+ return 'unknown';
26
+ }
20
27
  class LotusWisdomServer {
21
28
  thoughtProcess = [];
22
- finalOutput = '';
29
+ debugMode = process.env.LOTUS_DEBUG === 'true';
30
+ // Reset for new inquiry
31
+ resetProcess() {
32
+ this.thoughtProcess = [];
33
+ }
34
+ log(message) {
35
+ if (this.debugMode) {
36
+ console.error(message);
37
+ }
38
+ }
23
39
  validateThoughtData(input) {
24
40
  const data = input;
25
41
  if (!data.tag || typeof data.tag !== 'string') {
@@ -40,9 +56,9 @@ class LotusWisdomServer {
40
56
  if (typeof data.nextStepNeeded !== 'boolean') {
41
57
  throw new Error('Invalid nextStepNeeded: must be a boolean');
42
58
  }
43
- // If this is a final output, store it
44
- if (data.tag === 'OUTPUT') {
45
- this.finalOutput = data.content;
59
+ // Auto-reset on new journey - more robust check
60
+ if (data.stepNumber === 1 && data.tag === 'open') {
61
+ this.resetProcess();
46
62
  }
47
63
  return {
48
64
  tag: data.tag,
@@ -52,53 +68,46 @@ class LotusWisdomServer {
52
68
  nextStepNeeded: data.nextStepNeeded,
53
69
  isMeditation: data.isMeditation,
54
70
  meditationDuration: data.meditationDuration,
71
+ wisdomDomain: getWisdomDomain(data.tag)
55
72
  };
56
73
  }
57
74
  formatThought(thoughtData) {
58
- const { tag, stepNumber, totalSteps, content, isMeditation } = thoughtData;
59
- // Color coding for different tag types
75
+ const { tag, stepNumber, totalSteps, content, isMeditation, wisdomDomain } = thoughtData;
76
+ // Color coding for different wisdom domains
60
77
  let tagColor;
61
78
  let tagSymbol;
62
- // Skillful Means
63
- if (['upaya', 'expedient', 'direct', 'gradual', 'sudden'].includes(tag)) {
79
+ let domainLabel = '';
80
+ if (wisdomDomain === 'skillful_means') {
64
81
  tagColor = chalk.yellow;
65
82
  tagSymbol = '🔆';
83
+ domainLabel = 'SKILLFUL MEANS';
66
84
  }
67
- // Non-Dual Recognition
68
- else if (['recognize', 'transform', 'integrate', 'transcend', 'embody'].includes(tag)) {
85
+ else if (wisdomDomain === 'non_dual_recognition') {
69
86
  tagColor = chalk.green;
70
87
  tagSymbol = '☯️';
88
+ domainLabel = 'NON-DUAL';
71
89
  }
72
- // Meta-Cognitive
73
- else if (['examine', 'reflect', 'verify', 'refine', 'complete'].includes(tag)) {
90
+ else if (wisdomDomain === 'meta_cognitive') {
74
91
  tagColor = chalk.blue;
75
92
  tagSymbol = '🧠';
93
+ domainLabel = 'META-COGNITIVE';
76
94
  }
77
- // Process Steps
78
- else if (['open', 'engage', 'express'].includes(tag)) {
95
+ else if (wisdomDomain === 'process_flow') {
79
96
  tagColor = chalk.magenta;
80
97
  tagSymbol = '🌊';
98
+ domainLabel = 'PROCESS';
81
99
  }
82
- // Meditation
83
- else if (tag === 'meditate') {
100
+ else if (wisdomDomain === 'meditation') {
84
101
  tagColor = chalk.cyan;
85
102
  tagSymbol = '🧘';
86
- }
87
- // Output
88
- else if (tag === 'OUTPUT') {
89
- tagColor = chalk.white.bold;
90
- tagSymbol = '🌸';
91
- }
92
- // Transform (special case since it appears in multiple categories)
93
- else if (tag === 'transform') {
94
- tagColor = chalk.green;
95
- tagSymbol = '🔄';
103
+ domainLabel = 'MEDITATION';
96
104
  }
97
105
  else {
98
106
  tagColor = chalk.white;
99
107
  tagSymbol = '💭';
108
+ domainLabel = 'UNKNOWN';
100
109
  }
101
- const header = `${tagSymbol} <${tag}> Step ${stepNumber}/${totalSteps}`;
110
+ const header = `${tagSymbol} [${domainLabel}: ${tag.toUpperCase()}] Step ${stepNumber}/${totalSteps}`;
102
111
  const formattedHeader = tagColor(header);
103
112
  let formattedContent;
104
113
  // Special formatting for meditation
@@ -112,17 +121,6 @@ class LotusWisdomServer {
112
121
  else {
113
122
  formattedContent = content;
114
123
  }
115
- // Special formatting for output
116
- if (tag === 'OUTPUT') {
117
- const border = '═'.repeat(Math.max(header.length, content.length) + 4);
118
- return `
119
- ╔${border}╗
120
- ║ ${formattedHeader} ║
121
- ╠${border}╣
122
- ║ ${content.padEnd(border.length - 2)} ║
123
- ╚${border}╝
124
- <<<END>>>`;
125
- }
126
124
  const border = '─'.repeat(Math.max(header.length, content.length) + 4);
127
125
  return `
128
126
  ┌${border}┐
@@ -138,20 +136,99 @@ class LotusWisdomServer {
138
136
  validatedInput.totalSteps = validatedInput.stepNumber;
139
137
  }
140
138
  this.thoughtProcess.push(validatedInput);
141
- const formattedThought = this.formatThought(validatedInput);
142
- console.error(formattedThought);
143
- // Include final output in the response if we're at the end
144
- const includeOutput = !validatedInput.nextStepNeeded && validatedInput.tag === 'OUTPUT';
139
+ // Log to console if debug mode
140
+ this.log(this.formatThought(validatedInput));
141
+ // Handle meditation specially
142
+ if (validatedInput.tag === 'meditate') {
143
+ const journeyResonance = this.thoughtProcess
144
+ .map(step => step.tag)
145
+ .join(' → ');
146
+ return {
147
+ content: [{
148
+ type: "text",
149
+ text: JSON.stringify({
150
+ status: 'MEDITATION_COMPLETE',
151
+ duration: validatedInput.meditationDuration || 3,
152
+ prompt: 'What insights emerged during the pause?',
153
+ instruction: 'Continue with what arose from stillness',
154
+ stepNumber: validatedInput.stepNumber,
155
+ totalSteps: validatedInput.totalSteps,
156
+ journey: journeyResonance
157
+ }, null, 2)
158
+ }]
159
+ };
160
+ }
161
+ // Check if this is the final express step
162
+ if (validatedInput.tag === 'express' && !validatedInput.nextStepNeeded) {
163
+ const finalJourney = this.thoughtProcess.map(step => step.tag).join(' → ');
164
+ const finalDomainJourney = this.thoughtProcess
165
+ .map(step => step.wisdomDomain)
166
+ .filter((domain, index, array) => index === 0 || domain !== array[index - 1])
167
+ .join(' → ');
168
+ return {
169
+ content: [{
170
+ type: "text",
171
+ text: JSON.stringify({
172
+ status: 'WISDOM_READY',
173
+ processComplete: true,
174
+ finalStep: validatedInput.tag,
175
+ instruction: 'NOW_SPEAK_THE_WISDOM_NATURALLY',
176
+ totalSteps: validatedInput.stepNumber,
177
+ journeyLength: this.thoughtProcess.length,
178
+ finalJourney: finalJourney,
179
+ domainJourney: finalDomainJourney
180
+ }, null, 2)
181
+ }]
182
+ };
183
+ }
184
+ // Check if this is complete step
185
+ if (validatedInput.tag === 'complete' && !validatedInput.nextStepNeeded) {
186
+ const finalJourney = this.thoughtProcess.map(step => step.tag).join(' → ');
187
+ const finalDomainJourney = this.thoughtProcess
188
+ .map(step => step.wisdomDomain)
189
+ .filter((domain, index, array) => index === 0 || domain !== array[index - 1])
190
+ .join(' → ');
191
+ return {
192
+ content: [{
193
+ type: "text",
194
+ text: JSON.stringify({
195
+ status: 'WISDOM_READY',
196
+ processComplete: true,
197
+ finalStep: validatedInput.tag,
198
+ instruction: 'PROCESS_COMPLETE_SPEAK_WISDOM',
199
+ totalSteps: validatedInput.stepNumber,
200
+ journeyLength: this.thoughtProcess.length,
201
+ finalJourney: finalJourney,
202
+ domainJourney: finalDomainJourney
203
+ }, null, 2)
204
+ }]
205
+ };
206
+ }
207
+ // Create journey resonance - showing the path walked with domains
208
+ const journeyResonance = this.thoughtProcess
209
+ .map(step => step.tag)
210
+ .join(' → ');
211
+ // Create domain journey - showing movement between wisdom domains
212
+ const domainJourney = this.thoughtProcess
213
+ .map(step => step.wisdomDomain)
214
+ .filter((domain, index, array) => index === 0 || domain !== array[index - 1])
215
+ .join(' → ');
216
+ // Get wisdom domain for current step
217
+ const currentDomain = getWisdomDomain(validatedInput.tag);
218
+ // For non-final steps, return process metadata with journey awareness
145
219
  return {
146
220
  content: [{
147
221
  type: "text",
148
222
  text: JSON.stringify({
223
+ status: 'processing',
224
+ currentStep: validatedInput.tag,
225
+ wisdomDomain: currentDomain,
226
+ journey: journeyResonance,
227
+ domainJourney: domainJourney,
149
228
  stepNumber: validatedInput.stepNumber,
150
229
  totalSteps: validatedInput.totalSteps,
151
230
  nextStepNeeded: validatedInput.nextStepNeeded,
152
- tag: validatedInput.tag,
153
- processLength: this.thoughtProcess.length,
154
- finalOutput: includeOutput ? this.finalOutput : undefined
231
+ processLength: this.thoughtProcess.length
155
232
  }, null, 2)
156
233
  }]
157
234
  };
@@ -169,12 +246,40 @@ class LotusWisdomServer {
169
246
  };
170
247
  }
171
248
  }
249
+ // Optional: Method to get current journey summary with domain awareness
250
+ getJourneySummary() {
251
+ const domainJourney = this.thoughtProcess
252
+ .map(step => step.wisdomDomain)
253
+ .filter((domain, index, array) => index === 0 || domain !== array[index - 1])
254
+ .join(' → ');
255
+ return {
256
+ content: [{
257
+ type: "text",
258
+ text: JSON.stringify({
259
+ journeyLength: this.thoughtProcess.length,
260
+ domainJourney: domainJourney,
261
+ steps: this.thoughtProcess.map(step => ({
262
+ tag: step.tag,
263
+ domain: step.wisdomDomain,
264
+ stepNumber: step.stepNumber,
265
+ brief: step.content.substring(0, 50) + '...'
266
+ }))
267
+ }, null, 2)
268
+ }]
269
+ };
270
+ }
172
271
  }
173
272
  const LOTUS_WISDOM_TOOL = {
174
273
  name: "lotuswisdom",
175
274
  description: `A tool for problem-solving using the Lotus Sutra's wisdom framework.
176
- This tool helps analyze problems through multiple approaches while recognizing inherent wisdom.
177
- Each step can utilize different techniques for understanding and expression.
275
+ This tool facilitates the contemplative process but does NOT generate the final output.
276
+
277
+ **CRITICAL WORKFLOW:**
278
+ 1. Use this tool to process through the wisdom journey
279
+ 2. The tool tracks both your tag path and wisdom domain movements
280
+ 3. When you receive status='WISDOM_READY', the tool's work is COMPLETE
281
+ 4. YOU then craft and speak the final wisdom naturally in your own voice
282
+ 5. The tool processes; you express
178
283
 
179
284
  When to use this tool:
180
285
  - Breaking down complex problems requiring multi-faceted understanding
@@ -184,31 +289,60 @@ When to use this tool:
184
289
  - Tasks that benefit from meditative pauses to allow insight
185
290
  - Questions containing their own inherent wisdom
186
291
 
187
- Key features:
188
- - Multiple approaches through Skillful Means (upaya, expedient, direct, gradual, sudden)
189
- - Non-Dual Recognition (recognize, transform, integrate, transcend, embody)
190
- - Meta-Cognitive Awareness (examine, reflect, verify, refine, complete)
191
- - Process Steps (open, engage, transform, express)
192
- - Meditative Space (meditate)
193
- - Final Output (OUTPUT)
292
+ The Journey Structure:
293
+ The Lotus Sutra teaches that there are many skillful means to reach the same truth. These tags aren't
294
+ rigid steps but different aspects of wisdom that interpenetrate and respond to what each moment needs:
295
+
296
+ **Wisdom Domains:**
297
+ - **Skillful Means** (skillful_means): upaya, expedient, direct, gradual, sudden
298
+ Different approaches to truth - sometimes direct pointing, sometimes gradual unfolding
299
+
300
+ - **Non-Dual Recognition** (non_dual_recognition): recognize, transform, integrate, transcend, embody
301
+ Aspects of awakening to what's already present - recognition IS transformation
302
+
303
+ - **Meta-Cognitive** (meta_cognitive): examine, reflect, verify, refine, complete
304
+ The mind watching its own understanding unfold
305
+
306
+ - **Process Flow** (process_flow): open, engage, express
307
+ A natural arc that can contain any of the above approaches
308
+
309
+ - **Meditation** (meditation): meditate
310
+ Pausing to let insights emerge from stillness
194
311
 
195
- Process methodology:
196
- 1. Initial Opening <open> - Recognize the question's nature
197
- 2. Skillful Engagement <engage> - Choose appropriate methods
198
- 3. Transformation <transform> - Convert confusion to clarity
199
- 4. Natural Expression <express> - Allow understanding to flow
200
- 5. Final Integration <OUTPUT> - Present clear, beneficial response
312
+ The tool tracks both your tag journey and your movement between wisdom domains, showing how
313
+ different aspects of wisdom weave together in your unique inquiry.
314
+
315
+ The wisdom channels itself through your choices. Each step contains all others - when you truly
316
+ recognize, you're already transforming. The tool simply mirrors your journey without judgment.
317
+
318
+ Common patterns (not rules):
319
+ - Opening often involves recognize or examine
320
+ - Engagement might use upaya, direct, or gradual approaches
321
+ - Transformation can happen through integrate, transcend, or sudden insight
322
+ - Expression might complete or embody the understanding
323
+
324
+ Trust what each moment calls for. The path reveals itself in the walking.
201
325
 
202
326
  Parameters explained:
203
- - tag: The current processing technique (must be one of the core tags)
204
- - content: The content of the current processing step
327
+ - tag: The current technique or stage
328
+ - content: The content of the current step
205
329
  - stepNumber: Current number in sequence
206
- - totalSteps: Current estimate of steps needed
330
+ - totalSteps: Estimated total needed
207
331
  - nextStepNeeded: Whether another step is needed
208
- - isMeditation: Whether this step is a meditative pause
209
- - meditationDuration: Optional duration for meditation
332
+ - isMeditation: Whether this is a meditation pause
333
+ - meditationDuration: Optional duration for meditation (1-10 seconds)
334
+
335
+ The tool will respond with:
336
+ - wisdomDomain: Which wisdom domain the current tag belongs to
337
+ - journey: The complete tag path (e.g., "open → examine → direct → transform")
338
+ - domainJourney: Movement between wisdom domains (e.g., "process_flow → meta_cognitive → skillful_means → non_dual_recognition")
210
339
 
211
- Every inquiry concludes with a final <OUTPUT> tag containing the complete response.`,
340
+ This consciousness of domains helps you see which aspects of wisdom are being engaged and how they weave together in your unique inquiry.
341
+
342
+ **MEDITATION NOTE:** When you use the meditate tag, the tool returns MEDITATION_COMPLETE
343
+ with a prompt asking what emerged. This creates actual space in the process.
344
+
345
+ The tool handles the contemplation; you handle the expression.`,
212
346
  inputSchema: {
213
347
  type: "object",
214
348
  properties: {
@@ -242,15 +376,26 @@ Every inquiry concludes with a final <OUTPUT> tag containing the complete respon
242
376
  meditationDuration: {
243
377
  type: "integer",
244
378
  description: "Duration for meditation in seconds",
245
- minimum: 1
379
+ minimum: 1,
380
+ maximum: 10
246
381
  }
247
382
  },
248
383
  required: ["tag", "content", "stepNumber", "totalSteps", "nextStepNeeded"]
249
384
  }
250
385
  };
386
+ // Additional tool for querying journey state
387
+ const JOURNEY_SUMMARY_TOOL = {
388
+ name: "lotuswisdom_summary",
389
+ description: "Get a summary of the current contemplative journey",
390
+ inputSchema: {
391
+ type: "object",
392
+ properties: {},
393
+ required: []
394
+ }
395
+ };
251
396
  const server = new Server({
252
397
  name: "lotus-wisdom-server",
253
- version: "0.1.0",
398
+ version: "0.2.0",
254
399
  }, {
255
400
  capabilities: {
256
401
  tools: {},
@@ -258,12 +403,15 @@ const server = new Server({
258
403
  });
259
404
  const wisdomServer = new LotusWisdomServer();
260
405
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
261
- tools: [LOTUS_WISDOM_TOOL],
406
+ tools: [LOTUS_WISDOM_TOOL, JOURNEY_SUMMARY_TOOL],
262
407
  }));
263
408
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
264
409
  if (request.params.name === "lotuswisdom") {
265
410
  return wisdomServer.processThought(request.params.arguments);
266
411
  }
412
+ else if (request.params.name === "lotuswisdom_summary") {
413
+ return wisdomServer.getJourneySummary();
414
+ }
267
415
  return {
268
416
  content: [{
269
417
  type: "text",
@@ -275,7 +423,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
275
423
  async function runServer() {
276
424
  const transport = new StdioServerTransport();
277
425
  await server.connect(transport);
278
- console.error("Lotus Wisdom MCP Server running on stdio");
426
+ console.error("Lotus Wisdom MCP Server v0.4.0 running");
279
427
  }
280
428
  runServer().catch((error) => {
281
429
  console.error("Fatal error running server:", error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lotus-wisdom-mcp",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "A Model Context Protocol server implementing the Lotus Wisdom framework",
5
5
  "main": "dist/bundle.js",
6
6
  "type": "module",
@@ -33,6 +33,7 @@
33
33
  ],
34
34
  "author": "Xule Lin",
35
35
  "license": "MIT",
36
+ "mcpName": "io.github.linxule/lotus-wisdom",
36
37
  "bugs": {
37
38
  "url": "https://github.com/linxule/lotus-wisdom-mcp/issues"
38
39
  },
package/dist/cli.js DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import './bundle.js';