@kassol/mcp-searxng 1.0.3-custom.1 → 1.1.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 CHANGED
@@ -2,13 +2,12 @@
2
2
 
3
3
  An [MCP server](https://modelcontextprotocol.io/introduction) that integrates the [SearXNG](https://docs.searxng.org) API, giving AI assistants web search capabilities.
4
4
 
5
- This fork is published as `@kassol/mcp-searxng` and includes support for custom outgoing headers via `SEARXNG_HEADERS` and `URL_READER_HEADERS`.
5
+ This fork is published as `@kassol/mcp-searxng` and includes support for custom outgoing headers via `SEARXNG_HEADERS`, `URL_READER_HEADERS`, and their base64 variants.
6
6
 
7
- [![https://nodei.co/npm/mcp-searxng.png?downloads=true&downloadRank=true&stars=true](https://nodei.co/npm/mcp-searxng.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/mcp-searxng)
8
-
9
- [![https://badgen.net/docker/pulls/isokoliuk/mcp-searxng](https://badgen.net/docker/pulls/isokoliuk/mcp-searxng)](https://hub.docker.com/r/isokoliuk/mcp-searxng)
10
-
11
- <a href="https://glama.ai/mcp/servers/0j7jjyt7m9"><img width="380" height="200" src="https://glama.ai/mcp/servers/0j7jjyt7m9/badge" alt="SearXNG Server MCP server" /></a>
7
+ [![npm version](https://img.shields.io/npm/v/%40kassol%2Fmcp-searxng?label=npm)](https://www.npmjs.com/package/@kassol/mcp-searxng)
8
+ [![npm downloads](https://img.shields.io/npm/dm/%40kassol%2Fmcp-searxng)](https://www.npmjs.com/package/@kassol/mcp-searxng)
9
+ [![license](https://img.shields.io/npm/l/%40kassol%2Fmcp-searxng)](LICENSE)
10
+ [![GitHub repo](https://img.shields.io/badge/github-kassol%2Fmcp--searxng-24292f?logo=github)](https://github.com/kassol/mcp-searxng)
12
11
 
13
12
  ## Quick Start
14
13
 
@@ -102,12 +101,10 @@ npm install -g @kassol/mcp-searxng
102
101
  </details>
103
102
 
104
103
  <details>
105
- <summary>Docker</summary>
106
-
107
- **Pre-built image:**
104
+ <summary>Docker (local build)</summary>
108
105
 
109
106
  ```bash
110
- docker pull isokoliuk/mcp-searxng:latest
107
+ docker build -t mcp-searxng:latest -f Dockerfile .
111
108
  ```
112
109
 
113
110
  ```json
@@ -118,7 +115,7 @@ docker pull isokoliuk/mcp-searxng:latest
118
115
  "args": [
119
116
  "run", "-i", "--rm",
120
117
  "-e", "SEARXNG_URL",
121
- "isokoliuk/mcp-searxng:latest"
118
+ "mcp-searxng:latest"
122
119
  ],
123
120
  "env": {
124
121
  "SEARXNG_URL": "YOUR_SEARXNG_INSTANCE_URL"
@@ -130,14 +127,6 @@ docker pull isokoliuk/mcp-searxng:latest
130
127
 
131
128
  To pass additional env vars, add `-e VAR_NAME` to `args` and the variable to `env`.
132
129
 
133
- **Build locally:**
134
-
135
- ```bash
136
- docker build -t mcp-searxng:latest -f Dockerfile .
137
- ```
138
-
139
- Use the same config above, replacing `isokoliuk/mcp-searxng:latest` with `mcp-searxng:latest`.
140
-
141
130
  </details>
142
131
 
143
132
  <details>
@@ -148,7 +137,10 @@ Use the same config above, replacing `isokoliuk/mcp-searxng:latest` with `mcp-se
148
137
  ```yaml
149
138
  services:
150
139
  mcp-searxng:
151
- image: isokoliuk/mcp-searxng:latest
140
+ build:
141
+ context: .
142
+ dockerfile: Dockerfile
143
+ image: mcp-searxng:latest
152
144
  stdin_open: true
153
145
  environment:
154
146
  - SEARXNG_URL=YOUR_SEARXNG_INSTANCE_URL
@@ -161,8 +153,8 @@ MCP client config:
161
153
  {
162
154
  "mcpServers": {
163
155
  "searxng": {
164
- "command": "docker-compose",
165
- "args": ["run", "--rm", "mcp-searxng"]
156
+ "command": "docker",
157
+ "args": ["compose", "run", "--rm", "mcp-searxng"]
166
158
  }
167
159
  }
168
160
  }
@@ -204,7 +196,25 @@ curl http://localhost:3000/health
204
196
 
205
197
  Set `SEARXNG_URL` to your SearXNG instance URL. All other variables are optional.
206
198
 
207
- Protected SearXNG instances can receive extra search request headers through `SEARXNG_HEADERS_BASE64`:
199
+ Protected SearXNG instances can receive extra search request headers through `SEARXNG_HEADERS_BASE64`. This is the recommended format for ChatWise and other MCP clients that treat environment variables as plain key-value fields.
200
+
201
+ Generate the value directly from existing Cloudflare Access environment variables:
202
+
203
+ ```bash
204
+ export CF_ACCESS_CLIENT_ID='your-client-id.access'
205
+ export CF_ACCESS_CLIENT_SECRET='your-client-secret'
206
+
207
+ node -e 'console.log(Buffer.from(JSON.stringify({"CF-Access-Client-Id":process.env.CF_ACCESS_CLIENT_ID,"CF-Access-Client-Secret":process.env.CF_ACCESS_CLIENT_SECRET})).toString("base64"))'
208
+ ```
209
+
210
+ Verify the generated value:
211
+
212
+ ```bash
213
+ export SEARXNG_HEADERS_BASE64='paste-generated-value-here'
214
+ node -e 'console.log(Buffer.from(process.env.SEARXNG_HEADERS_BASE64,"base64").toString("utf8"))'
215
+ ```
216
+
217
+ MCP client configuration:
208
218
 
209
219
  ```json
210
220
  {
@@ -221,12 +231,16 @@ Protected SearXNG instances can receive extra search request headers through `SE
221
231
  }
222
232
  ```
223
233
 
224
- Generate that value with:
234
+ ChatWise environment variables:
225
235
 
226
- ```bash
227
- node -e 'console.log(Buffer.from(JSON.stringify({"CF-Access-Client-Id":"your-client-id.access","CF-Access-Client-Secret":"your-client-secret"})).toString("base64"))'
236
+ ```text
237
+ SEARXNG_URL=https://search.example.com
238
+ USER_AGENT=Mozilla/5.0
239
+ SEARXNG_HEADERS_BASE64=paste-generated-value-here
228
240
  ```
229
241
 
242
+ `SEARXNG_HEADERS_BASE64` applies only to `searxng_web_search` requests. Use `URL_READER_HEADERS_BASE64` for headers that should be sent by `web_url_read`.
243
+
230
244
  Full environment variable reference: [CONFIGURATION.md](CONFIGURATION.md)
231
245
 
232
246
  ## Troubleshooting
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- declare const packageVersion = "1.0.3-custom.1";
3
+ declare const packageVersion = "1.1.0";
4
4
  export { packageVersion };
5
5
  export declare function isWebUrlReadArgs(args: unknown): args is {
6
6
  url: string;
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ import { fetchAndConvertToMarkdown } from "./url-reader.js";
10
10
  import { createConfigResource, createHelpResource } from "./resources.js";
11
11
  import { createHttpServer } from "./http-server.js";
12
12
  // Use a static version string that will be updated by the version script
13
- const packageVersion = "1.0.3-custom.1";
13
+ const packageVersion = "1.1.0";
14
14
  // Export the version for use in other modules
15
15
  export { packageVersion };
16
16
  // Type guard for URL reading args
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kassol/mcp-searxng",
3
- "version": "1.0.3-custom.1",
3
+ "version": "1.1.0",
4
4
  "mcpName": "io.github.kassol/mcp-searxng",
5
5
  "description": "MCP server for SearXNG integration",
6
6
  "license": "MIT",
@@ -45,6 +45,12 @@
45
45
  "bootstrap": "npm install && npm run build",
46
46
  "inspector": "DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector node dist/index.js",
47
47
  "lint": "eslint src __tests__",
48
+ "sync-version": "node scripts/update-version.js",
49
+ "release:check": "npm run build && npm run lint && npm test && npm pack --dry-run",
50
+ "release:dry-run": "npm publish --dry-run --access public --tag latest",
51
+ "release:patch": "npm version patch",
52
+ "release:minor": "npm version minor",
53
+ "release:major": "npm version major",
48
54
  "postversion": "TAG=$(node scripts/update-version.js | tail -1) && git add src/index.ts .mcp/server.json && git commit --amend --no-edit && git tag -f $TAG"
49
55
  },
50
56
  "dependencies": {