@cachly-dev/mcp-server 0.10.96 → 0.10.98
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 +5 -2
- package/dist/src/handlers/brain.js +149 -2
- package/dist/src/handlers/brain.js.map +1 -1
- package/dist/src/handlers/fedbrain.js +14 -1
- package/dist/src/handlers/fedbrain.js.map +1 -1
- package/dist/src/handlers/team.js +113 -1
- package/dist/src/handlers/team.js.map +1 -1
- package/dist/src/index.js +3 -3
- package/dist/src/tools.d.ts +34 -0
- package/dist/src/tools.js +35 -0
- package/dist/src/tools.js.map +1 -1
- package/dist/src/toolspecs.d.ts +1 -1
- package/dist/src/toolspecs.js +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<img src="https://img.shields.io/badge/GDPR-EU%20servers-green" alt="GDPR: EU servers" />
|
|
23
23
|
</a>
|
|
24
24
|
|
|
25
|
-
<img src="https://img.shields.io/badge/
|
|
25
|
+
<img src="https://img.shields.io/badge/121%20MCP%20tools-violet" alt="121 MCP tools" />
|
|
26
26
|
|
|
27
27
|
<img src="https://img.shields.io/badge/License-Apache--2.0-yellow" alt="License: Apache-2.0" />
|
|
28
28
|
</p>
|
|
@@ -191,6 +191,7 @@ close without breaking its own lock-in. **That gap is where cachly wins.**
|
|
|
191
191
|
| **`brain_file_map`** | Before you touch a file: who's worked on it and which lessons reference it. |
|
|
192
192
|
| **`team_expertise_map`** | The whole team's skills matrix in one table — onboarding and bus-factor insurance. |
|
|
193
193
|
| **`brain_collab_pairs`** | Person↔Person Collaboration Graph — *"Frag X und Y, die haben das zusammen gelöst."* Bus-factor alerts included. |
|
|
194
|
+
| **`brain_portability`** | W9 Model-Neutrality — config for 7 clients (Claude, Cursor, Copilot, Windsurf, Cline, Zed, Continue). *"Same Brain, any model."* |
|
|
194
195
|
| **`brain_from_git`** | Reads your entire git history and populates the team knowledge graph (people + files + lessons) — zero setup, retroactively. |
|
|
195
196
|
| **`brain_coverage` / `skill_gaps`** | A 0–100 health score for your knowledge + a ranked list of blind spots to fix. |
|
|
196
197
|
| **`brain_predict`** | Predicts likely failures *before* they happen, from past incident patterns. |
|
|
@@ -245,7 +246,7 @@ npx @cachly-dev/mcp-server@latest learn-git # Auto-learn lessons from recent git
|
|
|
245
246
|
|
|
246
247
|
---
|
|
247
248
|
|
|
248
|
-
## MCP Tools (
|
|
249
|
+
## MCP Tools (120 total)
|
|
249
250
|
|
|
250
251
|
### 🧠 Session & Memory (most used)
|
|
251
252
|
|
|
@@ -271,10 +272,12 @@ npx @cachly-dev/mcp-server@latest learn-git # Auto-learn lessons from recent git
|
|
|
271
272
|
| **`brain_file_map`** | Experts + lessons per file, before you touch it |
|
|
272
273
|
| **`team_expertise_map`** | Full team skills matrix in one table |
|
|
273
274
|
| **`brain_collab_pairs`** | Person↔Person Collaboration Graph — who collaborates with whom, bus-factor alerts |
|
|
275
|
+
| **`brain_portability`** | Config snippets for 7 MCP clients — proves model-neutrality, same Brain everywhere |
|
|
274
276
|
| **`skill_gaps`** | Knowledge blind spots: unresolved failures, missing attribution |
|
|
275
277
|
| **`brain_coverage`** | 0–100 knowledge-health score for your codebase |
|
|
276
278
|
| `madc_deliberate` | Specialist AI agents vote to resolve contradictory lessons |
|
|
277
279
|
| `memory_crystalize` | Distill all lessons into a Crystal for instant team context |
|
|
280
|
+
| `team_crystallize` | Team Crystal — fixes that 2+ teammates independently converged on (the cross-person, causal layer) |
|
|
278
281
|
|
|
279
282
|
### 🧬 Causal Intelligence
|
|
280
283
|
|
|
@@ -7,8 +7,23 @@ import { keywordSearch, tokenize, splitMultiQuery, levenshtein, indexVocab as _i
|
|
|
7
7
|
import { rerankByQuality } from '../rerank.js';
|
|
8
8
|
import { computeEmbedding, hasEmbedProvider } from '../embeddings.js';
|
|
9
9
|
// ── Changelog (shown once per version in session_start) ──────────────────────
|
|
10
|
-
const MCP_VERSION = '0.10.
|
|
10
|
+
const MCP_VERSION = '0.10.98';
|
|
11
11
|
const WHATS_NEW = {
|
|
12
|
+
'0.10.98': [
|
|
13
|
+
`🌐 **Model-Neutrality as Feature (W9) — "Bring your own model, keep your brain."**`,
|
|
14
|
+
` 🔌 New \`brain_portability()\` — shows your Brain ID, all compatible MCP clients, and ready-to-paste config snippets for each; proves the same Brain works in Claude, Cursor, Copilot, Windsurf, Cline, Zed and more`,
|
|
15
|
+
` 🧠 Your lessons, crystals, and predictions are model-agnostic — no vendor lock-in at the memory layer`,
|
|
16
|
+
` 📖 New docs: cachly.dev/docs/model-neutral — "Same Brain, Any Model" guide with live config examples`,
|
|
17
|
+
` 📊 121 MCP tools (new: \`brain_portability\`)`,
|
|
18
|
+
],
|
|
19
|
+
'0.10.97': [
|
|
20
|
+
`💠 **Team Crystallize (W8) — the team-wide, causal counter to per-user "Dreaming"**`,
|
|
21
|
+
` 🧬 New \`team_crystallize()\` — surfaces fixes that 2+ teammates *independently converged on*, the one thing a single-user memory structurally can't build`,
|
|
22
|
+
` 🧩 Cross-person clustering: groups structurally similar problems across people & namespaces (e.g. "pool exhaustion" solved the same way in payments, auth & db)`,
|
|
23
|
+
` 👥 Each pattern names who converged — instant "ask @alice and @bob, they both hit this"`,
|
|
24
|
+
` 💎 Shows up in \`crystal_view\` alongside your per-brain crystal`,
|
|
25
|
+
` 📊 120 MCP tools (new: \`team_crystallize\`)`,
|
|
26
|
+
],
|
|
12
27
|
'0.10.96': [
|
|
13
28
|
`🔐 **Roles & Team-Scopes now ENFORCED (W6) — the enterprise governance layer**`,
|
|
14
29
|
` 🛡️ \`team_confirm\` is now reviewer-gated, \`team_learn\` blocks viewers (recall-only) — roles stop being cosmetic the moment an admin is assigned`,
|
|
@@ -100,7 +115,7 @@ const WHATS_NEW = {
|
|
|
100
115
|
'0.10.84': [
|
|
101
116
|
`🤖 **M2M & agent-ecosystem reach — cachly for every caller, human or machine**`,
|
|
102
117
|
` 🔑 OAuth2 \`client_credentials\` grant — set CACHLY_CLIENT_ID + CACHLY_CLIENT_SECRET for fully headless auth (CI, agents, AI-to-AI)`,
|
|
103
|
-
` 🗂️ \`npx ... tool-specs --format=openai|anthropic|langchain\` — export all
|
|
118
|
+
` 🗂️ \`npx ... tool-specs --format=openai|anthropic|langchain\` — export all 121 tools in any framework's dialect`,
|
|
104
119
|
` 🌐 \`npx ... openapi\` — OpenAPI 3.1 doc (1 POST path per tool) for Assistants / codegen / Postman`,
|
|
105
120
|
` 🧪 14 new tests: client_credentials helpers, all four spec dialects, OpenAPI required-body inference`,
|
|
106
121
|
],
|
|
@@ -284,6 +299,7 @@ export const BRAIN_TOOL_NAMES = new Set([
|
|
|
284
299
|
'session_start', 'session_end', 'session_ping', 'session_handoff', 'auto_learn_session',
|
|
285
300
|
'brain_who_knows', 'brain_file_map', 'team_expertise_map',
|
|
286
301
|
'skill_gaps', 'brain_coverage', 'brain_metrics', 'brain_service_map',
|
|
302
|
+
'brain_collab_pairs', 'brain_portability',
|
|
287
303
|
]);
|
|
288
304
|
export async function handleBrainTool(name, args, getConnection, apiFetch) {
|
|
289
305
|
switch (name) {
|
|
@@ -2918,6 +2934,137 @@ export async function handleBrainTool(name, args, getConnection, apiFetch) {
|
|
|
2918
2934
|
lines.push(``, `---`, `_Collaboration edges build from \`learn_from_attempts(author=..., file_paths=[...])\` and \`smart_recall(requester=...)\` cross-author reuse._`);
|
|
2919
2935
|
return lines.join('\n');
|
|
2920
2936
|
}
|
|
2937
|
+
// ── brain_portability ─────────────────────────────────────────────────────
|
|
2938
|
+
case 'brain_portability': {
|
|
2939
|
+
const { instance_id } = args;
|
|
2940
|
+
const clients = [
|
|
2941
|
+
{
|
|
2942
|
+
name: 'Claude Code',
|
|
2943
|
+
slug: 'claude-code',
|
|
2944
|
+
icon: '🤖',
|
|
2945
|
+
configPath: '~/.claude/settings.json',
|
|
2946
|
+
configBlock: JSON.stringify({
|
|
2947
|
+
mcpServers: {
|
|
2948
|
+
cachly: {
|
|
2949
|
+
command: 'npx',
|
|
2950
|
+
args: ['@cachly-dev/mcp-server@latest'],
|
|
2951
|
+
env: { CACHLY_INSTANCE_ID: instance_id },
|
|
2952
|
+
},
|
|
2953
|
+
},
|
|
2954
|
+
}, null, 2),
|
|
2955
|
+
},
|
|
2956
|
+
{
|
|
2957
|
+
name: 'Cursor',
|
|
2958
|
+
slug: 'cursor',
|
|
2959
|
+
icon: '🖱️',
|
|
2960
|
+
configPath: '~/.cursor/mcp.json',
|
|
2961
|
+
configBlock: JSON.stringify({
|
|
2962
|
+
mcpServers: {
|
|
2963
|
+
cachly: {
|
|
2964
|
+
command: 'npx',
|
|
2965
|
+
args: ['@cachly-dev/mcp-server@latest'],
|
|
2966
|
+
env: { CACHLY_INSTANCE_ID: instance_id },
|
|
2967
|
+
},
|
|
2968
|
+
},
|
|
2969
|
+
}, null, 2),
|
|
2970
|
+
},
|
|
2971
|
+
{
|
|
2972
|
+
name: 'Windsurf',
|
|
2973
|
+
slug: 'windsurf',
|
|
2974
|
+
icon: '🏄',
|
|
2975
|
+
configPath: '~/.windsurf/mcp.json',
|
|
2976
|
+
configBlock: JSON.stringify({
|
|
2977
|
+
mcpServers: {
|
|
2978
|
+
cachly: {
|
|
2979
|
+
command: 'npx',
|
|
2980
|
+
args: ['@cachly-dev/mcp-server@latest'],
|
|
2981
|
+
env: { CACHLY_INSTANCE_ID: instance_id },
|
|
2982
|
+
},
|
|
2983
|
+
},
|
|
2984
|
+
}, null, 2),
|
|
2985
|
+
},
|
|
2986
|
+
{
|
|
2987
|
+
name: 'GitHub Copilot (VS Code)',
|
|
2988
|
+
slug: 'copilot',
|
|
2989
|
+
icon: '🐙',
|
|
2990
|
+
configPath: '.vscode/mcp.json (workspace)',
|
|
2991
|
+
configBlock: JSON.stringify({
|
|
2992
|
+
servers: {
|
|
2993
|
+
cachly: {
|
|
2994
|
+
type: 'stdio',
|
|
2995
|
+
command: 'npx',
|
|
2996
|
+
args: ['@cachly-dev/mcp-server@latest'],
|
|
2997
|
+
env: { CACHLY_INSTANCE_ID: instance_id },
|
|
2998
|
+
},
|
|
2999
|
+
},
|
|
3000
|
+
}, null, 2),
|
|
3001
|
+
},
|
|
3002
|
+
{
|
|
3003
|
+
name: 'Cline',
|
|
3004
|
+
slug: 'cline',
|
|
3005
|
+
icon: '⚡',
|
|
3006
|
+
configPath: '~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json',
|
|
3007
|
+
configBlock: JSON.stringify({
|
|
3008
|
+
mcpServers: {
|
|
3009
|
+
cachly: {
|
|
3010
|
+
command: 'npx',
|
|
3011
|
+
args: ['@cachly-dev/mcp-server@latest'],
|
|
3012
|
+
env: { CACHLY_INSTANCE_ID: instance_id },
|
|
3013
|
+
},
|
|
3014
|
+
},
|
|
3015
|
+
}, null, 2),
|
|
3016
|
+
},
|
|
3017
|
+
{
|
|
3018
|
+
name: 'Zed',
|
|
3019
|
+
slug: 'zed',
|
|
3020
|
+
icon: '⚡',
|
|
3021
|
+
configPath: '~/.config/zed/settings.json',
|
|
3022
|
+
configBlock: JSON.stringify({
|
|
3023
|
+
context_servers: {
|
|
3024
|
+
cachly: {
|
|
3025
|
+
command: { path: 'npx', args: ['@cachly-dev/mcp-server@latest'] },
|
|
3026
|
+
env: { CACHLY_INSTANCE_ID: instance_id },
|
|
3027
|
+
},
|
|
3028
|
+
},
|
|
3029
|
+
}, null, 2),
|
|
3030
|
+
},
|
|
3031
|
+
{
|
|
3032
|
+
name: 'Continue',
|
|
3033
|
+
slug: 'continue',
|
|
3034
|
+
icon: '▶️',
|
|
3035
|
+
configPath: '~/.continue/config.json',
|
|
3036
|
+
configBlock: JSON.stringify({
|
|
3037
|
+
mcpServers: [
|
|
3038
|
+
{
|
|
3039
|
+
name: 'cachly',
|
|
3040
|
+
command: 'npx @cachly-dev/mcp-server@latest',
|
|
3041
|
+
env: { CACHLY_INSTANCE_ID: instance_id },
|
|
3042
|
+
},
|
|
3043
|
+
],
|
|
3044
|
+
}, null, 2),
|
|
3045
|
+
},
|
|
3046
|
+
];
|
|
3047
|
+
const lines = [
|
|
3048
|
+
`## 🌐 Brain Portability — Same Brain, Any Model`,
|
|
3049
|
+
``,
|
|
3050
|
+
`> _"Bring your own model, keep your brain."_`,
|
|
3051
|
+
``,
|
|
3052
|
+
`**Your Brain ID:** \`${instance_id}\``,
|
|
3053
|
+
``,
|
|
3054
|
+
`This Brain ID is model-agnostic. Every lesson you've learned, every Memory Crystal you've distilled,`,
|
|
3055
|
+
`and every prediction from your Causal Knowledge Graph is accessible from **any MCP-compatible AI client**.`,
|
|
3056
|
+
``,
|
|
3057
|
+
`---`,
|
|
3058
|
+
``,
|
|
3059
|
+
`### Compatible Clients (${clients.length} supported)`,
|
|
3060
|
+
``,
|
|
3061
|
+
];
|
|
3062
|
+
for (const c of clients) {
|
|
3063
|
+
lines.push(`#### ${c.icon} ${c.name}`, `Config: \`${c.configPath}\``, ``, '```json', c.configBlock, '```', ``);
|
|
3064
|
+
}
|
|
3065
|
+
lines.push(`---`, ``, `### What travels with you`, ``, `| Data | Model-neutral? |`, `|------|---------------|`, `| Lessons (learn_from_attempts) | ✅ Full access in all clients |`, `| Memory Crystals (memory_crystalize) | ✅ Included in every session_start |`, `| Causal Knowledge Graph (brain_predict) | ✅ Same graph, same predictions |`, `| Team lessons (team_learn, team_confirm) | ✅ Team is per-Brain, not per-model |`, `| Domain Brain Marketplace installs | ✅ Installed once, available everywhere |`, `| Session handoffs (session_handoff) | ✅ Cross-client continuity |`, ``, `---`, ``, `### One-command setup for any new client`, ``, '```bash', `npx @cachly-dev/mcp-server@latest autopilot`, '```', ``, `Autopilot detects all installed editors and writes the config for each — with your \`${instance_id}\` Brain ID pre-filled.`, ``, `---`, `_Docs: cachly.dev/docs/model-neutral • Your Brain, Any Model_`);
|
|
3066
|
+
return lines.join('\n');
|
|
3067
|
+
}
|
|
2921
3068
|
// ── sync_file_changes ─────────────────────────────────────────────────────
|
|
2922
3069
|
default:
|
|
2923
3070
|
return null;
|