claudepod 1.1.1 → 1.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/.devcontainer/config/claude/mcp.json +1 -2
- package/.devcontainer/config/claude/mcp.json.template +2 -3
- package/.devcontainer/config/searxng/ods_config.json +18 -12
- package/.devcontainer/config/searxng/searxng_env_template +2 -2
- package/.devcontainer/scripts/config/searxng.sh +170 -11
- package/README.md +24 -4
- package/package.json +1 -1
- package/.devcontainer/config/claude/mcp.json.backup +0 -77
|
@@ -42,8 +42,7 @@
|
|
|
42
42
|
],
|
|
43
43
|
"env": {
|
|
44
44
|
"ODS_CONFIG_PATH": "/home/node/.claude/ods_config.json",
|
|
45
|
-
"SEARXNG_ENGINE_API_BASE_URL": "http://localhost:
|
|
46
|
-
"DESIRED_TIMEZONE": "UTC"
|
|
45
|
+
"SEARXNG_ENGINE_API_BASE_URL": "http://localhost:80/search"
|
|
47
46
|
}
|
|
48
47
|
},
|
|
49
48
|
"ref-tools": {
|
|
@@ -63,8 +63,7 @@
|
|
|
63
63
|
"args": ["/usr/local/mcp-servers/searxng/mcp_server.py"],
|
|
64
64
|
"env": {
|
|
65
65
|
"ODS_CONFIG_PATH": "${ODS_CONFIG_PATH:-/home/node/.claude/ods_config.json}",
|
|
66
|
-
"SEARXNG_ENGINE_API_BASE_URL": "${SEARXNG_ENGINE_API_BASE_URL:-http://localhost:
|
|
67
|
-
"DESIRED_TIMEZONE": "${DESIRED_TIMEZONE:-UTC}"
|
|
66
|
+
"SEARXNG_ENGINE_API_BASE_URL": "${SEARXNG_ENGINE_API_BASE_URL:-http://localhost:80/search}"
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
69
|
},
|
|
@@ -115,4 +114,4 @@
|
|
|
115
114
|
}
|
|
116
115
|
}
|
|
117
116
|
}
|
|
118
|
-
}
|
|
117
|
+
}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"SEARXNG_ENGINE_API_BASE_URL": "http://localhost:80/search",
|
|
3
|
+
"searxng_engine_api_base_url": "http://localhost:80/search",
|
|
3
4
|
"desired_timezone": "UTC",
|
|
4
|
-
"returned_scrapped_pages_no":
|
|
5
|
+
"returned_scrapped_pages_no": 2,
|
|
6
|
+
"scrapped_pages_no": 10,
|
|
7
|
+
"page_content_words_limit": 5000,
|
|
8
|
+
"citation_links": true,
|
|
9
|
+
"max_image_results": 10,
|
|
10
|
+
"max_video_results": 10,
|
|
11
|
+
"max_file_results": 5,
|
|
12
|
+
"max_map_results": 5,
|
|
13
|
+
"max_social_results": 5,
|
|
14
|
+
"trafilatura_timeout": 15,
|
|
15
|
+
"scraping_timeout": 30,
|
|
5
16
|
"cache_maxsize": 1000,
|
|
17
|
+
"cache_ttl_minutes": 5,
|
|
18
|
+
"cache_max_age_minutes": 30,
|
|
6
19
|
"rate_limit_requests_per_minute": 60,
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
"default_search_categories": ["general"],
|
|
11
|
-
"enable_content_scraping": true,
|
|
12
|
-
"enable_pdf_reading": true,
|
|
13
|
-
"max_search_results": 10,
|
|
14
|
-
"search_language": "en-US",
|
|
15
|
-
"fallback_language": "en"
|
|
16
|
-
}
|
|
20
|
+
"rate_limit_timeout_seconds": 60,
|
|
21
|
+
"ignored_websites": ""
|
|
22
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# ============================================================================
|
|
8
8
|
|
|
9
9
|
# SearXNG Instance Configuration
|
|
10
|
-
SEARXNG_ENGINE_API_BASE_URL=http://localhost:
|
|
10
|
+
SEARXNG_ENGINE_API_BASE_URL=http://localhost:80/search
|
|
11
11
|
|
|
12
12
|
# Timezone Configuration
|
|
13
13
|
DESIRED_TIMEZONE=UTC
|
|
@@ -68,4 +68,4 @@ ENABLE_PDF_READING=true
|
|
|
68
68
|
# SEARXNG_DEBUG=false
|
|
69
69
|
|
|
70
70
|
# Custom SearXNG instance for testing (optional)
|
|
71
|
-
# CUSTOM_SEARXNG_URL=http://localhost:
|
|
71
|
+
# CUSTOM_SEARXNG_URL=http://localhost:80/search
|
|
@@ -88,7 +88,7 @@ setup_searxng_config() {
|
|
|
88
88
|
validate_searxng_connection() {
|
|
89
89
|
echo "🔍 Validating SearXNG connection..."
|
|
90
90
|
|
|
91
|
-
local searxng_url="${SEARXNG_ENGINE_API_BASE_URL:-http://localhost:
|
|
91
|
+
local searxng_url="${SEARXNG_ENGINE_API_BASE_URL:-http://localhost:80/search}"
|
|
92
92
|
|
|
93
93
|
# Test connection to SearXNG instance
|
|
94
94
|
if command -v curl >/dev/null 2>&1; then
|
|
@@ -111,7 +111,7 @@ setup_searxng_environment() {
|
|
|
111
111
|
|
|
112
112
|
# Set default environment variables if not already set
|
|
113
113
|
export ODS_CONFIG_PATH="${ODS_CONFIG_PATH:-/home/node/.claude/ods_config.json}"
|
|
114
|
-
export SEARXNG_ENGINE_API_BASE_URL="${SEARXNG_ENGINE_API_BASE_URL:-http://localhost:
|
|
114
|
+
export SEARXNG_ENGINE_API_BASE_URL="${SEARXNG_ENGINE_API_BASE_URL:-http://localhost:80/search}"
|
|
115
115
|
export DESIRED_TIMEZONE="${DESIRED_TIMEZONE:-America/New_York}"
|
|
116
116
|
|
|
117
117
|
echo "📋 Environment variables configured:"
|
|
@@ -132,43 +132,199 @@ setup_searxng_local_instance() {
|
|
|
132
132
|
fi
|
|
133
133
|
|
|
134
134
|
local install_dir="${SEARXNG_LOCAL_INSTALL_DIR:-/opt/searxng-local}"
|
|
135
|
+
local temp_dir="/tmp/searxng-local-setup"
|
|
136
|
+
local repo_url="https://github.com/searxng/searxng-docker"
|
|
135
137
|
|
|
136
138
|
# Ensure install directory exists with proper permissions
|
|
137
139
|
sudo mkdir -p "$install_dir"
|
|
138
140
|
sudo chown -R node:node "$install_dir"
|
|
139
141
|
sudo chmod 755 "$install_dir"
|
|
140
142
|
|
|
141
|
-
#
|
|
143
|
+
# Install fresh SearXNG configuration from latest repository if it doesn't exist or is empty
|
|
142
144
|
if [ ! -f "$install_dir/docker-compose.yaml" ] || [ ! -s "$install_dir/docker-compose.yaml" ]; then
|
|
143
|
-
echo "
|
|
145
|
+
echo "📥 Installing SearXNG from latest repository..."
|
|
144
146
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
# Clean up any existing temp directory
|
|
148
|
+
if [ -d "$temp_dir" ]; then
|
|
149
|
+
rm -rf "$temp_dir"
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
# Clone the latest SearXNG Docker repository
|
|
153
|
+
if git clone "$repo_url" "$temp_dir" 2>/dev/null; then
|
|
154
|
+
echo "✅ Successfully cloned SearXNG repository"
|
|
155
|
+
|
|
156
|
+
# Copy the necessary files from the repository
|
|
157
|
+
if [ -f "$temp_dir/docker-compose.yaml" ]; then
|
|
158
|
+
sudo cp "$temp_dir/docker-compose.yaml" "$install_dir/"
|
|
159
|
+
echo "✅ Installed docker-compose.yaml"
|
|
160
|
+
fi
|
|
161
|
+
|
|
162
|
+
if [ -f "$temp_dir/.env" ]; then
|
|
163
|
+
sudo cp "$temp_dir/.env" "$install_dir/"
|
|
164
|
+
echo "✅ Installed .env configuration"
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
if [ -f "$temp_dir/Caddyfile" ]; then
|
|
168
|
+
sudo cp "$temp_dir/Caddyfile" "$install_dir/"
|
|
169
|
+
echo "✅ Installed Caddyfile"
|
|
170
|
+
fi
|
|
171
|
+
|
|
172
|
+
if [ -d "$temp_dir/searxng" ]; then
|
|
173
|
+
sudo cp -r "$temp_dir/searxng" "$install_dir/"
|
|
174
|
+
echo "✅ Installed SearXNG configuration directory"
|
|
175
|
+
fi
|
|
148
176
|
|
|
149
177
|
# Ensure node user owns everything
|
|
150
178
|
sudo chown -R node:node "$install_dir"
|
|
151
179
|
sudo chmod -R u+rwX,g+rX "$install_dir"
|
|
152
180
|
|
|
153
|
-
#
|
|
181
|
+
# Clean up temp directory
|
|
182
|
+
rm -rf "$temp_dir"
|
|
183
|
+
|
|
154
184
|
if [ -f "$install_dir/docker-compose.yaml" ]; then
|
|
155
|
-
echo "✅ SearXNG local
|
|
185
|
+
echo "✅ SearXNG local instance installed successfully from latest repository"
|
|
156
186
|
else
|
|
157
|
-
echo "
|
|
187
|
+
echo "❌ Failed to install docker-compose.yaml from repository"
|
|
158
188
|
return 1
|
|
159
189
|
fi
|
|
160
190
|
else
|
|
161
|
-
echo "
|
|
191
|
+
echo "❌ Failed to clone SearXNG repository from $repo_url"
|
|
162
192
|
return 1
|
|
163
193
|
fi
|
|
164
194
|
else
|
|
165
195
|
echo "📁 SearXNG local configuration already exists in $install_dir"
|
|
166
196
|
fi
|
|
167
197
|
|
|
198
|
+
# Always configure SearXNG for local development (even if installation already exists)
|
|
199
|
+
configure_searxng_for_local_dev "$install_dir"
|
|
200
|
+
|
|
168
201
|
echo "✅ SearXNG local instance setup complete"
|
|
169
202
|
return 0
|
|
170
203
|
}
|
|
171
204
|
|
|
205
|
+
configure_searxng_for_local_dev() {
|
|
206
|
+
local install_dir="$1"
|
|
207
|
+
echo "🔧 Configuring SearXNG for local development..."
|
|
208
|
+
|
|
209
|
+
# Fix Caddyfile if it exists as directory (from previous broken installations)
|
|
210
|
+
if [ -d "$install_dir/Caddyfile" ]; then
|
|
211
|
+
echo "🔧 Fixing Caddyfile directory issue..."
|
|
212
|
+
sudo rm -rf "$install_dir/Caddyfile"
|
|
213
|
+
# Re-download proper Caddyfile
|
|
214
|
+
local temp_dir="/tmp/searxng-caddyfile-fix"
|
|
215
|
+
if git clone "https://github.com/searxng/searxng-docker" "$temp_dir" 2>/dev/null; then
|
|
216
|
+
if [ -f "$temp_dir/Caddyfile" ]; then
|
|
217
|
+
sudo cp "$temp_dir/Caddyfile" "$install_dir/"
|
|
218
|
+
echo "✅ Fixed Caddyfile (was incorrectly a directory)"
|
|
219
|
+
fi
|
|
220
|
+
rm -rf "$temp_dir"
|
|
221
|
+
fi
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
# Generate secure secret key
|
|
225
|
+
local secret_key=$(openssl rand -base64 32 2>/dev/null || echo "$(date +%s)-$(whoami)-$(hostname)" | base64)
|
|
226
|
+
|
|
227
|
+
# Create optimized settings.yml for local development
|
|
228
|
+
sudo tee "$install_dir/searxng/settings.yml" > /dev/null << EOF
|
|
229
|
+
use_default_settings: true
|
|
230
|
+
server:
|
|
231
|
+
secret_key: "$secret_key"
|
|
232
|
+
limiter: false
|
|
233
|
+
image_proxy: true
|
|
234
|
+
public_instance: false
|
|
235
|
+
bind_address: "0.0.0.0:8080"
|
|
236
|
+
method: "POST"
|
|
237
|
+
redis:
|
|
238
|
+
url: redis://redis:6379/0
|
|
239
|
+
search:
|
|
240
|
+
safe_search: 0
|
|
241
|
+
autocomplete: ""
|
|
242
|
+
default_lang: ""
|
|
243
|
+
ban_time_on_fail: 0
|
|
244
|
+
max_ban_time_on_fail: 0
|
|
245
|
+
formats: ['html', 'json']
|
|
246
|
+
general:
|
|
247
|
+
debug: false
|
|
248
|
+
instance_name: "SearXNG Local Development"
|
|
249
|
+
enabled_plugins: []
|
|
250
|
+
disabled_plugins: ['Hash plugin', 'Tracker URL remover', 'Hostnames plugin', 'Unit converter plugin', 'Self Information', 'Search on category select', 'Tor check plugin']
|
|
251
|
+
EOF
|
|
252
|
+
|
|
253
|
+
# Disable limiter configuration by renaming the file
|
|
254
|
+
if [ -f "$install_dir/searxng/limiter.toml" ]; then
|
|
255
|
+
sudo mv "$install_dir/searxng/limiter.toml" "$install_dir/searxng/limiter.toml.disabled"
|
|
256
|
+
echo "✅ Disabled SearXNG rate limiter"
|
|
257
|
+
fi
|
|
258
|
+
|
|
259
|
+
# Fix docker-compose.yaml network configuration for MCP compatibility
|
|
260
|
+
echo "🔧 Fixing docker-compose.yaml for MCP server compatibility..."
|
|
261
|
+
if [ -f "$install_dir/docker-compose.yaml" ]; then
|
|
262
|
+
# Replace network_mode: host with proper networks configuration
|
|
263
|
+
sudo sed -i 's/network_mode: host/networks:\
|
|
264
|
+
- searxng\
|
|
265
|
+
ports:\
|
|
266
|
+
- "80:80"\
|
|
267
|
+
- "443:443"/' "$install_dir/docker-compose.yaml"
|
|
268
|
+
echo "✅ Fixed docker-compose.yaml network configuration"
|
|
269
|
+
else
|
|
270
|
+
echo "⚠️ docker-compose.yaml not found, skipping network fix"
|
|
271
|
+
fi
|
|
272
|
+
|
|
273
|
+
# Fix Caddyfile proxy target and API paths for MCP compatibility
|
|
274
|
+
echo "🔧 Fixing Caddyfile for MCP server compatibility..."
|
|
275
|
+
if [ -f "$install_dir/Caddyfile" ]; then
|
|
276
|
+
# Replace localhost:8080 with searxng:8080 for container networking
|
|
277
|
+
sudo sed -i 's/reverse_proxy localhost:8080/reverse_proxy searxng:8080/' "$install_dir/Caddyfile"
|
|
278
|
+
|
|
279
|
+
# Add /search and / paths to @api matcher after /stats/checker
|
|
280
|
+
sudo sed -i '/path \/stats\/checker/a\\tpath \/search\
|
|
281
|
+
\tpath \/' "$install_dir/Caddyfile"
|
|
282
|
+
echo "✅ Fixed Caddyfile proxy target and API paths"
|
|
283
|
+
else
|
|
284
|
+
echo "⚠️ Caddyfile not found, skipping proxy fix"
|
|
285
|
+
fi
|
|
286
|
+
|
|
287
|
+
# Ensure proper ownership
|
|
288
|
+
sudo chown -R node:node "$install_dir"
|
|
289
|
+
|
|
290
|
+
echo "✅ SearXNG configured for local development (JSON API enabled, network fixed, no rate limiting)"
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
test_searxng_functionality() {
|
|
294
|
+
echo "🧪 Testing SearXNG functionality..."
|
|
295
|
+
|
|
296
|
+
local searxng_url="${SEARXNG_ENGINE_API_BASE_URL:-http://localhost:80/search}"
|
|
297
|
+
|
|
298
|
+
# Wait for services to be ready
|
|
299
|
+
local attempts=0
|
|
300
|
+
while [ $attempts -lt 30 ]; do
|
|
301
|
+
if curl -s --connect-timeout 5 "http://localhost:8080/" >/dev/null 2>&1; then
|
|
302
|
+
break
|
|
303
|
+
fi
|
|
304
|
+
sleep 2
|
|
305
|
+
((attempts++))
|
|
306
|
+
done
|
|
307
|
+
|
|
308
|
+
if [ $attempts -eq 30 ]; then
|
|
309
|
+
echo "⚠️ SearXNG web interface not responding after 60 seconds"
|
|
310
|
+
return 1
|
|
311
|
+
fi
|
|
312
|
+
|
|
313
|
+
# Test web interface
|
|
314
|
+
if curl -s "http://localhost:8080/" | grep -qi "searxng"; then
|
|
315
|
+
echo "✅ SearXNG web interface accessible"
|
|
316
|
+
else
|
|
317
|
+
echo "⚠️ SearXNG web interface not working properly"
|
|
318
|
+
return 1
|
|
319
|
+
fi
|
|
320
|
+
|
|
321
|
+
# Note about API access - may require specific headers/form submission
|
|
322
|
+
echo "ℹ️ SearXNG installed and web interface working"
|
|
323
|
+
echo " API access may require proper form submission (not just GET requests)"
|
|
324
|
+
|
|
325
|
+
return 0
|
|
326
|
+
}
|
|
327
|
+
|
|
172
328
|
start_searxng_local_instance() {
|
|
173
329
|
echo "🚀 Starting SearXNG local instance..."
|
|
174
330
|
|
|
@@ -215,6 +371,9 @@ start_searxng_local_instance() {
|
|
|
215
371
|
sleep 5
|
|
216
372
|
if docker compose ps 2>/dev/null | grep -q "Up" || docker-compose ps 2>/dev/null | grep -q "Up"; then
|
|
217
373
|
echo "🔍 SearXNG should be accessible at http://localhost:8080"
|
|
374
|
+
|
|
375
|
+
# Test functionality
|
|
376
|
+
test_searxng_functionality
|
|
218
377
|
else
|
|
219
378
|
echo "⚠️ Containers started but may need more time to initialize"
|
|
220
379
|
echo " You can check status with: docker compose ps (in $install_dir)"
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ ClaudePod is available as an npm package at [npmjs.com/package/claudepod](https:
|
|
|
19
19
|
```bash
|
|
20
20
|
# Drop into any project
|
|
21
21
|
cd your-project
|
|
22
|
-
npx claudepod
|
|
22
|
+
npx claudepod
|
|
23
23
|
|
|
24
24
|
# Fire it up
|
|
25
25
|
devpod up .
|
|
@@ -60,8 +60,8 @@ ClaudePod ships with 8 MCP servers that turn Claude into a powerhouse:
|
|
|
60
60
|
- **Sequential Thinking** - Structured problem-solving workflows
|
|
61
61
|
- **ccusage** - Claude Code usage analytics and cost tracking
|
|
62
62
|
- **SearXNG Enhanced** - Web search with content scraping
|
|
63
|
-
- **GitHub MCP** - Complete GitHub API integration (API key
|
|
64
|
-
- **Tavily + Ref.Tools** - Web search and documentation tools (API keys
|
|
63
|
+
- **GitHub MCP** - Complete GitHub API integration (API key required)
|
|
64
|
+
- **Tavily + Ref.Tools** - Web search and documentation tools (API keys required)
|
|
65
65
|
|
|
66
66
|
**Tool Permissions**: When Claude first starts, it will ask permission to use these MCP tools. You can deny or allow specific tools based on your needs - this helps manage the large number of available tools (100+). Future versions will make this easier to configure.
|
|
67
67
|
|
|
@@ -126,6 +126,26 @@ REF_TOOLS_API_KEY=your-key
|
|
|
126
126
|
### The Good News
|
|
127
127
|
ClaudePod is designed to be unbreakable. It uses smart configuration templates that preserve your customizations across container rebuilds.
|
|
128
128
|
|
|
129
|
+
### System Prompt Customization
|
|
130
|
+
|
|
131
|
+
**Custom System Prompts** - ClaudePod includes a system prompt file that gets automatically loaded into Claude Code:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# Edit the system prompt file
|
|
135
|
+
.devcontainer/config/claude/system-prompt.md
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
This file allows you to add project-specific instructions, coding standards, or context that Claude should remember throughout your sessions. Changes are automatically applied when the container starts.
|
|
139
|
+
|
|
140
|
+
**Output Styles** - Claude Code's output styles can be paired with your custom system prompt for even more specialized behavior:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Create custom output styles in Claude Code
|
|
144
|
+
/output-style:new I want an output style that focuses on performance optimization
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Output styles modify Claude's system prompt to change how it responds - perfect for specialized workflows like code reviews, documentation writing, or educational contexts.
|
|
148
|
+
|
|
129
149
|
### Common Gotchas
|
|
130
150
|
|
|
131
151
|
**Override Flags** - ClaudePod has environment variables like `OVERRIDE_CLAUDE_SETTINGS=true` that can overwrite your customizations. Only use these if you want to reset to defaults.
|
|
@@ -241,4 +261,4 @@ The GPL-3.0 is a copyleft license that ensures this software remains free and op
|
|
|
241
261
|
|
|
242
262
|
---
|
|
243
263
|
|
|
244
|
-
**Ready to code with AI superpowers?** ClaudePod turns any project into an AI-native development environment.
|
|
264
|
+
**Ready to code with AI superpowers?** ClaudePod turns any project into an AI-native development environment.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claudepod",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Complete development container that sets up Claude Code with 8 powerful MCP servers, modern dev tools, and persistent configurations. Drop it into any project and get a production-ready AI development environment in minutes.",
|
|
5
5
|
"main": "setup.js",
|
|
6
6
|
"bin": {
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"mcpServers": {
|
|
3
|
-
"serena": {
|
|
4
|
-
"command": "uvx",
|
|
5
|
-
"args": [
|
|
6
|
-
"--from",
|
|
7
|
-
"git+https://github.com/oraios/serena",
|
|
8
|
-
"serena",
|
|
9
|
-
"start-mcp-server",
|
|
10
|
-
"--context",
|
|
11
|
-
"ide-assistant",
|
|
12
|
-
"--project",
|
|
13
|
-
"/workspace",
|
|
14
|
-
"--enable-web-dashboard",
|
|
15
|
-
"false"
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
"deepwiki": {
|
|
19
|
-
"type": "http",
|
|
20
|
-
"url": "https://mcp.deepwiki.com/mcp"
|
|
21
|
-
},
|
|
22
|
-
"sequential-thinking": {
|
|
23
|
-
"command": "uvx",
|
|
24
|
-
"args": [
|
|
25
|
-
"--from",
|
|
26
|
-
"git+https://github.com/arben-adm/mcp-sequential-thinking.git",
|
|
27
|
-
"--with",
|
|
28
|
-
"portalocker",
|
|
29
|
-
"mcp-sequential-thinking"
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
"ccusage": {
|
|
33
|
-
"command": "ccusage",
|
|
34
|
-
"args": [
|
|
35
|
-
"mcp"
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
"searxng-enhanced": {
|
|
39
|
-
"command": "python3",
|
|
40
|
-
"args": [
|
|
41
|
-
"/usr/local/mcp-servers/searxng/mcp_server.py"
|
|
42
|
-
],
|
|
43
|
-
"env": {
|
|
44
|
-
"ODS_CONFIG_PATH": "/home/node/.claude/ods_config.json",
|
|
45
|
-
"SEARXNG_ENGINE_API_BASE_URL": "http://localhost:8080/search",
|
|
46
|
-
"DESIRED_TIMEZONE": "UTC"
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
"ref-tools": {
|
|
50
|
-
"type": "http",
|
|
51
|
-
"url": "https://api.ref.tools/mcp?apiKey=ref-23a0788cef18edde68af",
|
|
52
|
-
"env": {
|
|
53
|
-
"REF_TOOLS_API_KEY": "ref-23a0788cef18edde68af"
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
"github": {
|
|
57
|
-
"command": "docker",
|
|
58
|
-
"args": [
|
|
59
|
-
"run",
|
|
60
|
-
"--rm",
|
|
61
|
-
"-i",
|
|
62
|
-
"-e",
|
|
63
|
-
"GITHUB_PERSONAL_ACCESS_TOKEN=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",
|
|
64
|
-
"-e",
|
|
65
|
-
"GITHUB_API_URL=",
|
|
66
|
-
"-e",
|
|
67
|
-
"GITHUB_TOOLSET=",
|
|
68
|
-
"ghcr.io/github/github-mcp-server:latest"
|
|
69
|
-
],
|
|
70
|
-
"env": {
|
|
71
|
-
"GITHUB_PERSONAL_ACCESS_TOKEN": "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",
|
|
72
|
-
"GITHUB_API_URL": "",
|
|
73
|
-
"GITHUB_TOOLSET": ""
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|