Releases: respawn-llc/tool-filter-mcp
Release list
v0.4.3
v0.4.2 - NODE_ENV Fix & Dependency Updates
Bug Fixes
- Fixed NODE_ENV=test preventing MCP server startup (#16, #17)
- Restructured codebase to separate CLI entry point from library modules
- Removed NODE_ENV check that caused failures when users spawned Claude programmatically with NODE_ENV=test
- Tests no longer import from index.ts
Improvements
- Updated dependencies to fix security vulnerabilities
- Fixed moderate severity vulnerability in vite (7.1.0 → 7.1.11)
- Updated all dependencies to latest compatible versions
Changes
- Refactored code into separate modules:
src/cli-args.ts- CLI argument parsingsrc/client.ts- Upstream client creationsrc/config.ts- Proxy configurationsrc/utils/env-parser.ts- Environment variable parsingsrc/utils/tool-list-formatter.ts- Tool list formatting
- Enhanced CI workflow with final status check job
- Added
.mcpregistry_*to.gitignore
Full Changelog: v0.4.1...v0.4.2
v0.4.0
Features
-
stdio transport support - Connect to MCP servers via stdio, not just HTTP (#12)
- Use
--upstream-stdio -- <command> [args...]to connect to stdio-based MCP servers - Support for environment variables via
--env KEY=value - Example:
tool-filter-mcp --upstream-stdio -- npx @modelcontextprotocol/server-memory
- Use
-
Tool listing - List available tools with
--list-toolsflag (#11)- Multiple output formats:
--format table|json|compact - View upstream tools before filtering
- Verify filters are working as expected
- Multiple output formats:
-
LICENSE.txt - Added MIT license file
Fixes
- Fix leaking upstream subprocess
- Fix CLI arg validation error
- Remove unused imports in tests
- Fix table format to truncate long descriptions
Contributors
v0.3.1
Fixes
- Fixed proxy not starting when run via npx
- Server now reports correct version from package.json
Full Changelog: v0.3.0...v0.3.1
v0.3.0 - Streamable HTTP Transport
Features
Streamable HTTP Transport with SSE Fallback
- Automatic transport fallback between Streamable HTTP (modern) and SSE (legacy)
- Smart URL-based transport selection (
/mcp→ Streamable HTTP,/sse→ SSE) - Enhanced 405 error handling with Allow header capture and upstream method probing
- Proper session termination on disconnect
Testing & Quality
- Comprehensive unit tests for transport selection and 405 handling
- Integration tests for end-to-end transport verification
- Added
@types/expressfor test dependencies
Internal Improvements
- Exported
createUpstreamClientfor better testability - Updated client version to match package version
- Better resource management and cleanup
Full Changelog: v0.2.0...v0.3.0
v0.2.0 - HTTP Header Pass-Through
🚀 Features
HTTP Header Pass-Through for Authentication
Add custom HTTP headers to upstream MCP server requests for authentication and authorization.
Key Features:
- 🔐 Pass authentication headers to upstream servers
- 🔁 Repeatable
--headerargument for multiple headers - 🌍 Environment variable expansion (
$VARand${VAR}syntax) - ✅ Full validation (format, character set, duplicate detection)
- 🎯 Headers sent to both SSE and message endpoints
Usage:
# Basic authentication
npx @respawn-app/tool-filter-mcp \
--upstream http://localhost:3000/sse \
--header "Authorization: Bearer your-token"
# Multiple headers with env vars
npx @respawn-app/tool-filter-mcp \
--upstream http://localhost:3000/sse \
--header "Authorization: Bearer $API_TOKEN" \
--header "X-API-Key: $API_KEY"In Claude Code .mcp.json:
{
"mcpServers": {
"filtered-server": {
"command": "npx",
"args": [
"@respawn-app/tool-filter-mcp",
"--upstream", "http://localhost:3000/sse",
"--header", "Authorization: Bearer ${API_TOKEN}"
],
"type": "stdio"
}
}
}📦 Installation
npm install -g @respawn-app/tool-filter-mcp
# or
npx @respawn-app/tool-filter-mcpFull Changelog: v0.1.0...v0.2.0
v0.1.0: Initial Release
🎉 Initial Release
MCP proxy server that filters tools from upstream MCP servers via regex-based deny list.
Why use this?
For effective context engineering, we want to minimize useless tokens. Most major agents (e.g. Claude Code) do NOT remove tool descriptions from the context. Even though the tool is completely denied and unused, the model will still get its entire description and still try to call the tool. For big MCPs (github, supabase, jetbrains IDE, atlassian), this leads to context pollution by 40-60k of useless tokens.
This MCP completely solves the issue without introducing any overhead.
Features
- Tool Filtering: Block specific tools using regex patterns
- Zero Latency: Cached tool list, minimal overhead
- Fail-Fast: Immediate error on connection issues or invalid patterns
- Transparent Proxying: Forwards allowed tool calls to upstream without modification
Installation
```bash
npx @respawn-app/tool-filter-mcp --upstream --deny
```
What's Included
- ✅ Full MCP SDK integration (@modelcontextprotocol/sdk)
- ✅ Upstream SSE connection with configurable timeouts
- ✅ Comprehensive test suite (105 tests)
- ✅ CLI interface with tool filtering
- ✅ GitHub Actions CI for Node 20 and 24
- ✅ ReDoS protection with safe-regex2
Full Changelog: https://github.com/respawn-app/tool-filter-mcp/commits/v0.1.0