mcp-filter 1.0.2 → 1.1.1

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
@@ -1,9 +1,9 @@
1
1
  <p align="center">
2
2
  <h1 align="center">mcp-filter</h1>
3
3
  <p align="center">
4
- MCP proxy that filters tools, resources, and prompts from upstream MCP servers using glob patterns.
4
+ MCP proxy that filters tools, resources, and prompts using glob patterns.
5
5
  <br />
6
- Works with any MCP client. Supports local and remote servers.
6
+ Any MCP server. Any MCP client. Local or remote.
7
7
  </p>
8
8
  </p>
9
9
 
@@ -17,164 +17,129 @@
17
17
 
18
18
  ---
19
19
 
20
- ## Why mcp-filter?
20
+ ## The Problem
21
21
 
22
- MCP servers expose tools, resources, and prompts to AI agents but you don't always want agents to have access to everything. `mcp-filter` sits between your MCP client and upstream server, filtering what gets through:
22
+ [GitHub MCP Server](https://github.com/github/github-mcp-server) exposes 79 tools — **~52,000 tokens** of context window on every request. A PR review agent needs about 10 of them. The other 69 (gists, stars, security advisories, dependabot, discussions...) consume tokens and make tool selection harder for the model.
23
23
 
24
- - **Security** Block destructive operations (`delete_*`, `admin_*`) before they reach the agent
25
- - **Focus** — Whitelist only the tools an agent needs for its specific task
26
- - **Cost** — Fewer tools in context means fewer tokens consumed per request
27
- - **Flexibility** — Works with any MCP server, any MCP client, any transport
24
+ Most MCP clients offer blacklists like `disabledTools` you list what to block. This works until the upstream server adds a new tool. It silently appears in context because it's not in your blocklist. You find out when the agent calls a tool you didn't know existed.
28
25
 
29
- ## Quick Start
26
+ Blacklists describe what you *don't* want. Whitelists describe what you *do* want — and they're immune to upstream changes.
30
27
 
31
- ```bash
32
- npm install -g mcp-filter
33
- # or use directly with npx (no install needed)
34
- ```
35
-
36
- ```bash
37
- # Filter a local MCP server (stdio)
38
- npx mcp-filter --exclude "browser_close" --exclude "browser_evaluate" -- npx @playwright/mcp
28
+ ## The Solution
39
29
 
40
- # Filter a remote MCP server (HTTP) block refunds on Stripe
41
- npx mcp-filter --exclude "create_refund" --upstream-url https://mcp.stripe.com
30
+ `mcp-filter` is an MCP proxy that sits between your client and server. It intercepts tool/resource/prompt lists, applies glob patterns, and only passes through what matches. Add it to your MCP client's JSON config:
42
31
 
43
- # Whitelist mode — only allow specific tools
44
- npx mcp-filter --include "browser_navigate" --include "browser_screenshot" -- npx @playwright/mcp
32
+ ```json
33
+ {
34
+ "mcpServers": {
35
+ "playwright-safe": {
36
+ "command": "npx",
37
+ "args": [
38
+ "mcp-filter",
39
+ "--exclude", "browser_close",
40
+ "--exclude", "browser_evaluate",
41
+ "--include", "browser_*",
42
+ "--",
43
+ "npx", "@playwright/mcp@latest"
44
+ ]
45
+ }
46
+ }
47
+ }
45
48
  ```
46
49
 
47
- ## Supported Transports
48
-
49
- mcp-filter connects to upstream MCP servers via three transport types:
50
-
51
- | Transport | Flag | Use Case | Status |
52
- |-----------|------|----------|--------|
53
- | **Stdio** | `-- <command>` | Local servers spawned as subprocesses | Stable |
54
- | **HTTP** | `--upstream-url <url>` | Remote servers via Streamable HTTP | Stable |
55
- | **SSE** | `--transport sse --upstream-url <url>` | Legacy remote servers via Server-Sent Events | Deprecated |
56
-
57
- Transport is auto-detected: `--upstream-url` selects HTTP by default, `-- <command>` selects stdio. Override with `--transport`.
50
+ No install needed — `npx` downloads it automatically. This config format works with Cursor, VS Code, Claude Desktop, and any MCP client that supports stdio servers.
58
51
 
59
- ## Usage
60
-
61
- ### Local Servers (Stdio)
52
+ <details>
53
+ <summary>Remote server (HTTP)</summary>
62
54
 
63
- ```bash
64
- # Exclude specific tools
65
- npx mcp-filter --exclude "playwright*" -- npx @playwright/mcp
55
+ ```json
56
+ {
57
+ "mcpServers": {
58
+ "stripe-safe": {
59
+ "command": "npx",
60
+ "args": [
61
+ "mcp-filter",
62
+ "--exclude", "create_refund",
63
+ "--exclude", "delete_*",
64
+ "--upstream-url", "https://mcp.stripe.com"
65
+ ]
66
+ }
67
+ }
68
+ }
69
+ ```
66
70
 
67
- # Include only specific tools (whitelist)
68
- npx mcp-filter --include "browser_navigate" --include "browser_screenshot" -- npx @playwright/mcp
71
+ </details>
69
72
 
70
- # Rsync-style: exclude exceptions, then include category
71
- npx mcp-filter --exclude "browser_close" --include "browser_*" -- npx @playwright/mcp
73
+ <details>
74
+ <summary>Remote server with authentication</summary>
72
75
 
73
- # Works with any local MCP server
74
- npx mcp-filter --exclude "debug*" -- node my-mcp-server.js
76
+ ```json
77
+ {
78
+ "mcpServers": {
79
+ "api-readonly": {
80
+ "command": "npx",
81
+ "args": [
82
+ "mcp-filter",
83
+ "--exclude", "write_*",
84
+ "--exclude", "delete_*",
85
+ "--upstream-url", "https://api.example.com/mcp",
86
+ "--authorization", "Bearer your-oauth-token"
87
+ ]
88
+ }
89
+ }
90
+ }
75
91
  ```
76
92
 
77
- ### Remote Servers (HTTP)
93
+ For additional headers, use `--header "Key: Value"` (repeatable).
78
94
 
79
- ```bash
80
- # Block refunds and customer deletion on Stripe
81
- npx mcp-filter --exclude "create_refund" --exclude "delete_*" \
82
- --upstream-url https://mcp.stripe.com
83
-
84
- # Read-only Notion (block all mutations)
85
- npx mcp-filter \
86
- --exclude "create_*" --exclude "update_*" --exclude "delete_*" --exclude "archive_*" \
87
- --upstream-url https://mcp.notion.com/mcp
88
-
89
- # Multiple headers
90
- npx mcp-filter --exclude "write_*" \
91
- --upstream-url https://api.example.com/mcp \
92
- --header "Authorization: Bearer token" \
93
- --header "X-Team-Id: engineering"
94
- ```
95
+ </details>
95
96
 
96
- ### Legacy SSE Servers
97
+ <details>
98
+ <summary>Claude Code</summary>
97
99
 
98
- ```bash
99
- # SSE transport (deprecated — prefer HTTP for new deployments)
100
- npx mcp-filter --transport sse \
101
- --upstream-url https://mcp.example.com/sse \
102
- --exclude "dangerous_*"
103
- ```
100
+ Claude Code uses `claude mcp add` instead of JSON config:
104
101
 
105
- ## CLI Reference
102
+ ```bash
103
+ # Local server (two -- separators: first for Claude, second for mcp-filter)
104
+ claude mcp add playwright-safe -- \
105
+ npx mcp-filter \
106
+ --exclude "browser_close" \
107
+ --exclude "browser_evaluate" \
108
+ --include "browser_*" \
109
+ -- npx @playwright/mcp@latest
106
110
 
111
+ # Remote HTTP server (no second --)
112
+ claude mcp add stripe-safe -- \
113
+ npx mcp-filter \
114
+ --exclude "create_refund" \
115
+ --exclude "delete_*" \
116
+ --upstream-url https://mcp.stripe.com
107
117
  ```
108
- mcp-filter [options] -- <upstream-command>
109
- mcp-filter [options] --upstream-url <url>
110
- ```
111
-
112
- ### Filtering Options
113
-
114
- | Flag | Description |
115
- |------|-------------|
116
- | `--exclude <pattern>` | Exclude items matching glob pattern (repeatable) |
117
- | `--include <pattern>` | Include only items matching glob pattern (repeatable) |
118
118
 
119
- ### Transport Options
119
+ First `--` separates Claude's options from mcp-filter. Second `--` separates mcp-filter's options from the upstream command.
120
120
 
121
- | Flag | Description |
122
- |------|-------------|
123
- | `--upstream-url <url>` | Connect to remote HTTP/SSE server |
124
- | `--transport <type>` | Transport type: `stdio`, `http`, `sse` (auto-detected) |
125
- | `--header <header>` | HTTP header as `"Key: Value"` (repeatable, HTTP/SSE only) |
126
- | `--` | Separates mcp-filter options from upstream command (stdio only) |
127
-
128
- ### Other Options
121
+ </details>
129
122
 
130
- | Flag | Description |
131
- |------|-------------|
132
- | `--help` | Show help message |
133
- | `--version` | Show version number |
123
+ ## How Filtering Works
134
124
 
135
- > **Note**: `--upstream-url` and `-- <command>` are mutually exclusive.
125
+ mcp-filter supports three filtering modes:
136
126
 
137
- ## Filtering Modes
127
+ **Exclude mode** blocks specific tools and allows everything else. Use `--exclude` when you trust most tools but want to remove a few dangerous ones: `--exclude "delete_*"` blocks all delete operations.
138
128
 
139
- ### Exclude Mode
129
+ **Include mode** (whitelist) allows only what you specify and blocks everything else. Use `--include` when you want a tight perimeter: `--include "pull_request_*"` passes through only PR tools. New tools added upstream are automatically blocked.
140
130
 
141
- Block specific items, allow everything else:
131
+ **Combined mode** uses rsync-style ordering — patterns are evaluated in the order you write them, and the first match wins. This lets you create exceptions within a category:
142
132
 
143
- ```bash
144
- npx mcp-filter --exclude "browser_close" --exclude "browser_evaluate" -- npx @playwright/mcp
145
133
  ```
146
-
147
- ### Include Mode (Whitelist)
148
-
149
- Allow only specified items, block everything else:
150
-
151
- ```bash
152
- npx mcp-filter --include "browser_navigate" --include "browser_screenshot" -- npx @playwright/mcp
134
+ --exclude "merge_pull_request" --include "pull_request_*"
153
135
  ```
154
136
 
155
- ### Rsync-Style Combination
156
-
157
- Patterns are evaluated **in order** — first match wins. This lets you combine `--include` and `--exclude` for fine-grained control:
158
-
159
- ```bash
160
- # Exclude specific tools, then include the rest of the category
161
- npx mcp-filter \
162
- --exclude "browser_close" \
163
- --exclude "browser_evaluate" \
164
- --include "browser_*" \
165
- -- npx @playwright/mcp
166
-
167
- # Evaluation:
168
- # browser_close → matches --exclude "browser_close" → EXCLUDED
169
- # browser_evaluate → matches --exclude "browser_evaluate" → EXCLUDED
170
- # browser_navigate → matches --include "browser_*" → included
171
- # browser_screenshot → matches --include "browser_*" → included
172
- # some_other_tool → no match, --include exists → excluded (whitelist mode)
173
- ```
137
+ Here, `merge_pull_request` hits the exclude rule first, so it's blocked. Other `pull_request_*` tools match the include rule and pass through. Anything that doesn't match any pattern is excluded (because `--include` exists).
174
138
 
175
- > **Order matters!** `--exclude "browser_close" --include "browser_*"` excludes `browser_close` then includes the rest. Reversing the order would include `browser_close` (it matches `browser_*` first).
139
+ Reversing the order would break this: `--include "pull_request_*" --exclude "merge_pull_request"` now `merge_pull_request` matches `pull_request_*` first and gets included.
176
140
 
177
- ### Pattern Syntax
141
+ <details>
142
+ <summary>Pattern syntax and default behavior</summary>
178
143
 
179
144
  Patterns use glob syntax via [minimatch](https://github.com/isaacs/minimatch):
180
145
 
@@ -186,7 +151,7 @@ Patterns use glob syntax via [minimatch](https://github.com/isaacs/minimatch):
186
151
  | `exact_name` | Exact match only |
187
152
  | `*` | Everything |
188
153
 
189
- ### Default Behavior
154
+ Default behavior for unmatched items:
190
155
 
191
156
  | Configuration | Unmatched items are... |
192
157
  |---------------|------------------------|
@@ -195,255 +160,146 @@ Patterns use glob syntax via [minimatch](https://github.com/isaacs/minimatch):
195
160
  | `--include` only | Excluded (whitelist mode) |
196
161
  | Mixed | Excluded if any `--include` exists |
197
162
 
198
- ## MCP Spec Conformance
199
-
200
- mcp-filter is a fully conformant MCP proxy. It transparently forwards all MCP protocol features while applying filters only to list/call operations.
201
-
202
- ### Filtered Operations
203
-
204
- | Operation | Behavior |
205
- |-----------|----------|
206
- | `tools/list` | Drains all pages, filters by name, returns filtered list |
207
- | `tools/call` | Blocks excluded tools with `-32602 InvalidParams` |
208
- | `resources/list` | Drains all pages, filters by name |
209
- | `resources/templates/list` | Drains all pages, filters by name |
210
- | `resources/read` | Forwarded (filtered resources won't appear in list) |
211
- | `resources/subscribe` | Forwarded to upstream |
212
- | `resources/unsubscribe` | Forwarded to upstream |
213
- | `prompts/list` | Drains all pages, filters by name |
214
- | `prompts/get` | Blocks excluded prompts with `-32602 InvalidParams` |
215
- | `completion/complete` | Blocks if referenced prompt is filtered; forwards resource completions |
216
- | `logging/setLevel` | Forwarded to upstream |
217
-
218
- ### Forwarded Notifications
219
-
220
- | Direction | Notification | Description |
221
- |-----------|-------------|-------------|
222
- | Upstream → Downstream | `notifications/tools/list_changed` | Tool list changed |
223
- | Upstream → Downstream | `notifications/resources/list_changed` | Resource list changed |
224
- | Upstream → Downstream | `notifications/prompts/list_changed` | Prompt list changed |
225
- | Upstream → Downstream | `notifications/resources/updated` | Resource content updated |
226
- | Upstream → Downstream | `notifications/message` | Log messages |
227
- | Downstream → Upstream | `notifications/roots/list_changed` | Client roots changed |
228
-
229
- ### Reverse-Direction Requests (Server → Client)
230
-
231
- | Request | Description |
232
- |---------|-------------|
233
- | `sampling/createMessage` | Forwarded from upstream to downstream client |
234
- | `roots/list` | Forwarded from upstream to downstream client |
235
- | `elicitation/create` | Forwarded from upstream to downstream client |
236
-
237
- ### Protocol Features
238
-
239
- | Feature | Support |
240
- |---------|---------|
241
- | **Capability gating** | Only advertises capabilities the upstream server supports |
242
- | **Instructions forwarding** | Upstream server instructions passed through to downstream |
243
- | **Pagination** | Drains all pages before filtering (max 100 pages) |
244
- | **Progress notifications** | Forwarded on `tools/call`, `prompts/get`, `resources/read` |
245
- | **Cancellation propagation** | Downstream abort triggers upstream `notifications/cancelled` |
246
- | **Graceful shutdown** | SIGINT/SIGTERM cleanly close both transports |
247
- | **Connection timeout** | 30-second timeout prevents hang on unreachable servers |
248
-
249
- ## Architecture
250
-
251
- ```
252
- ┌─────────────┐ ┌──────────────────────────────────────┐ ┌──────────────┐
253
- │ MCP Client │ stdio │ mcp-filter │ stdio/ │ Upstream │
254
- │ (Claude, │◄───────►│ │ HTTP/ │ MCP Server │
255
- │ Cursor, │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ SSE │ (Playwright, │
256
- │ etc.) │ │ │ Server │→ │ Filter │→ │ Client │◄┼────────►│ Notion, │
257
- │ │ │ └────────┘ └────────┘ └────────┘ │ │ etc.) │
258
- └─────────────┘ └──────────────────────────────────────┘ └──────────────┘
259
- ```
260
-
261
- **Four-layer design:**
262
-
263
- 1. **CLI** (`src/cli.ts`) — Parses arguments into a typed `FilterConfig`
264
- 2. **Transport Factory** (`src/transport.ts`) — Creates the appropriate client transport (stdio/HTTP/SSE)
265
- 3. **Filter Engine** (`src/filter.ts`) — Glob pattern matching via minimatch
266
- 4. **Proxy Server** (`src/proxy.ts`) — Dual-role MCP client + server with two-phase initialization
267
-
268
- ## Integration Guides
269
-
270
- ### Claude Code
271
-
272
- ```bash
273
- # Add a filtered MCP server
274
- claude mcp add playwright-safe -- \
275
- npx mcp-filter \
276
- --exclude "browser_close" \
277
- --exclude "browser_evaluate" \
278
- --include "browser_*" \
279
- -- npx @playwright/mcp@latest
163
+ </details>
280
164
 
281
- # Scopes: local (default), user (all projects), project (team-shared .mcp.json)
282
- claude mcp add --scope user playwright-safe -- \
283
- npx mcp-filter --include "browser_*" -- npx @playwright/mcp@latest
284
- ```
165
+ ## Real-World Examples
285
166
 
286
- **Remote HTTP server (no second `--`):**
287
-
288
- ```bash
289
- claude mcp add stripe-safe -- \
290
- npx mcp-filter \
291
- --exclude "create_refund" \
292
- --exclude "delete_*" \
293
- --upstream-url https://mcp.stripe.com
294
- ```
295
-
296
- **Command structure:** first `--` separates Claude options from mcp-filter; second `--` separates mcp-filter options from the upstream command.
167
+ The [GitHub MCP Server](https://github.com/github/github-mcp-server) exposes 79 tools across 19 toolsets. Here's how different agents can get exactly the slice they need.
297
168
 
298
169
  <details>
299
- <summary>More Claude Code examples</summary>
300
-
301
- **Read-only monitoring agent:**
302
-
303
- ```bash
304
- claude mcp add browser-monitor -- \
305
- npx mcp-filter \
306
- --include "browser_navigate" \
307
- --include "browser_snapshot" \
308
- --include "browser_console_messages" \
309
- --include "browser_network_requests" \
310
- --include "browser_take_screenshot" \
311
- -- npx @playwright/mcp@latest
312
- ```
313
-
314
- **Testing agent (no destructive actions):**
315
-
316
- ```bash
317
- claude mcp add browser-test -- \
318
- npx mcp-filter \
319
- --exclude "browser_close" \
320
- --exclude "browser_tabs" \
321
- --exclude "browser_evaluate" \
322
- --include "browser_*" \
323
- -- npx @playwright/mcp@latest
324
- ```
170
+ <summary>PR review agent — whitelist (79 → ~10 tools)</summary>
325
171
 
326
- **Managing servers:**
327
-
328
- ```bash
329
- claude mcp list # List all servers
330
- claude mcp get playwright-safe # Show server details
331
- claude mcp remove playwright-safe # Remove a server
332
- ```
333
-
334
- </details>
335
-
336
- ### Cursor IDE
337
-
338
- Add to `.cursor/mcp.json` or `~/.cursor/mcp.json`:
172
+ A code review agent only needs PRs, issues, file contents, and search. Everything else — gists, stars, notifications, security advisories — is noise.
339
173
 
340
174
  ```json
341
175
  {
342
176
  "mcpServers": {
343
- "playwright-safe": {
177
+ "github-pr-review": {
344
178
  "command": "npx",
345
179
  "args": [
346
180
  "mcp-filter",
347
- "--exclude", "browser_close",
348
- "--exclude", "browser_evaluate",
349
- "--include", "browser_*",
181
+ "--include", "pull_request_*",
182
+ "--include", "issue_*",
183
+ "--include", "get_file_contents",
184
+ "--include", "list_commits",
185
+ "--include", "search_code",
350
186
  "--",
351
- "npx", "@playwright/mcp@latest"
352
- ]
187
+ "github-mcp-server", "stdio"
188
+ ],
189
+ "env": {
190
+ "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-token>"
191
+ }
353
192
  }
354
193
  }
355
194
  }
356
195
  ```
357
196
 
197
+ When GitHub adds new tools tomorrow, they won't leak through — only the patterns above are visible to the agent.
198
+
199
+ </details>
200
+
358
201
  <details>
359
- <summary>More Cursor examples</summary>
202
+ <summary>Read-only agent — exclude mutations</summary>
360
203
 
361
- **Whitelist mode:**
204
+ An analytics agent that collects data for reports shouldn't be able to change anything. Exclude all write operations:
362
205
 
363
206
  ```json
364
207
  {
365
208
  "mcpServers": {
366
- "playwright-readonly": {
209
+ "github-readonly": {
367
210
  "command": "npx",
368
211
  "args": [
369
212
  "mcp-filter",
370
- "--include", "browser_navigate",
371
- "--include", "browser_screenshot",
372
- "--include", "browser_snapshot",
213
+ "--exclude", "create_*",
214
+ "--exclude", "update_*",
215
+ "--exclude", "delete_*",
216
+ "--exclude", "push_*",
217
+ "--exclude", "merge_*",
218
+ "--exclude", "fork_*",
219
+ "--exclude", "*_write",
373
220
  "--",
374
- "npx", "@playwright/mcp@latest"
375
- ]
221
+ "github-mcp-server", "stdio"
222
+ ],
223
+ "env": {
224
+ "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-token>"
225
+ }
376
226
  }
377
227
  }
378
228
  }
379
229
  ```
380
230
 
381
- **Remote HTTP server (Stripe block refunds):**
231
+ The agent can read anything but can't modify anything.
232
+
233
+ </details>
234
+
235
+ <details>
236
+ <summary>PR tools without merge — rsync-style exceptions</summary>
237
+
238
+ Allow all PR tools except the ability to merge. First match wins:
382
239
 
383
240
  ```json
384
241
  {
385
242
  "mcpServers": {
386
- "stripe-safe": {
243
+ "github-pr-safe": {
387
244
  "command": "npx",
388
245
  "args": [
389
246
  "mcp-filter",
390
- "--exclude", "create_refund",
391
- "--exclude", "delete_*",
392
- "--upstream-url", "https://mcp.stripe.com"
393
- ]
247
+ "--exclude", "merge_pull_request",
248
+ "--include", "pull_request_*",
249
+ "--include", "list_pull_requests",
250
+ "--include", "search_pull_requests",
251
+ "--",
252
+ "github-mcp-server", "stdio"
253
+ ],
254
+ "env": {
255
+ "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-token>"
256
+ }
394
257
  }
395
258
  }
396
259
  }
397
260
  ```
398
261
 
399
- </details>
262
+ `merge_pull_request` hits the `--exclude` first and gets blocked. The remaining PR tools match `--include` and pass through.
400
263
 
401
- ### Any MCP Client
264
+ </details>
402
265
 
403
- mcp-filter works with any MCP client that supports stdio servers. The upstream server can be local (stdio) or remote (HTTP/SSE):
266
+ ## Options
404
267
 
405
- ```json
406
- {
407
- "command": "npx",
408
- "args": ["mcp-filter", "--exclude", "pattern", "--", "npx", "your-mcp-server"]
409
- }
410
- ```
268
+ | Option | Description |
269
+ |--------|-------------|
270
+ | `--exclude <pattern>` | Exclude items matching glob pattern (repeatable) |
271
+ | `--include <pattern>` | Include only items matching glob pattern (repeatable) |
272
+ | `--upstream-url <url>` | Connect to remote HTTP/SSE server (mutually exclusive with `--`) |
273
+ | `--transport <type>` | Transport type: `stdio`, `http`, `sse` (auto-detected) |
274
+ | `--authorization <value>` | Set Authorization header (e.g. `"Bearer token"`, HTTP/SSE only) |
275
+ | `--header <header>` | HTTP header as `"Key: Value"` (repeatable, HTTP/SSE only) |
276
+ | `--` | Separates mcp-filter options from upstream command (stdio only) |
411
277
 
412
- ## Common Mistakes
278
+ Transport is auto-detected: `--upstream-url` selects HTTP, `-- <command>` selects stdio.
413
279
 
414
- ### JSON args must be separate strings
280
+ <details>
281
+ <summary>Common mistakes</summary>
415
282
 
416
- In JSON configs (Claude Desktop, Cursor, VS Code), each argument must be its own array element. The shell splits arguments for you — JSON doesn't.
283
+ **JSON args must be separate strings.** In JSON configs, each argument must be its own array element:
417
284
 
418
- **WRONG:**
419
- ```json
285
+ ```jsonc
286
+ // WRONG
420
287
  "args": ["mcp-filter", "--include browser_*", "--", "npx", "server"]
421
- ```
422
288
 
423
- **CORRECT:**
424
- ```json
289
+ // CORRECT
425
290
  "args": ["mcp-filter", "--include", "browser_*", "--", "npx", "server"]
426
291
  ```
427
292
 
428
293
  mcp-filter detects this mistake and shows a corrective error message.
429
294
 
430
- ### Pattern order matters
431
-
432
- Put `--exclude` patterns **before** `--include` to create exceptions. First match wins.
433
-
434
- ```bash
435
- # CORRECT: exclude first, then include the rest
436
- --exclude "browser_close" --include "browser_*"
437
- # Result: browser_close blocked, other browser_* allowed
295
+ **Pattern order matters.** Put `--exclude` before `--include` to create exceptions. First match wins:
438
296
 
439
- # WRONG order: include matches first, exclude never fires
440
- --include "browser_*" --exclude "browser_close"
441
- # Result: ALL browser_* allowed including browser_close
297
+ ```
298
+ --exclude "browser_close" --include "browser_*" (browser_close blocked)
299
+ --include "browser_*" --exclude "browser_close" (browser_close allowed!)
442
300
  ```
443
301
 
444
- ### Two `--` separators in Claude Code
445
-
446
- When using `claude mcp add`, the first `--` separates Claude's options from the mcp-filter command. The second `--` separates mcp-filter's options from the upstream server command:
302
+ **Two `--` in Claude Code.** First `--` separates Claude's options. Second `--` separates mcp-filter's options from the upstream command:
447
303
 
448
304
  ```bash
449
305
  claude mcp add my-server -- npx mcp-filter --exclude "dangerous_*" -- npx upstream-server
@@ -451,32 +307,21 @@ claude mcp add my-server -- npx mcp-filter --exclude "dangerous_*" -- npx upstre
451
307
  # Claude's -- mcp-filter's --
452
308
  ```
453
309
 
454
- ## Programmatic API
455
-
456
- mcp-filter exports its core modules for use in custom tooling:
457
-
458
- ```typescript
459
- import { FilterEngine } from 'mcp-filter/filter';
460
- import { ProxyServer } from 'mcp-filter/proxy';
461
- import { createTransport } from 'mcp-filter/transport';
462
- import type { FilterConfig, TransportConfig } from 'mcp-filter/types';
463
- ```
464
-
465
- ## Testing
466
-
467
- 187+ tests across 15 test suites covering unit tests, integration tests with real MCP servers, and full spec compliance validation.
310
+ </details>
468
311
 
469
- ```bash
470
- pnpm test # Run all tests
471
- pnpm test:coverage # With coverage report
472
- pnpm test tests/unit/ # Unit tests only (fast)
473
- ```
312
+ <details>
313
+ <summary>Transports</summary>
474
314
 
475
- Tests run on **Node 20, 22, and 24** via GitHub Actions CI.
315
+ | Transport | Flag | Use Case | Status |
316
+ |-----------|------|----------|--------|
317
+ | **Stdio** | `-- <command>` | Local servers spawned as subprocesses | Stable |
318
+ | **HTTP** | `--upstream-url <url>` | Remote servers via Streamable HTTP | Stable |
319
+ | **SSE** | `--transport sse --upstream-url <url>` | Legacy remote servers via Server-Sent Events | Deprecated |
476
320
 
477
- See [TESTING.md](TESTING.md) for the full testing guide.
321
+ </details>
478
322
 
479
- ## Development
323
+ <details>
324
+ <summary>Development</summary>
480
325
 
481
326
  ```bash
482
327
  git clone https://github.com/baranovxyz/mcp-filter.git
@@ -486,13 +331,17 @@ pnpm run build
486
331
  pnpm test
487
332
  ```
488
333
 
489
- See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.
334
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines and [TESTING.md](TESTING.md) for the testing guide.
335
+
336
+ </details>
490
337
 
491
338
  ## Links
492
339
 
493
340
  - [npm package](https://www.npmjs.com/package/mcp-filter)
494
341
  - [GitHub repository](https://github.com/baranovxyz/mcp-filter)
495
342
  - [Changelog](CHANGELOG.md)
343
+ - [Spec conformance](docs/spec-conformance.md)
344
+ - [Architecture decisions](docs/architecture-decisions.md)
496
345
  - [MCP specification](https://modelcontextprotocol.io)
497
346
 
498
347
  ## License
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAGb,MAAM,YAAY,CAAC;AAwCpB,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAoKtD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAGb,MAAM,YAAY,CAAC;AAwCpB,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA6KtD"}
package/dist/cli.js CHANGED
@@ -98,6 +98,14 @@ export function parseArgs(args) {
98
98
  headers[key] = value;
99
99
  continue;
100
100
  }
101
+ if (arg === "--authorization") {
102
+ const value = args[++i];
103
+ if (!value) {
104
+ throw new Error("--authorization requires a value (e.g. 'Bearer token')");
105
+ }
106
+ headers["Authorization"] = value;
107
+ continue;
108
+ }
101
109
  if (arg === "--help" || arg === "-h") {
102
110
  throw new Error("help");
103
111
  }
@@ -150,7 +158,7 @@ export function parseArgs(args) {
150
158
  throw new Error(`--transport ${explicitTransport} requires --upstream-url. Use --transport stdio or omit --transport for command-based servers.`);
151
159
  }
152
160
  if (Object.keys(headers).length > 0) {
153
- throw new Error("--header can only be used with --upstream-url");
161
+ throw new Error("--header/--authorization can only be used with --upstream-url");
154
162
  }
155
163
  transportConfig = {
156
164
  type: "stdio",
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,SAAS,YAAY,CAAC,IAAc;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,yEAAyE;QACzE,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,OAAO;gBAChC,8DAA8D;gBAC9D,UAAU;gBACV,eAAe,GAAG,aAAa;gBAC/B,YAAY;gBACZ,eAAe,IAAI,OAAO,OAAO,aAAa;gBAC9C,kDAAkD,CACrD,CAAC;QACJ,CAAC;QAED,+FAA+F;QAC/F,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,OAAO;gBAChC,qFAAqF;gBACrF,UAAU;gBACV,eAAe,GAAG,aAAa;gBAC/B,YAAY;gBACZ,mDAAmD;gBACnD,qCAAqC,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,0DAA0D;IAC1D,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,WAA+B,CAAC;IACpC,IAAI,iBAA4C,CAAC;IACjD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,iBAAiB,EAAE,CAAC;YACtB,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,iBAAiB,GAAG,IAAI,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,WAAW,GAAG,GAAG,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACzE,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,oCAAoC,CACzE,CAAC;YACJ,CAAC;YACD,iBAAiB,GAAG,SAAS,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,iCAAiC,CAClE,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,gDAAgD;IAChD,IAAI,WAAW,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,eAAgC,CAAC;IAErC,IAAI,WAAW,EAAE,CAAC;QAChB,oCAAoC;QACpC,IAAI,aAA6B,CAAC;QAElC,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;YACJ,CAAC;YACD,aAAa,GAAG,iBAAiB,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,aAAa,GAAG,MAAM,CAAC;QACzB,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,eAAe,GAAG;gBAChB,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;aAC/D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,eAAe,GAAG;gBAChB,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;aAC/D,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,kCAAkC;QAClC,IAAI,iBAAiB,IAAI,iBAAiB,KAAK,OAAO,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,eAAe,iBAAiB,gGAAgG,CACjI,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,eAAe,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,OAAO,CAAC,GAA6B;SAC3C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,6CAA6C;YAC3C,+CAA+C;YAC/C,kCAAkC,CACrC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ;QACR,eAAe;KAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19,6 +19,7 @@ function printUsage() {
19
19
  console.error(" --upstream-url <url> Connect to HTTP/SSE server (mutually exclusive with --)");
20
20
  console.error(" --transport <type> Transport type: stdio, http, sse (auto-detected if omitted)");
21
21
  console.error(" --header <header> Add HTTP header (format: 'Key: Value', HTTP/SSE only)");
22
+ console.error(" --authorization <value> Set Authorization header (e.g. 'Bearer token', HTTP/SSE only)");
22
23
  console.error(" --help Show this help message");
23
24
  console.error(" --version Show version number");
24
25
  console.error("");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,SAAS,UAAU;IACjB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,CACX,2EAA2E,CAC5E,CAAC;IACF,OAAO,CAAC,KAAK,CACX,0EAA0E,CAC3E,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,CACX,mFAAmF,CACpF,CAAC;IACF,OAAO,CAAC,KAAK,CACX,uFAAuF,CACxF,CAAC;IACF,OAAO,CAAC,KAAK,CACX,iFAAiF,CAClF,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,CACX,0DAA0D,CAC3D,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CACX,uEAAuE,CACxE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,6CAA6C;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;IAC7E,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAC/E,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAErE,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IAEzD,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE3C,sBAAsB;IACtB,MAAM,KAAK,GAAG,IAAI,WAAW,CAC3B;QACE,IAAI,EAAE,YAAY;QAClB,OAAO;KACR,EACD,MAAM,CACP,CAAC;IAEF,oEAAoE;IACpE,wEAAwE;IACxE,MAAM,eAAe,GAAG,qBAAqB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAEtE,qEAAqE;IACrE,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,cAAc;YAAE,OAAO;QAC3B,cAAc,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,MAAM,CAAC;IACrC,IAAI,mBAAkD,CAAC;IACvD,MAAM,OAAO,CAAC,IAAI,CAAC;QACjB,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC;QACxC,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/B,mBAAmB,GAAG,UAAU,CAC9B,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,EAClE,qBAAqB,CACtB,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC;IACH,YAAY,CAAC,mBAAoB,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAE/C,0EAA0E;IAC1E,MAAM,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACnD,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAEzC,0DAA0D;IAC1D,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;QACpC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC;IACF,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;QAC/B,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-filter",
3
- "version": "1.0.2",
3
+ "version": "1.1.1",
4
4
  "description": "MCP server proxy to filter tools, resources, and prompts from upstream MCP servers",
5
5
  "type": "module",
6
6
  "bin": {