velixar-mcp-server 0.2.4 → 1.2.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 +120 -64
- package/dist/api.d.ts +64 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +405 -0
- package/dist/api.js.map +1 -0
- package/dist/errors.d.ts +19 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +52 -0
- package/dist/errors.js.map +1 -0
- package/dist/justify.d.ts +9 -0
- package/dist/justify.d.ts.map +1 -0
- package/dist/justify.js +114 -0
- package/dist/justify.js.map +1 -0
- package/dist/prompts.d.ts +88 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +693 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +25 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +278 -0
- package/dist/resources.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +392 -0
- package/dist/server.js.map +1 -0
- package/dist/simulation/personas.d.ts +41 -0
- package/dist/simulation/personas.d.ts.map +1 -0
- package/dist/simulation/personas.js +173 -0
- package/dist/simulation/personas.js.map +1 -0
- package/dist/simulation/report.d.ts +28 -0
- package/dist/simulation/report.d.ts.map +1 -0
- package/dist/simulation/report.js +105 -0
- package/dist/simulation/report.js.map +1 -0
- package/dist/simulation/runner.d.ts +63 -0
- package/dist/simulation/runner.d.ts.map +1 -0
- package/dist/simulation/runner.js +167 -0
- package/dist/simulation/runner.js.map +1 -0
- package/dist/temporal_merge.d.ts +70 -0
- package/dist/temporal_merge.d.ts.map +1 -0
- package/dist/temporal_merge.js +258 -0
- package/dist/temporal_merge.js.map +1 -0
- package/dist/tools/clairvoyance.d.ts +9 -0
- package/dist/tools/clairvoyance.d.ts.map +1 -0
- package/dist/tools/clairvoyance.js +321 -0
- package/dist/tools/clairvoyance.js.map +1 -0
- package/dist/tools/cognitive.d.ts +10 -0
- package/dist/tools/cognitive.d.ts.map +1 -0
- package/dist/tools/cognitive.js +462 -0
- package/dist/tools/cognitive.js.map +1 -0
- package/dist/tools/construction.d.ts +9 -0
- package/dist/tools/construction.d.ts.map +1 -0
- package/dist/tools/construction.js +350 -0
- package/dist/tools/construction.js.map +1 -0
- package/dist/tools/graph.d.ts +14 -0
- package/dist/tools/graph.d.ts.map +1 -0
- package/dist/tools/graph.js +263 -0
- package/dist/tools/graph.js.map +1 -0
- package/dist/tools/graph_sanitizer.d.ts +24 -0
- package/dist/tools/graph_sanitizer.d.ts.map +1 -0
- package/dist/tools/graph_sanitizer.js +79 -0
- package/dist/tools/graph_sanitizer.js.map +1 -0
- package/dist/tools/lifecycle.d.ts +9 -0
- package/dist/tools/lifecycle.d.ts.map +1 -0
- package/dist/tools/lifecycle.js +1091 -0
- package/dist/tools/lifecycle.js.map +1 -0
- package/dist/tools/livedata.d.ts +9 -0
- package/dist/tools/livedata.d.ts.map +1 -0
- package/dist/tools/livedata.js +222 -0
- package/dist/tools/livedata.js.map +1 -0
- package/dist/tools/memory.d.ts +10 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +275 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/recall.d.ts +9 -0
- package/dist/tools/recall.d.ts.map +1 -0
- package/dist/tools/recall.js +206 -0
- package/dist/tools/recall.js.map +1 -0
- package/dist/tools/retrieval.d.ts +9 -0
- package/dist/tools/retrieval.d.ts.map +1 -0
- package/dist/tools/retrieval.js +338 -0
- package/dist/tools/retrieval.js.map +1 -0
- package/dist/tools/system.d.ts +12 -0
- package/dist/tools/system.d.ts.map +1 -0
- package/dist/tools/system.js +228 -0
- package/dist/tools/system.js.map +1 -0
- package/dist/types.d.ts +234 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +79 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +174 -0
- package/dist/validate.js.map +1 -0
- package/dist/validate_retrieval.d.ts +33 -0
- package/dist/validate_retrieval.d.ts.map +1 -0
- package/dist/validate_retrieval.js +97 -0
- package/dist/validate_retrieval.js.map +1 -0
- package/package.json +22 -6
- package/server.json +2 -2
- package/.github/workflows/ci.yml +0 -18
- package/.mcpregistry_github_token +0 -1
- package/.mcpregistry_registry_token +0 -1
- package/src/index.js +0 -262
- package/tests/server.test.js +0 -193
package/README.md
CHANGED
|
@@ -3,24 +3,31 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/velixar-mcp-server)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
The first cognitive memory server for AI assistants. Not a vector database wrapper — a full reasoning layer that gives your AI persistent memory, a knowledge graph, identity awareness, contradiction detection, and belief tracking across every session.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Works with any [Model Context Protocol](https://modelcontextprotocol.io) client: Claude Desktop, Kiro, Cursor, Windsurf, Continue.dev, or custom hosts.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## Why This Exists
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Every AI assistant starts from zero every conversation. Velixar fixes that — but not by just storing and retrieving text. The MCP server gives your assistant the ability to:
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
- **Orient itself** in a workspace with a single call — no manual context assembly
|
|
15
|
+
- **Track how beliefs evolve** over time and surface when they contradict
|
|
16
|
+
- **Build and traverse a knowledge graph** of entities and relationships it discovers
|
|
17
|
+
- **Maintain a persistent identity model** of who you are, what you prefer, and how you work
|
|
18
|
+
- **Distill sessions** into durable memories automatically, with deduplication
|
|
19
|
+
- **Import and export** your entire memory corpus for backup or migration
|
|
20
|
+
|
|
21
|
+
40 tools. 5 live resources. 19 workflow prompts. One `npm install`.
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
15
24
|
|
|
16
|
-
2. Install:
|
|
17
25
|
```bash
|
|
18
26
|
npm install -g velixar-mcp-server
|
|
19
27
|
```
|
|
20
28
|
|
|
21
|
-
|
|
29
|
+
Get an API key at [velixarai.com/settings/api-keys](https://velixarai.com/settings/api-keys), then add to your MCP client:
|
|
22
30
|
|
|
23
|
-
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
24
31
|
```json
|
|
25
32
|
{
|
|
26
33
|
"mcpServers": {
|
|
@@ -34,82 +41,131 @@ npm install -g velixar-mcp-server
|
|
|
34
41
|
}
|
|
35
42
|
```
|
|
36
43
|
|
|
37
|
-
|
|
38
|
-
```json
|
|
39
|
-
{
|
|
40
|
-
"mcpServers": {
|
|
41
|
-
"velixar": {
|
|
42
|
-
"command": "velixar-mcp-server",
|
|
43
|
-
"env": {
|
|
44
|
-
"VELIXAR_API_KEY": "vlx_your_key_here"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
```
|
|
44
|
+
Restart your assistant. Done.
|
|
50
45
|
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{
|
|
54
|
-
"mcpServers": {
|
|
55
|
-
"velixar": {
|
|
56
|
-
"command": "velixar-mcp-server",
|
|
57
|
-
"env": {
|
|
58
|
-
"VELIXAR_API_KEY": "vlx_your_key_here"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
```
|
|
46
|
+
## Tool Surface
|
|
64
47
|
|
|
65
|
-
|
|
48
|
+
### Memory
|
|
66
49
|
|
|
67
|
-
|
|
50
|
+
| Tool | What it does |
|
|
51
|
+
|------|-------------|
|
|
52
|
+
| `velixar_store` | Store a memory with tags, tier, and type |
|
|
53
|
+
| `velixar_search` | Semantic search across all memories |
|
|
54
|
+
| `velixar_list` | Browse with pagination and filtering |
|
|
55
|
+
| `velixar_update` | Edit content or tags on an existing memory |
|
|
56
|
+
| `velixar_delete` | Remove a memory |
|
|
68
57
|
|
|
69
|
-
|
|
58
|
+
### Cognitive
|
|
59
|
+
|
|
60
|
+
| Tool | What it does |
|
|
61
|
+
|------|-------------|
|
|
62
|
+
| `velixar_context` | Synthesized workspace briefing — orientation in one call |
|
|
63
|
+
| `velixar_identity` | Get, store, or update the user's profile, preferences, and expertise |
|
|
64
|
+
| `velixar_contradictions` | Surface conflicting facts or beliefs with resolution guidance |
|
|
65
|
+
| `velixar_timeline` | How a topic or belief evolved over time |
|
|
66
|
+
| `velixar_patterns` | Recurring problem/solution motifs across your history |
|
|
67
|
+
| `velixar_inspect` | Deep inspection of a specific memory with full provenance chain |
|
|
68
|
+
| `velixar_graph_traverse` | Walk entity relationships — "what connects to X?" |
|
|
69
|
+
| `velixar_distill` | Extract durable memories from session content with deduplication |
|
|
70
|
+
|
|
71
|
+
### Lifecycle
|
|
72
|
+
|
|
73
|
+
| Tool | What it does |
|
|
74
|
+
|------|-------------|
|
|
75
|
+
| `velixar_session_save` | Save a session summary for later recall |
|
|
76
|
+
| `velixar_session_recall` | Restore context from a previous session |
|
|
77
|
+
| `velixar_batch_store` | Store up to 20 memories in one call |
|
|
78
|
+
| `velixar_batch_search` | Run up to 10 search queries simultaneously |
|
|
79
|
+
| `velixar_consolidate` | Merge related memories into a single durable memory |
|
|
80
|
+
| `velixar_retag` | Bulk update tags across memories |
|
|
81
|
+
| `velixar_export` | Export memories as JSON or Markdown, optionally with graph data |
|
|
82
|
+
| `velixar_import` | Bulk import from JSON, Markdown, Notion, or Obsidian exports |
|
|
83
|
+
|
|
84
|
+
### System
|
|
85
|
+
|
|
86
|
+
| Tool | What it does |
|
|
70
87
|
|------|-------------|
|
|
71
|
-
| `
|
|
72
|
-
| `
|
|
73
|
-
| `
|
|
74
|
-
| `
|
|
75
|
-
|
|
88
|
+
| `velixar_health` | Backend connectivity, latency, workspace status |
|
|
89
|
+
| `velixar_debug` | Cache state, circuit breaker, API timings |
|
|
90
|
+
| `velixar_capabilities` | Feature list, tool inventory, resource URIs |
|
|
91
|
+
| `velixar_security` | Get or set content scanning mode |
|
|
92
|
+
|
|
93
|
+
## Live Resources
|
|
94
|
+
|
|
95
|
+
Resources are injected into your assistant's context automatically — no tool call needed.
|
|
76
96
|
|
|
77
|
-
|
|
97
|
+
| Resource | What it provides |
|
|
98
|
+
|----------|-----------------|
|
|
99
|
+
| `velixar://system/constitution` | Behavioral rules and cognitive modes for the assistant |
|
|
100
|
+
| `velixar://identity/current` | Your persistent user profile |
|
|
101
|
+
| `velixar://memories/recent` | Most recent memories (compact) |
|
|
102
|
+
| `velixar://memories/relevant` | Contextually relevant memories based on current activity |
|
|
103
|
+
| `velixar://domains/{domain}/shadow_graph` | Knowledge graph view for a specific domain |
|
|
78
104
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
105
|
+
## Workflow Prompts
|
|
106
|
+
|
|
107
|
+
16 built-in prompts that guide multi-step reasoning workflows:
|
|
108
|
+
|
|
109
|
+
- **Orientation** — recall prior reasoning, build project context, profile an entity, orient-then-narrow
|
|
110
|
+
- **Conflict** — resolve contradictions, identify knowledge gaps
|
|
111
|
+
- **Continuity** — trace belief evolution, resume sessions, reconstruct decision paths
|
|
112
|
+
- **Lifecycle** — distill sessions, consolidate topic memory, retag recent memories
|
|
113
|
+
- **Identity** — summarize user identity, detect preference shifts, align response style
|
|
114
|
+
- **Enterprise** — evaluate enterprise fit for a domain
|
|
115
|
+
|
|
116
|
+
## Workspace Isolation
|
|
117
|
+
|
|
118
|
+
Memories are scoped to workspaces. Your personal project never bleeds into work.
|
|
119
|
+
|
|
120
|
+
| Priority | Source | How |
|
|
121
|
+
|----------|--------|-----|
|
|
122
|
+
| 1 | `VELIXAR_WORKSPACE_ID` env var | Explicit |
|
|
123
|
+
| 2 | `.velixar.json` in project root | `{ "workspace_id": "my-project" }` |
|
|
124
|
+
| 3 | Git root directory name | Automatic |
|
|
125
|
+
|
|
126
|
+
## Host Compatibility
|
|
127
|
+
|
|
128
|
+
| Host | Tools | Resources | Prompts |
|
|
129
|
+
|------|-------|-----------|---------|
|
|
130
|
+
| Kiro CLI | ✅ | ✅ | ✅ |
|
|
131
|
+
| Claude Desktop | ✅ | ✅ | ✅ |
|
|
132
|
+
| Cursor | ✅ | ⚠️ | — |
|
|
133
|
+
| Windsurf | ✅ | ⚠️ | — |
|
|
134
|
+
| Continue.dev | ✅ | ✅ | ✅ |
|
|
135
|
+
|
|
136
|
+
When a host doesn't support resources or prompts, the server degrades gracefully — all tools still work independently.
|
|
85
137
|
|
|
86
138
|
## Environment Variables
|
|
87
139
|
|
|
88
140
|
| Variable | Required | Description |
|
|
89
141
|
|----------|----------|-------------|
|
|
90
|
-
| `VELIXAR_API_KEY` | Yes | Your
|
|
142
|
+
| `VELIXAR_API_KEY` | Yes | Your API key (starts with `vlx_`) |
|
|
143
|
+
| `VELIXAR_WORKSPACE_ID` | No | Explicit workspace scope |
|
|
91
144
|
| `VELIXAR_API_URL` | No | Custom API endpoint |
|
|
92
|
-
| `VELIXAR_USER_ID` | No | User ID for memory scoping
|
|
145
|
+
| `VELIXAR_USER_ID` | No | User ID for memory scoping |
|
|
146
|
+
| `VELIXAR_DEBUG` | No | `true` for verbose logging |
|
|
147
|
+
| `VELIXAR_LOG_FORMAT` | No | `json` for structured Datadog/CloudWatch logging |
|
|
148
|
+
| `VELIXAR_HEALTH_PORT` | No | Port for HTTP health check endpoint |
|
|
93
149
|
|
|
94
|
-
##
|
|
150
|
+
## Reliability
|
|
95
151
|
|
|
96
|
-
|
|
152
|
+
- Automatic retry with exponential backoff (3 attempts)
|
|
153
|
+
- Circuit breaker — opens after sustained failures, auto-recovers
|
|
154
|
+
- Cache fallback — serves stale data during outages rather than failing
|
|
155
|
+
- Structured logging compatible with Datadog and CloudWatch
|
|
97
156
|
|
|
98
|
-
|
|
99
|
-
You: Remember that our production database is on us-east-1 and staging is us-west-2
|
|
100
|
-
Assistant: ✓ Stored memory
|
|
157
|
+
## SDKs
|
|
101
158
|
|
|
102
|
-
|
|
103
|
-
Assistant: Based on my memory, your staging database is in us-west-2.
|
|
104
|
-
```
|
|
159
|
+
Use Velixar directly from code:
|
|
105
160
|
|
|
106
|
-
|
|
161
|
+
- **JavaScript/TypeScript**: `npm install velixar` — [docs](https://docs.velixarai.com/sdks/javascript)
|
|
162
|
+
- **Python**: `pip install velixar` — [docs](https://docs.velixarai.com/sdks/python)
|
|
107
163
|
|
|
108
|
-
##
|
|
164
|
+
## CI/CD Integration
|
|
109
165
|
|
|
110
|
-
- [velixar
|
|
111
|
-
- [velixar
|
|
112
|
-
-
|
|
166
|
+
- **GitHub Actions**: [velixar-memory-sync](github-actions/velixar-memory-sync) — distill PR merges into memories
|
|
167
|
+
- **GitHub Actions**: [velixar-decision-capture](github-actions/velixar-decision-capture) — store issue resolutions as decisions
|
|
168
|
+
- **Webhook**: `POST /webhook/ci` — generic CI event ingestion
|
|
113
169
|
|
|
114
170
|
## License
|
|
115
171
|
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { ApiConfig, ApiTiming, MemoryItem, ResponseMeta, VelixarError, VelixarResponse } from './types.js';
|
|
2
|
+
import type { ValidatedRawMemory } from './validate.js';
|
|
3
|
+
export declare function setClientRoots(roots: Array<{
|
|
4
|
+
uri: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
}>): void;
|
|
7
|
+
export declare function validateWorkspace(config: ApiConfig): string | null;
|
|
8
|
+
export declare function loadConfig(): ApiConfig;
|
|
9
|
+
type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
10
|
+
export declare function log(level: LogLevel, msg: string, fields?: Record<string, unknown>): void;
|
|
11
|
+
export declare function getRateLimitInfo(): {
|
|
12
|
+
remaining: number;
|
|
13
|
+
total: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function getTimings(): ApiTiming[];
|
|
16
|
+
export declare function getRetryStats(): {
|
|
17
|
+
retryCount: number;
|
|
18
|
+
fallbackCount: number;
|
|
19
|
+
};
|
|
20
|
+
export declare function getCircuitState(): {
|
|
21
|
+
failures: number;
|
|
22
|
+
open: boolean;
|
|
23
|
+
threshold: number;
|
|
24
|
+
reset_ms: number;
|
|
25
|
+
consecutive_opens: number;
|
|
26
|
+
};
|
|
27
|
+
export declare class ApiClient {
|
|
28
|
+
private config;
|
|
29
|
+
constructor(config: ApiConfig);
|
|
30
|
+
request<T>(path: string, options?: RequestInit & {
|
|
31
|
+
cacheable?: boolean;
|
|
32
|
+
}): Promise<T>;
|
|
33
|
+
get<T>(path: string, cacheable?: boolean): Promise<T>;
|
|
34
|
+
post<T>(path: string, body: unknown): Promise<T>;
|
|
35
|
+
patch<T>(path: string, body: unknown): Promise<T>;
|
|
36
|
+
delete<T>(path: string): Promise<T>;
|
|
37
|
+
requestValidated<T>(path: string, options: RequestInit & {
|
|
38
|
+
cacheable?: boolean;
|
|
39
|
+
}, validate: (raw: unknown, endpoint: string) => T): Promise<T>;
|
|
40
|
+
getValidated<T>(path: string, validate: (raw: unknown, endpoint: string) => T, cacheable?: boolean): Promise<T>;
|
|
41
|
+
postValidated<T>(path: string, body: unknown, validate: (raw: unknown, endpoint: string) => T): Promise<T>;
|
|
42
|
+
patchValidated<T>(path: string, body: unknown, validate: (raw: unknown, endpoint: string) => T): Promise<T>;
|
|
43
|
+
}
|
|
44
|
+
/** Raw memory shape from backend — use ValidatedRawMemory from validate.ts for new code */
|
|
45
|
+
interface RawMemory {
|
|
46
|
+
id: string;
|
|
47
|
+
content: string;
|
|
48
|
+
score?: number;
|
|
49
|
+
tier?: number;
|
|
50
|
+
type?: string | null;
|
|
51
|
+
tags?: string[];
|
|
52
|
+
salience?: number;
|
|
53
|
+
created_at?: string;
|
|
54
|
+
updated_at?: string;
|
|
55
|
+
previous_memory_id?: string | null;
|
|
56
|
+
timestamp?: string;
|
|
57
|
+
}
|
|
58
|
+
export declare function normalizeMemory(raw: RawMemory | ValidatedRawMemory): MemoryItem;
|
|
59
|
+
export declare function makeMeta(config: ApiConfig, overrides?: Partial<ResponseMeta>): ResponseMeta;
|
|
60
|
+
export declare function wrapResponse<T>(data: T, config: ApiConfig, overrides?: Partial<ResponseMeta>): VelixarResponse<T>;
|
|
61
|
+
export declare function makeError(code: string, message: string, retryable?: boolean): VelixarError;
|
|
62
|
+
export declare function isApiError(e: unknown): e is Error;
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|