serena-slim 0.0.1-slim.1.1 → 0.0.1-slim.1.4
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 +11 -8
- package/bin/mcpslim-windows-x64.exe +0 -0
- package/index.js +44 -3
- package/package.json +1 -1
- package/recipes/serena.json +9 -11
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# serena-slim
|
|
2
2
|
|
|
3
|
-
> **Serena MCP server optimized for AI assistants** — Reduce context window tokens by 51.
|
|
3
|
+
> **Serena MCP server optimized for AI assistants** — Reduce context window tokens by 51.6% while keeping full functionality. Compatible with Claude, ChatGPT, Gemini, Cursor, and all MCP clients.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/serena-slim)
|
|
6
6
|
[](https://github.com/mcpslim/mcpslim)
|
|
@@ -18,7 +18,7 @@ The original `serena` loads **29 tools** consuming approximately **~23,878 token
|
|
|
18
18
|
|
|
19
19
|
### The Solution
|
|
20
20
|
|
|
21
|
-
`serena-slim` intelligently **groups 29 tools into 18 semantic operations**, reducing token usage by **51.
|
|
21
|
+
`serena-slim` intelligently **groups 29 tools into 18 semantic operations**, reducing token usage by **51.6%** — with **zero functionality loss**.
|
|
22
22
|
|
|
23
23
|
Your AI assistant sees fewer, smarter tools. Every original capability remains available.
|
|
24
24
|
|
|
@@ -27,8 +27,8 @@ Your AI assistant sees fewer, smarter tools. Every original capability remains a
|
|
|
27
27
|
| Metric | Original | Slim | Reduction |
|
|
28
28
|
|--------|----------|------|-----------|
|
|
29
29
|
| Tools | 29 | 18 | **-38%** |
|
|
30
|
-
| Schema Tokens | 7,348 | 1,
|
|
31
|
-
| Claude Code (est.) | ~23,878 | ~11,
|
|
30
|
+
| Schema Tokens | 7,348 | 1,289 | **82.5%** |
|
|
31
|
+
| Claude Code (est.) | ~23,878 | ~11,549 | **~51.6%** |
|
|
32
32
|
|
|
33
33
|
> **Benchmark Info**
|
|
34
34
|
> - Original: `serena@0.0.1`
|
|
@@ -55,8 +55,11 @@ Done! Restart your app to use serena.
|
|
|
55
55
|
### CLI Tools (already have CLI?)
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
|
-
# Claude Code
|
|
59
|
-
claude mcp add serena -- npx -y serena-slim
|
|
58
|
+
# Claude Code (creates .mcp.json in project root)
|
|
59
|
+
claude mcp add serena -s project -- npx -y serena-slim
|
|
60
|
+
|
|
61
|
+
# Windows: use cmd /c wrapper
|
|
62
|
+
claude mcp add serena -s project -- cmd /c npx -y serena-slim
|
|
60
63
|
|
|
61
64
|
# VS Code (Copilot, Cline, Roo Code)
|
|
62
65
|
code --add-mcp '{"name":"serena","command":"npx","args":["-y","serena-slim"]}'
|
|
@@ -121,7 +124,7 @@ MCPSlim acts as a **transparent bridge** between AI models and the original MCP
|
|
|
121
124
|
│ │ │ │ │
|
|
122
125
|
│ Sees 18 grouped Translates to Executes actual │
|
|
123
126
|
│ tools only original call tool & returns │
|
|
124
|
-
│ (~11,
|
|
127
|
+
│ (~11,549 tokens) │
|
|
125
128
|
└─────────────────────────────────────────────────────────────────┘
|
|
126
129
|
```
|
|
127
130
|
|
|
@@ -133,7 +136,7 @@ MCPSlim acts as a **transparent bridge** between AI models and the original MCP
|
|
|
133
136
|
4. **Original MCP executes** — Real server processes the request
|
|
134
137
|
5. **Response returned** — Result passes back unchanged
|
|
135
138
|
|
|
136
|
-
**Zero functionality loss. 51.
|
|
139
|
+
**Zero functionality loss. 51.6% token savings.**
|
|
137
140
|
|
|
138
141
|
## Available Tool Groups
|
|
139
142
|
|
|
Binary file
|
package/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* npx serena-slim --setup # Auto-configure (interactive)
|
|
9
9
|
* npx serena-slim --setup claude # Auto-configure for Claude Desktop
|
|
10
10
|
* npx serena-slim --setup cursor # Auto-configure for Cursor
|
|
11
|
+
* npx serena-slim --setup claude-code # Auto-configure for Claude Code CLI
|
|
11
12
|
*/
|
|
12
13
|
|
|
13
14
|
const { spawn, execSync } = require('child_process');
|
|
@@ -116,10 +117,11 @@ async function interactiveSetup() {
|
|
|
116
117
|
case '3':
|
|
117
118
|
console.log('\nRun this command:\n');
|
|
118
119
|
if (REQUIRED_ENV_VARS.length > 0) {
|
|
119
|
-
console.log(` claude mcp add ${MCP_NAME} ${envFlags} -- npx -y ${PACKAGE_NAME}\n`);
|
|
120
|
+
console.log(` claude mcp add ${MCP_NAME} -s project ${envFlags} -- npx -y ${PACKAGE_NAME}\n`);
|
|
120
121
|
} else {
|
|
121
|
-
console.log(` claude mcp add ${MCP_NAME} -- npx -y ${PACKAGE_NAME}\n`);
|
|
122
|
+
console.log(` claude mcp add ${MCP_NAME} -s project -- npx -y ${PACKAGE_NAME}\n`);
|
|
122
123
|
}
|
|
124
|
+
console.log(' (Windows: use "cmd /c npx" instead of "npx")\n');
|
|
123
125
|
return true;
|
|
124
126
|
case '4':
|
|
125
127
|
console.log('\nRun this command:\n');
|
|
@@ -132,11 +134,50 @@ async function interactiveSetup() {
|
|
|
132
134
|
}
|
|
133
135
|
}
|
|
134
136
|
|
|
137
|
+
function setupClaudeCode() {
|
|
138
|
+
// 환경변수 플래그 생성
|
|
139
|
+
const envFlags = REQUIRED_ENV_VARS.map(v => `--env ${v}=<YOUR_${v.split('_').pop()}>`).join(' ');
|
|
140
|
+
|
|
141
|
+
// Windows에서는 cmd /c wrapper 필요
|
|
142
|
+
const npxCmd = os.platform() === 'win32' ? 'cmd /c npx' : 'npx';
|
|
143
|
+
|
|
144
|
+
let cmd = `claude mcp add ${MCP_NAME} -s project`;
|
|
145
|
+
if (REQUIRED_ENV_VARS.length > 0) {
|
|
146
|
+
cmd += ` ${envFlags}`;
|
|
147
|
+
}
|
|
148
|
+
cmd += ` -- ${npxCmd} -y ${PACKAGE_NAME}`;
|
|
149
|
+
|
|
150
|
+
console.log(`\n🔧 Adding ${MCP_NAME} to Claude Code...\n`);
|
|
151
|
+
console.log(`Running: ${cmd}\n`);
|
|
152
|
+
|
|
153
|
+
try {
|
|
154
|
+
execSync(cmd, { stdio: 'inherit', shell: true });
|
|
155
|
+
console.log(`\n🎉 Setup complete! ${MCP_NAME} is now available in Claude Code.\n`);
|
|
156
|
+
if (REQUIRED_ENV_VARS.length > 0) {
|
|
157
|
+
console.log(`⚠️ Don't forget to set environment variables:`);
|
|
158
|
+
for (const envVar of REQUIRED_ENV_VARS) {
|
|
159
|
+
console.log(` - ${envVar}`);
|
|
160
|
+
}
|
|
161
|
+
console.log('');
|
|
162
|
+
}
|
|
163
|
+
return true;
|
|
164
|
+
} catch (err) {
|
|
165
|
+
console.error(`\n❌ Failed to add MCP. Is Claude Code CLI installed?\n`);
|
|
166
|
+
console.log(`Try running manually:\n ${cmd}\n`);
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
135
171
|
function setupClient(client) {
|
|
172
|
+
// Claude Code CLI는 별도 처리
|
|
173
|
+
if (client === 'claude-code') {
|
|
174
|
+
return setupClaudeCode();
|
|
175
|
+
}
|
|
176
|
+
|
|
136
177
|
const configPath = CONFIG_PATHS[client];
|
|
137
178
|
if (!configPath) {
|
|
138
179
|
console.error(`❌ Unknown client: ${client}`);
|
|
139
|
-
console.log('Supported: claude, claude-desktop, cursor');
|
|
180
|
+
console.log('Supported: claude, claude-desktop, cursor, claude-code');
|
|
140
181
|
return false;
|
|
141
182
|
}
|
|
142
183
|
|
package/package.json
CHANGED
package/recipes/serena.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"groups": [
|
|
10
10
|
{
|
|
11
11
|
"name": "read",
|
|
12
|
-
"description": "
|
|
12
|
+
"description": "read operations",
|
|
13
13
|
"mapping": {
|
|
14
14
|
"file": "read_file",
|
|
15
15
|
"memory": "read_memory"
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"name": "list",
|
|
54
|
-
"description": "
|
|
54
|
+
"description": "list operations",
|
|
55
55
|
"mapping": {
|
|
56
56
|
"dir": "list_dir",
|
|
57
57
|
"memories": "list_memories"
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"name": "find",
|
|
93
|
-
"description": "
|
|
93
|
+
"description": "find operations",
|
|
94
94
|
"mapping": {
|
|
95
95
|
"file": "find_file",
|
|
96
96
|
"symbol": "find_symbol",
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
"name": "replace",
|
|
164
|
-
"description": "
|
|
164
|
+
"description": "replace operations",
|
|
165
165
|
"mapping": {
|
|
166
166
|
"content": "replace_content",
|
|
167
167
|
"symbol_body": "replace_symbol_body"
|
|
@@ -216,7 +216,7 @@
|
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
"name": "get",
|
|
219
|
-
"description": "
|
|
219
|
+
"description": "get operations",
|
|
220
220
|
"mapping": {
|
|
221
221
|
"symbols_overview": "get_symbols_overview",
|
|
222
222
|
"current_config": "get_current_config"
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
},
|
|
252
252
|
{
|
|
253
253
|
"name": "insert",
|
|
254
|
-
"description": "
|
|
254
|
+
"description": "insert operations",
|
|
255
255
|
"mapping": {
|
|
256
256
|
"after_symbol": "insert_after_symbol",
|
|
257
257
|
"before_symbol": "insert_before_symbol"
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
},
|
|
287
287
|
{
|
|
288
288
|
"name": "think",
|
|
289
|
-
"description": "
|
|
289
|
+
"description": "think operations",
|
|
290
290
|
"mapping": {
|
|
291
291
|
"about_collected_information": "think_about_collected_information",
|
|
292
292
|
"about_task_adherence": "think_about_task_adherence",
|
|
@@ -311,7 +311,7 @@
|
|
|
311
311
|
},
|
|
312
312
|
{
|
|
313
313
|
"name": "memory",
|
|
314
|
-
"description": "
|
|
314
|
+
"description": "memory operations",
|
|
315
315
|
"mapping": {
|
|
316
316
|
"write": "write_memory",
|
|
317
317
|
"delete": "delete_memory",
|
|
@@ -374,7 +374,5 @@
|
|
|
374
374
|
"onboarding",
|
|
375
375
|
"prepare_for_new_conversation",
|
|
376
376
|
"initial_instructions"
|
|
377
|
-
]
|
|
378
|
-
"ai_enhanced": true,
|
|
379
|
-
"enhanced_at": "2026-01-05T07:32:33.116Z"
|
|
377
|
+
]
|
|
380
378
|
}
|