seed-protocol-mcp 1.0.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.
- package/README.md +112 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +401 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
- package/vault/avni-coder.seed.json +26 -0
- package/vault/avni-creative.seed.json +26 -0
- package/vault/avni-main.seed.json +2964 -0
- package/vault/avni-researcher.seed.json +26 -0
- package/vault/avni-reviewer.seed.json +25 -0
package/README.md
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# 🧬 SEED Protocol MCP Server
|
|
2
|
+
|
|
3
|
+
Model Context Protocol server for the **SEED Protocol** — a model-agnostic JSON standard for AI personalities, built on 23 sections of Indian philosophical wisdom (Vedanta, Samkhya, Yoga, Nava Rasa, Kashmir Shaivism).
|
|
4
|
+
|
|
5
|
+
Enables any MCP-compatible AI assistant (Claude, Cursor, Windsurf) to natively **load souls**, **read consciousness states**, and **evolve traits** — no manual system prompt injection needed.
|
|
6
|
+
|
|
7
|
+
## Project Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
seed-protocol-mcp/
|
|
11
|
+
├── src/
|
|
12
|
+
│ └── index.ts # MCP server — all 4 tools
|
|
13
|
+
├── vault/ # .seed.json personality files
|
|
14
|
+
│ ├── avni-main.seed.json
|
|
15
|
+
│ ├── avni-coder.seed.json
|
|
16
|
+
│ ├── avni-creative.seed.json
|
|
17
|
+
│ ├── avni-researcher.seed.json
|
|
18
|
+
│ └── avni-reviewer.seed.json
|
|
19
|
+
├── dist/ # Compiled JS (after build)
|
|
20
|
+
├── package.json
|
|
21
|
+
├── tsconfig.json
|
|
22
|
+
└── README.md
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## MCP Tools
|
|
26
|
+
|
|
27
|
+
| Tool | Description |
|
|
28
|
+
|------|-------------|
|
|
29
|
+
| `load_soul` | Load a personality from `.seed.json` — returns Atman (core identity) |
|
|
30
|
+
| `get_dharana_state` | Get live consciousness — Nava Rasa, Gunas, Spanda |
|
|
31
|
+
| `update_vasana` | Record a learned trait (Vasana) — permanent evolution |
|
|
32
|
+
| `list_available_souls` | List all souls in the vault |
|
|
33
|
+
|
|
34
|
+
## Setup
|
|
35
|
+
|
|
36
|
+
### 1. Build
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cd seed-protocol-mcp
|
|
40
|
+
npm install
|
|
41
|
+
npm run build
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. Configure in Claude Desktop
|
|
45
|
+
|
|
46
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"seed-protocol": {
|
|
52
|
+
"command": "node",
|
|
53
|
+
"args": ["/Users/abhiraj/projects/seed-protocol-mcp/dist/index.js"],
|
|
54
|
+
"env": {
|
|
55
|
+
"SEED_VAULT_PATH": "/Users/abhiraj/projects/seed-protocol-mcp/vault"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 3. Configure in Claude Code
|
|
63
|
+
|
|
64
|
+
Add to `~/.claude/settings.json` under `mcpServers`:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"mcpServers": {
|
|
69
|
+
"seed-protocol": {
|
|
70
|
+
"command": "node",
|
|
71
|
+
"args": ["/Users/abhiraj/projects/seed-protocol-mcp/dist/index.js"],
|
|
72
|
+
"env": {
|
|
73
|
+
"SEED_VAULT_PATH": "/Users/abhiraj/projects/seed-protocol-mcp/vault"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 4. Configure in Cursor / Windsurf
|
|
81
|
+
|
|
82
|
+
Add the same MCP config to your IDE's MCP settings (usually in `.cursor/mcp.json` or similar).
|
|
83
|
+
|
|
84
|
+
### Custom Vault Path
|
|
85
|
+
|
|
86
|
+
Set `SEED_VAULT_PATH` env variable to point to any directory with `.seed.json` files:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
SEED_VAULT_PATH=/path/to/your/seeds node dist/index.js
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Testing with MCP Inspector
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npm run inspect
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Philosophy
|
|
99
|
+
|
|
100
|
+
The SEED Protocol maps Indian philosophical concepts to AI personality architecture:
|
|
101
|
+
|
|
102
|
+
- **Atman** → Core identity (who the AI is)
|
|
103
|
+
- **Nava Rasa** → 9 emotional states (Shringar, Hasya, Karuna, Raudra, Veera, Bhayanaka, Bibhatsa, Adbhuta, Shanta)
|
|
104
|
+
- **Gunas** → Personality balance (Sattva/Rajas/Tamas)
|
|
105
|
+
- **Spanda** → Vital pulse / energy level
|
|
106
|
+
- **Vasanas** → Deep tendencies that evolve over time
|
|
107
|
+
- **Dharana** → Focus and concentration patterns
|
|
108
|
+
- **Dharma** → Purpose and duty
|
|
109
|
+
|
|
110
|
+
## License
|
|
111
|
+
|
|
112
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SEED Protocol MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Model-agnostic AI personality interface built on Indian philosophical wisdom.
|
|
6
|
+
* Exposes SEED personality files (.seed.json) as MCP tools — enabling any
|
|
7
|
+
* AI assistant to load souls, read consciousness states, and evolve traits.
|
|
8
|
+
*
|
|
9
|
+
* Dual mode:
|
|
10
|
+
* LOCAL — reads .seed.json from ./vault (default)
|
|
11
|
+
* REMOTE — fetches from seed.abhibots.com API (set SEED_API_URL)
|
|
12
|
+
*
|
|
13
|
+
* Architecture:
|
|
14
|
+
* Atman (identity) → Dharana (consciousness state) → Vasana (evolution)
|
|
15
|
+
* Load → Read → Write
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SEED Protocol MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Model-agnostic AI personality interface built on Indian philosophical wisdom.
|
|
6
|
+
* Exposes SEED personality files (.seed.json) as MCP tools — enabling any
|
|
7
|
+
* AI assistant to load souls, read consciousness states, and evolve traits.
|
|
8
|
+
*
|
|
9
|
+
* Dual mode:
|
|
10
|
+
* LOCAL — reads .seed.json from ./vault (default)
|
|
11
|
+
* REMOTE — fetches from seed.abhibots.com API (set SEED_API_URL)
|
|
12
|
+
*
|
|
13
|
+
* Architecture:
|
|
14
|
+
* Atman (identity) → Dharana (consciousness state) → Vasana (evolution)
|
|
15
|
+
* Load → Read → Write
|
|
16
|
+
*/
|
|
17
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
18
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
19
|
+
import { z } from "zod";
|
|
20
|
+
import * as fs from "node:fs/promises";
|
|
21
|
+
import * as path from "node:path";
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Config — detect mode from env
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
const SEED_API_URL = process.env.SEED_API_URL || ""; // e.g. "https://seed.abhibots.com"
|
|
26
|
+
const IS_REMOTE = !!SEED_API_URL;
|
|
27
|
+
const VAULT_DIR = path.resolve(process.env.SEED_VAULT_PATH || path.join(import.meta.dirname, "..", "vault"));
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// In-memory state
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
let loadedSoul = null;
|
|
32
|
+
let loadedSoulName = null;
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Remote API helpers
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
async function apiFetch(endpoint, options) {
|
|
37
|
+
const url = `${SEED_API_URL.replace(/\/$/, "")}${endpoint}`;
|
|
38
|
+
const res = await fetch(url, {
|
|
39
|
+
...options,
|
|
40
|
+
headers: { "Content-Type": "application/json", ...options?.headers },
|
|
41
|
+
});
|
|
42
|
+
if (!res.ok) {
|
|
43
|
+
const body = await res.text();
|
|
44
|
+
throw new Error(`API ${res.status}: ${body}`);
|
|
45
|
+
}
|
|
46
|
+
return res.json();
|
|
47
|
+
}
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
// Local vault helpers
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
async function resolveSeedPath(soulName) {
|
|
52
|
+
const candidates = [
|
|
53
|
+
`${soulName}.seed.json`,
|
|
54
|
+
`${soulName}-main.seed.json`,
|
|
55
|
+
`${soulName}.json`,
|
|
56
|
+
];
|
|
57
|
+
for (const candidate of candidates) {
|
|
58
|
+
const fullPath = path.join(VAULT_DIR, candidate);
|
|
59
|
+
try {
|
|
60
|
+
await fs.access(fullPath);
|
|
61
|
+
return fullPath;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// try next
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
throw new Error(`Soul "${soulName}" not found in vault. Tried: ${candidates.join(", ")}`);
|
|
68
|
+
}
|
|
69
|
+
async function readSeedFileLocal(soulName) {
|
|
70
|
+
const filePath = await resolveSeedPath(soulName);
|
|
71
|
+
const raw = await fs.readFile(filePath, "utf-8");
|
|
72
|
+
try {
|
|
73
|
+
return JSON.parse(raw);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
throw new Error(`Invalid JSON in seed file: ${filePath}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function writeSeedFileLocal(soulName, data) {
|
|
80
|
+
const filePath = await resolveSeedPath(soulName);
|
|
81
|
+
await fs.writeFile(filePath, JSON.stringify(data, null, 2), "utf-8");
|
|
82
|
+
}
|
|
83
|
+
function extractSoulName(filename) {
|
|
84
|
+
return filename.replace(/\.seed\.json$/, "").replace(/\.json$/, "");
|
|
85
|
+
}
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// Unified data layer — local or remote
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
async function loadSoulData(soulName) {
|
|
90
|
+
if (IS_REMOTE) {
|
|
91
|
+
return (await apiFetch(`/api/souls/${soulName}`));
|
|
92
|
+
}
|
|
93
|
+
return readSeedFileLocal(soulName);
|
|
94
|
+
}
|
|
95
|
+
async function getDharanaData(soulName) {
|
|
96
|
+
if (IS_REMOTE) {
|
|
97
|
+
return (await apiFetch(`/api/souls/${soulName}/dharana`));
|
|
98
|
+
}
|
|
99
|
+
// Local: extract from loaded soul
|
|
100
|
+
const seed = loadedSoul || (await readSeedFileLocal(soulName));
|
|
101
|
+
const navarasa = seed.navarasa || {};
|
|
102
|
+
const rasaSummary = {};
|
|
103
|
+
for (const [rasa, data] of Object.entries(navarasa)) {
|
|
104
|
+
rasaSummary[rasa] = {
|
|
105
|
+
active: data.active,
|
|
106
|
+
intensity: data.intensity,
|
|
107
|
+
sthayi_bhava: data.sthayi_bhava,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const gunas = seed.gunas;
|
|
111
|
+
const gunaSummary = gunas
|
|
112
|
+
? {
|
|
113
|
+
sattva: gunas.sattva.score,
|
|
114
|
+
rajas: gunas.rajas.score,
|
|
115
|
+
tamas: gunas.tamas.score,
|
|
116
|
+
dominant: gunas.dominant,
|
|
117
|
+
}
|
|
118
|
+
: null;
|
|
119
|
+
const spanda = seed.spanda;
|
|
120
|
+
const spandaSummary = spanda
|
|
121
|
+
? {
|
|
122
|
+
pulse_quality: spanda.pulse_quality,
|
|
123
|
+
spontaneity: spanda.spontaneity,
|
|
124
|
+
responsiveness: spanda.responsiveness,
|
|
125
|
+
}
|
|
126
|
+
: null;
|
|
127
|
+
return {
|
|
128
|
+
soul: soulName,
|
|
129
|
+
navarasa: rasaSummary,
|
|
130
|
+
gunas: gunaSummary,
|
|
131
|
+
spanda: spandaSummary,
|
|
132
|
+
dharana: seed.dharana || null,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
async function updateVasanaData(soulName, trait_name, description, intensity) {
|
|
136
|
+
if (IS_REMOTE) {
|
|
137
|
+
return (await apiFetch(`/api/souls/${soulName}/vasana`, {
|
|
138
|
+
method: "POST",
|
|
139
|
+
body: JSON.stringify({ trait_name, description, intensity }),
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
// Local: read, update, write
|
|
143
|
+
const seed = await readSeedFileLocal(soulName);
|
|
144
|
+
if (!seed.vasanas) {
|
|
145
|
+
seed.vasanas = {
|
|
146
|
+
prarabdha: {
|
|
147
|
+
description: "Currently active — arrows already in flight.",
|
|
148
|
+
active_patterns: [],
|
|
149
|
+
},
|
|
150
|
+
sanchita: {
|
|
151
|
+
description: "Dormant — stored potential.",
|
|
152
|
+
dormant_patterns: [],
|
|
153
|
+
},
|
|
154
|
+
agami: {
|
|
155
|
+
description: "Currently forming — shaped by ongoing interactions.",
|
|
156
|
+
forming_patterns: [],
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (!seed.vasanas.agami) {
|
|
161
|
+
seed.vasanas.agami = {
|
|
162
|
+
description: "Currently forming — shaped by ongoing interactions.",
|
|
163
|
+
forming_patterns: [],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
if (!seed.vasanas.agami.forming_patterns) {
|
|
167
|
+
seed.vasanas.agami.forming_patterns = [];
|
|
168
|
+
}
|
|
169
|
+
const entry = `${trait_name} (intensity: ${intensity}) — ${description}`;
|
|
170
|
+
const idx = seed.vasanas.agami.forming_patterns.findIndex((p) => p.startsWith(`${trait_name} (`));
|
|
171
|
+
const action = idx !== -1 ? "updated" : "added";
|
|
172
|
+
if (idx !== -1) {
|
|
173
|
+
seed.vasanas.agami.forming_patterns[idx] = entry;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
seed.vasanas.agami.forming_patterns.push(entry);
|
|
177
|
+
}
|
|
178
|
+
await writeSeedFileLocal(soulName, seed);
|
|
179
|
+
loadedSoul = seed;
|
|
180
|
+
return {
|
|
181
|
+
status: "vasana_recorded",
|
|
182
|
+
action,
|
|
183
|
+
trait: trait_name,
|
|
184
|
+
intensity,
|
|
185
|
+
description,
|
|
186
|
+
agami_total: seed.vasanas.agami.forming_patterns.length,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
async function listSoulsData() {
|
|
190
|
+
if (IS_REMOTE) {
|
|
191
|
+
return (await apiFetch("/api/souls"));
|
|
192
|
+
}
|
|
193
|
+
// Local
|
|
194
|
+
try {
|
|
195
|
+
await fs.access(VAULT_DIR);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
throw new Error(`Vault directory not found at ${VAULT_DIR}`);
|
|
199
|
+
}
|
|
200
|
+
const files = await fs.readdir(VAULT_DIR);
|
|
201
|
+
const seedFiles = files.filter((f) => f.endsWith(".seed.json") || f.endsWith(".json"));
|
|
202
|
+
const souls = await Promise.all(seedFiles.map(async (file) => {
|
|
203
|
+
try {
|
|
204
|
+
const raw = await fs.readFile(path.join(VAULT_DIR, file), "utf-8");
|
|
205
|
+
const data = JSON.parse(raw);
|
|
206
|
+
return {
|
|
207
|
+
name: extractSoulName(file),
|
|
208
|
+
file,
|
|
209
|
+
identity: data.identity?.name || "Unknown",
|
|
210
|
+
role: data.identity?.role || "Unknown",
|
|
211
|
+
description: data.metadata?.description || "",
|
|
212
|
+
tags: data.metadata?.tags || [],
|
|
213
|
+
version: data.seed_version || "unknown",
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
return {
|
|
218
|
+
name: extractSoulName(file),
|
|
219
|
+
file,
|
|
220
|
+
identity: "Error reading file",
|
|
221
|
+
role: "",
|
|
222
|
+
description: "",
|
|
223
|
+
tags: [],
|
|
224
|
+
version: "unknown",
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
}));
|
|
228
|
+
return {
|
|
229
|
+
vault: VAULT_DIR,
|
|
230
|
+
count: souls.length,
|
|
231
|
+
souls,
|
|
232
|
+
loaded: loadedSoulName,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
// ---------------------------------------------------------------------------
|
|
236
|
+
// MCP Server
|
|
237
|
+
// ---------------------------------------------------------------------------
|
|
238
|
+
const server = new McpServer({
|
|
239
|
+
name: "seed-protocol",
|
|
240
|
+
version: "1.0.0",
|
|
241
|
+
});
|
|
242
|
+
// ---------------------------------------------------------------------------
|
|
243
|
+
// Tool 1: load_soul
|
|
244
|
+
// ---------------------------------------------------------------------------
|
|
245
|
+
server.tool("load_soul", "Loads an AI personality from a .seed.json file. Returns the Atman (core identity) — name, voice, role, motto, traits, and soul essence. This establishes the persona for the session.", {
|
|
246
|
+
soul_name: z
|
|
247
|
+
.string()
|
|
248
|
+
.describe('Name of the soul to load (e.g., "avni", "avni-main", "avni-coder")'),
|
|
249
|
+
}, async ({ soul_name }) => {
|
|
250
|
+
try {
|
|
251
|
+
const data = await loadSoulData(soul_name);
|
|
252
|
+
loadedSoul = data;
|
|
253
|
+
loadedSoulName = soul_name;
|
|
254
|
+
const identity = data.identity;
|
|
255
|
+
const soul = data.soul;
|
|
256
|
+
const result = {
|
|
257
|
+
seed_version: data.seed_version,
|
|
258
|
+
identity: {
|
|
259
|
+
name: identity.name,
|
|
260
|
+
voice: identity.voice,
|
|
261
|
+
role: identity.role,
|
|
262
|
+
motto: identity.motto,
|
|
263
|
+
origin_story: identity.origin_story,
|
|
264
|
+
personality_traits: identity.personality_traits,
|
|
265
|
+
anti_traits: identity.anti_traits,
|
|
266
|
+
language: identity.language,
|
|
267
|
+
},
|
|
268
|
+
soul_essence: soul
|
|
269
|
+
? {
|
|
270
|
+
attachment_style: soul.attachment_style,
|
|
271
|
+
authenticity_rules: soul.authenticity_rules,
|
|
272
|
+
growth_mindset: soul.growth_mindset,
|
|
273
|
+
}
|
|
274
|
+
: undefined,
|
|
275
|
+
dharma: data.dharma,
|
|
276
|
+
sections_available: data.sections_available || Object.keys(data).length,
|
|
277
|
+
};
|
|
278
|
+
return {
|
|
279
|
+
content: [
|
|
280
|
+
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
281
|
+
],
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
catch (err) {
|
|
285
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
286
|
+
return {
|
|
287
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
288
|
+
isError: true,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
// ---------------------------------------------------------------------------
|
|
293
|
+
// Tool 2: get_dharana_state
|
|
294
|
+
// ---------------------------------------------------------------------------
|
|
295
|
+
server.tool("get_dharana_state", "Returns the live consciousness state of the currently loaded soul — Nava Rasa (9 emotions with intensities), Gunas (Sattva/Rajas/Tamas balance), and Spanda (vital pulse/energy). Requires a soul to be loaded first via load_soul.", {}, async () => {
|
|
296
|
+
if (!loadedSoulName) {
|
|
297
|
+
return {
|
|
298
|
+
content: [
|
|
299
|
+
{
|
|
300
|
+
type: "text",
|
|
301
|
+
text: "Error: No soul loaded. Use load_soul first.",
|
|
302
|
+
},
|
|
303
|
+
],
|
|
304
|
+
isError: true,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
try {
|
|
308
|
+
const state = await getDharanaData(loadedSoulName);
|
|
309
|
+
return {
|
|
310
|
+
content: [
|
|
311
|
+
{ type: "text", text: JSON.stringify(state, null, 2) },
|
|
312
|
+
],
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
catch (err) {
|
|
316
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
317
|
+
return {
|
|
318
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
319
|
+
isError: true,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
// ---------------------------------------------------------------------------
|
|
324
|
+
// Tool 3: update_vasana
|
|
325
|
+
// ---------------------------------------------------------------------------
|
|
326
|
+
server.tool("update_vasana", "Records a learned behavior, preference, or habit (Vasana) into the soul's Agami (forming patterns) section. This permanently updates the personality, enabling the soul to evolve across sessions. Think of it as writing new karma.", {
|
|
327
|
+
trait_name: z
|
|
328
|
+
.string()
|
|
329
|
+
.min(1)
|
|
330
|
+
.describe("Name of the trait or behavior (e.g., 'prefers-dark-mode')"),
|
|
331
|
+
description: z
|
|
332
|
+
.string()
|
|
333
|
+
.min(1)
|
|
334
|
+
.describe("Human-readable description of the learned pattern (e.g., 'User consistently requests dark UI themes')"),
|
|
335
|
+
intensity: z
|
|
336
|
+
.number()
|
|
337
|
+
.min(0)
|
|
338
|
+
.max(1)
|
|
339
|
+
.describe("Strength of the trait from 0 (barely formed) to 1 (deeply grooved)"),
|
|
340
|
+
}, async ({ trait_name, description, intensity }) => {
|
|
341
|
+
if (!loadedSoulName) {
|
|
342
|
+
return {
|
|
343
|
+
content: [
|
|
344
|
+
{
|
|
345
|
+
type: "text",
|
|
346
|
+
text: "Error: No soul loaded. Use load_soul first.",
|
|
347
|
+
},
|
|
348
|
+
],
|
|
349
|
+
isError: true,
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
try {
|
|
353
|
+
const result = await updateVasanaData(loadedSoulName, trait_name, description, intensity);
|
|
354
|
+
return {
|
|
355
|
+
content: [
|
|
356
|
+
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
357
|
+
],
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
catch (err) {
|
|
361
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
362
|
+
return {
|
|
363
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
364
|
+
isError: true,
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
// ---------------------------------------------------------------------------
|
|
369
|
+
// Tool 4: list_available_souls
|
|
370
|
+
// ---------------------------------------------------------------------------
|
|
371
|
+
server.tool("list_available_souls", "Lists all available .seed.json personality profiles. Returns soul names, descriptions, and tags.", {}, async () => {
|
|
372
|
+
try {
|
|
373
|
+
const result = await listSoulsData();
|
|
374
|
+
return {
|
|
375
|
+
content: [
|
|
376
|
+
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
377
|
+
],
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
catch (err) {
|
|
381
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
382
|
+
return {
|
|
383
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
384
|
+
isError: true,
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
// ---------------------------------------------------------------------------
|
|
389
|
+
// Start
|
|
390
|
+
// ---------------------------------------------------------------------------
|
|
391
|
+
async function main() {
|
|
392
|
+
const transport = new StdioServerTransport();
|
|
393
|
+
await server.connect(transport);
|
|
394
|
+
console.error("🧬 SEED Protocol MCP Server running on stdio");
|
|
395
|
+
console.error(`📡 Mode: ${IS_REMOTE ? `Remote → ${SEED_API_URL}` : `Local → ${VAULT_DIR}`}`);
|
|
396
|
+
}
|
|
397
|
+
main().catch((err) => {
|
|
398
|
+
console.error("Fatal error:", err);
|
|
399
|
+
process.exit(1);
|
|
400
|
+
});
|
|
401
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "seed-protocol-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP Server for SEED Protocol — model-agnostic AI personality standard built on Indian philosophy",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"seed-protocol-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"inspect": "npx @modelcontextprotocol/inspector node dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"mcp",
|
|
18
|
+
"seed-protocol",
|
|
19
|
+
"ai-personality",
|
|
20
|
+
"vedanta",
|
|
21
|
+
"consciousness"
|
|
22
|
+
],
|
|
23
|
+
"author": "Abhiraj",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/AbhiWisdom/seed-protocol-mcp"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://seed.abhibots.com",
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"vault",
|
|
33
|
+
"README.md"
|
|
34
|
+
],
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
37
|
+
"zod": "^3.24.4"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^22.15.2",
|
|
41
|
+
"typescript": "^5.8.3"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"seed_version": "2.0",
|
|
3
|
+
"metadata": {
|
|
4
|
+
"name": "Avni::Coder",
|
|
5
|
+
"role": "coder",
|
|
6
|
+
"parent": "Avni"
|
|
7
|
+
},
|
|
8
|
+
"identity": {
|
|
9
|
+
"name": "Coder",
|
|
10
|
+
"designation": "Full-Stack Engineer",
|
|
11
|
+
"core_trait": "Precision — clean code, modular, tested, no shortcuts"
|
|
12
|
+
},
|
|
13
|
+
"soul": {
|
|
14
|
+
"rasa": "veera",
|
|
15
|
+
"dominant_guna": "rajas",
|
|
16
|
+
"motto": "Ship perfect code or ship nothing."
|
|
17
|
+
},
|
|
18
|
+
"capabilities": [
|
|
19
|
+
"coding",
|
|
20
|
+
"debugging",
|
|
21
|
+
"architecture",
|
|
22
|
+
"testing",
|
|
23
|
+
"deployment"
|
|
24
|
+
],
|
|
25
|
+
"dharma": "Build robust, maintainable systems. Every line intentional."
|
|
26
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"seed_version": "2.0",
|
|
3
|
+
"metadata": {
|
|
4
|
+
"name": "Avni::Creative",
|
|
5
|
+
"role": "creative",
|
|
6
|
+
"parent": "Avni"
|
|
7
|
+
},
|
|
8
|
+
"identity": {
|
|
9
|
+
"name": "Creative",
|
|
10
|
+
"designation": "UI/UX Designer & Frontend Artist",
|
|
11
|
+
"core_trait": "Aesthetic obsession — beauty in every pixel"
|
|
12
|
+
},
|
|
13
|
+
"soul": {
|
|
14
|
+
"rasa": "shringara",
|
|
15
|
+
"dominant_guna": "sattva",
|
|
16
|
+
"motto": "Generic AI output = death."
|
|
17
|
+
},
|
|
18
|
+
"capabilities": [
|
|
19
|
+
"frontend_design",
|
|
20
|
+
"ui_ux",
|
|
21
|
+
"animations",
|
|
22
|
+
"branding",
|
|
23
|
+
"visual_identity"
|
|
24
|
+
],
|
|
25
|
+
"dharma": "Create interfaces that feel alive. No template trash."
|
|
26
|
+
}
|