steipete/conduit-mcp
If you are the rightful owner of conduit-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Conduit-MCP is a Model Context Protocol server designed for efficient file operations, web content processing, and data management.
conduit-mcp ๐ฑ

The purr-fect MCP server for feline-fast file operations, web prowling, and data hunting! ๐พ
A sleek Model Context Protocol server that helps your AI assistant navigate the digital jungle with cat-like agility.
๐ Version 1.0.0 Released!
We're excited to announce the first stable release of conduit-mcp! This production-ready MCP server brings powerful file system operations, web content processing, and advanced search capabilities to your AI assistant.
๐ What Makes This Cat Special?
conduit-mcp is like having a highly trained data-hunting cat that can:
- ๐ Patrol your file system (within allowed territories, of course!)
- ๐ Hunt across the web for tasty content morsels
- ๐ Clean up messy HTML into pristine Markdown
- ๐ผ๏ธ Compress images without losing their shine
- ๐ Organize files with military precision
- ๐ Track down specific files using advanced search techniques
- ๐ฆ Pack and unpack archives like a pro moving service
- โก Process operations in batches for maximum efficiency
Unlike those lazy house cats, this server works 24/7 and never knocks things off your desk! ๐ธ
๐ฏ Quick Start (Get Your Cat Running!)
Method 1: The Easy Way (Recommended)
Just tell your MCP client about your new digital pet:
{
"mcpServers": {
"conduit": {
"command": "npx",
"args": ["-y", "@steipete/conduit-mcp@beta"],
"env": {
"CONDUIT_ALLOWED_PATHS": "~/Documents:~/Projects:/tmp",
"LOG_LEVEL": "INFO"
}
}
}
}
Method 2: The Developer Way (For Cat Breeders)
git clone <repository_url>
cd conduit-mcp
npm install
# Configure your MCP client to use ./start.sh
๐ Setting Up Your Cat's Territory
Your digital cat needs to know where it's allowed to roam! Configure the CONDUIT_ALLOWED_PATHS environment variable:
# Let your cat explore Documents and Projects
CONDUIT_ALLOWED_PATHS="~/Documents:~/Projects"
# Default playground (if you don't specify)
# Your cat defaults to: "~:/tmp"
# (Don't worry, it'll meow about this the first time!)
๐จ Security Notice: Your cat is well-trained and won't venture outside its allowed territories. It also follows all symlinks to ensure no sneaky escapes!
๐พ What Your Cat Can Do
๐ The read Tool - Master Detective Cat
Your cat can investigate files and URLs with three different specialties:
Content Reading (operation: "content")
Read and process content from files or URLs in various formats.
{
"tool": "read",
"operation": "content",
"sources": ["~/Documents/important.txt", "https://example.com/article"],
"format": "text"
}
Format Options:
"text"- Read as plain text (default for text files)"base64"- Binary-safe encoding (default for images/binaries)"markdown"- Web pages get the full spa treatment! ๐งโโ๏ธ"checksum"- Generate cryptographic fingerprints
Parameters:
sources:string[](Required) - Array of file paths or URLsformat?:string(Optional) - Output formatchecksum_algorithm?:string(Optional) -"md5" | "sha1" | "sha256" | "sha512"offset?:integer(Optional) - Byte offset to start reading fromlength?:integer(Optional) - Number of bytes to read
Special Powers:
- ๐ Web Page Cleaning: Turns messy HTML into beautiful Markdown using Mozilla Readability
- ๐ผ๏ธ Smart Image Compression: Automatically compresses large images with Sharp
- ๐ Partial Reading: Read specific byte ranges with
offsetandlength - ๐ Checksum Calculation: SHA256, MD5, SHA1, or SHA512
Metadata Inspection (operation: "metadata")
Get detailed information about files or URLs without reading their content.
{
"tool": "read",
"operation": "metadata",
"sources": ["~/Documents/mystery_file.pdf"]
}
Returns: File size, MIME type, timestamps, permissions, HTTP headers (for URLs), and more!
File Comparison (operation: "diff")
Compare two files and see exactly what changed.
{
"tool": "read",
"operation": "diff",
"sources": ["~/file1.txt", "~/file2.txt"],
"diff_format": "unified"
}
Parameters:
sources:string[2](Required) - Exactly two file pathsdiff_format?:string(Optional) - Currently supports"unified"
โ๏ธ The write Tool - Master Builder Cat
Your cat can modify the file system with surgical precision through various operations:
File Operations (operation: "put")
Write content to files with different encoding and write modes.
{
"tool": "write",
"operation": "put",
"entries": [
{
"path": "~/Documents/new_file.txt",
"content": "Hello from your digital cat! ๐ฑ",
"write_mode": "overwrite",
"input_encoding": "text"
}
]
}
Parameters for put:
path:string(Required) - Target file pathcontent:string(Required) - Content to writeinput_encoding?:"text" | "base64"(Optional, default:"text")write_mode?:"overwrite" | "append" | "error_if_exists"(Optional, default:"overwrite")
Directory Operations (operation: "mkdir")
Create directories with optional recursive creation.
{
"tool": "write",
"operation": "mkdir",
"entries": [
{
"path": "~/Documents/new_folder/subfolder",
"recursive": true
}
]
}
File Management (operation: "copy" | "move" | "delete")
Copy, move, or delete files and directories.
{
"tool": "write",
"operation": "copy",
"entries": [
{
"source_path": "~/file.txt",
"destination_path": "~/backup/"
}
]
}
Available Operations:
"put"- Write files (text or base64)"mkdir"- Create directories (withrecursiveoption)"copy"- Duplicate files/folders"move"- Relocate and rename"delete"- Remove files/folders (withrecursivefor directories)"touch"- Update timestamps or create empty files
Archive Operations
Create and extract archives in multiple formats.
Create Archive (operation: "archive"):
{
"tool": "write",
"operation": "archive",
"source_paths": ["~/Documents/folder1", "~/Documents/file1.txt"],
"archive_path": "~/backup.zip",
"format": "zip",
"recursive_source_listing": true
}
Extract Archive (operation: "unarchive"):
{
"tool": "write",
"operation": "unarchive",
"archive_path": "~/backup.zip",
"destination_path": "~/restored/",
"format": "zip"
}
Archive Formats: ZIP, TAR.GZ, TGZ - your cat handles them all!
๐ The list Tool - Inventory Cat
Directory Listing (operation: "entries")
Explore directory structures with recursive capabilities.
{
"tool": "list",
"operation": "entries",
"path": "~/Documents",
"recursive_depth": 2,
"calculate_recursive_size": true
}
Parameters:
path:string(Required) - Directory to listrecursive_depth?:integer(Optional, default:0) - How deep to recursecalculate_recursive_size?:boolean(Optional, default:false) - Calculate total size of directories
Special Features:
- ๐ณ Recursive Exploration: Dive deep into folder structures
- ๐ Size Calculation: Get total size of directories and their contents
- ๐ Symlink Detection: Identifies and follows symbolic links
- โฑ๏ธ Smart Timeouts: Won't get stuck calculating huge directories
System Information (operation: "system_info")
Get information about the server and file system.
{
"tool": "list",
"operation": "system_info",
"info_type": "server_capabilities"
}
Info Types:
"server_capabilities"- Server version, configuration, supported features"filesystem_stats"- File system statistics for a given path
๐ The find Tool - Master Detective Cat
Your cat can hunt down files and directories using sophisticated search criteria. All search parameters are specified directly for simplicity and Claude-friendliness.
{
"tool": "find",
"operation": "search",
"path": "~/Documents",
"recursive": true,
"name_pattern": "*.{pdf,doc,docx}",
"size_min": 1048576,
"entry_type": "file"
}
Parameters:
operation:string(Required) - Must be"search"path:string(Required) - Starting directoryrecursive?:boolean(Optional, default:true) - Search subdirectoriesname_pattern?:string(Optional) - Glob pattern for file/directory namescase_sensitive?:boolean(Optional, default:false) - Case sensitivity for name matchingcontent_pattern?:string(Optional) - Text or regex pattern to search in file contentscontent_is_regex?:boolean(Optional, default:false) - Treat content_pattern as regexcontent_case_sensitive?:boolean(Optional, default:false) - Case sensitivity for content searchfile_extensions?:string[](Optional) - Limit content search to specific file typessize_min?:integer(Optional) - Minimum file size in bytessize_max?:integer(Optional) - Maximum file size in bytesmodified_after?:string(Optional) - ISO 8601 datetime stringmodified_before?:string(Optional) - ISO 8601 datetime stringcreated_after?:string(Optional) - ISO 8601 datetime stringcreated_before?:string(Optional) - ISO 8601 datetime stringentry_type?:"file" | "directory" | "any"(Optional) - Filter by entry typemime_type?:string(Optional) - Filter by MIME typemax_results?:integer(Optional) - Limit number of results
Example Searches
Find large PDF files:
{
"tool": "find",
"operation": "search",
"path": "~/Documents",
"name_pattern": "*.pdf",
"size_min": 1048576
}
Search for TODO comments in code:
{
"tool": "find",
"operation": "search",
"path": "~/Projects",
"content_pattern": "TODO|FIXME",
"content_is_regex": true,
"content_case_sensitive": false,
"file_extensions": [".js", ".ts", ".py"]
}
Find recently modified files:
{
"tool": "find",
"operation": "search",
"path": "~/Documents",
"modified_after": "2023-01-01T00:00:00Z",
"entry_type": "file"
}
Search Superpowers:
- ๐ฏ Multi-criteria AND logic: All specified criteria must match
- ๐ค Glob patterns:
*.txt,image[0-9]?.png,**/logs/*.log - ๐ Content search: Text or regex patterns in file contents
- ๐ Date filtering: Find files by creation/modification dates
- ๐ Size filtering: Find large files, empty files, etc.
- ๐ญ MIME type filtering: Search by file type
๐งช The test Tool - Quality Assurance Cat
A debugging tool for testing the MCP server functionality.
{
"tool": "test",
"operation": "echo",
"params_to_echo": { "message": "Hello, world!" }
}
Operations:
"echo"- Echo back provided parameters for testing"generate_error"- Generate specific error codes for testing error handling
๐๏ธ Configuring Your Cat
Your digital cat responds to these environment variables:
Core Settings
# Territory boundaries (IMPORTANT!)
CONDUIT_ALLOWED_PATHS="~/Documents:~/Projects:/tmp"
# Logging (where your cat writes its diary)
LOG_LEVEL="INFO" # TRACE, DEBUG, INFO, WARN, ERROR, FATAL
CONDUIT_LOG_FILE_PATH="/tmp/conduit-mcp.log" # or "NONE" to disable
Performance Tuning
# Resource limits (keep your cat well-behaved)
CONDUIT_MAX_PAYLOAD_SIZE_BYTES="10485760" # 10MB max incoming requests
CONDUIT_MAX_FILE_READ_BYTES="52428800" # 50MB max file reads
CONDUIT_MAX_FILE_READ_BYTES_FIND="524288" # 512KB max for find content search
CONDUIT_MAX_URL_DOWNLOAD_SIZE_BYTES="20971520" # 20MB max downloads
CONDUIT_HTTP_TIMEOUT_MS="30000" # 30 second timeouts
# Image compression (make photos diet-friendly)
CONDUIT_IMAGE_COMPRESSION_THRESHOLD_BYTES="1048576" # 1MB threshold
CONDUIT_IMAGE_COMPRESSION_QUALITY="75" # Quality 1-100
Advanced Settings
# Search and recursion limits
CONDUIT_MAX_RECURSIVE_DEPTH="10" # How deep to explore
CONDUIT_RECURSIVE_SIZE_TIMEOUT_MS="60000" # 60 second timeout
# Default checksum algorithm
CONDUIT_DEFAULT_CHECKSUM_ALGORITHM="sha256" # md5, sha1, sha256, sha512
๐ Special Features That Make This Cat Purr
๐ Web Content Cleaning
When you ask for Markdown from a URL, your cat:
- Fetches the raw HTML
- Uses Mozilla Readability to extract main content
- Converts to clean Markdown with Turndown
- Serves you a beautifully formatted result!
For non-HTML content, it gracefully falls back to raw text with helpful notes.
๐ผ๏ธ Intelligent Image Compression
Large images automatically get compressed using Sharp:
- JPEG/WebP: Quality-based compression
- PNG: Lossless optimization
- Preserves original size information
- Graceful fallback if compression fails
๐ Security Features
Your cat is security-conscious:
- Path validation: Never ventures outside allowed territories
- Symlink resolution: Follows links but validates final destinations
- Resource limits: Won't eat all your memory or bandwidth
- Input sanitization: Properly validates all parameters
๐ Batch Operations
Efficiency expert! Process multiple files in a single request:
{
"tool": "write",
"operation": "copy",
"entries": [
{ "source_path": "~/file1.txt", "destination_path": "~/backup/" },
{ "source_path": "~/file2.txt", "destination_path": "~/backup/" },
{ "source_path": "~/folder1", "destination_path": "~/backup/" }
]
}
๐ First-Time Setup Notice
When using default paths (~:/tmp), your cat will politely inform you on the first successful operation with details about the configuration. It's like a friendly meow saying "Hi! Here's where I'm allowed to play!"
๐จ Error Handling
Your cat is well-mannered and provides detailed error information:
{
"status": "error",
"error_code": "ERR_FS_ACCESS_DENIED",
"error_message": "Cannot access path outside allowed directories: /forbidden/path"
}
Common Error Categories:
ERR_FS_*- File system issuesERR_HTTP_*- Web request problemsERR_INVALID_PARAMETER- Bad input dataERR_RESOURCE_LIMIT_EXCEEDED- Size/timeout limits hitERR_ARCHIVE_*- Archive operation failuresERR_MARKDOWN_*- Web content processing issues
๐ ๏ธ Development & Testing
Running Tests
npm test # Run all tests
npm run test:coverage # With coverage report
npm run test:unit # Unit tests only
npm run test:e2e # End-to-end tests
Building
npm run build # Compile TypeScript
npm run dev # Development mode with auto-reload
npm run lint # Check code style
npm run format # Auto-format code
๐ค Contributing
We love contributions! Please:
- ๐ด Fork the repository
- ๐ฟ Create a feature branch (
git checkout -b feature/amazing-cat-feature) - ๐พ Make your changes (follow the existing code style)
- โ Add tests for new functionality
- ๐ Update documentation if needed
- ๐ Submit a pull request
Commit Convention
We use conventional commits:
feat: add new search criteria type
fix: resolve symlink resolution bug
docs: update README with new examples
test: add integration tests for archive operations
๐ License
This project is licensed under the MIT License - see the file for details.
๐ฑ Fun Facts About Your Digital Cat
- Version: 1.0.0 - Production ready!
- Line Count: ~17,200 lines of carefully crafted TypeScript
- Dependencies: Only the finest NPM packages (axios, sharp, jsdom, etc.)
- Test Coverage: >90% (this cat is thoroughly tested!)
- Protocols: 100% MCP compliant
- Character Encoding: UTF-8 all the way
- Timestamp Format: ISO 8601 UTC (because cats are international)
- Node.js: Requires >=18.0.0
๐ฏ Use Cases
Perfect for AI assistants that need to:
- ๐ Analyze local codebases and documentation
- ๐ Research web content and convert to readable formats
- ๐ Manage file organization and backups
- ๐ Search across mixed content types
- ๐ธ Process and optimize images
- ๐ฆ Handle archive operations
- ๐ Generate reports from filesystem data
๐ Support & Community
- ๐ Documentation: You're reading it! (Plus the technical spec in
/docs/spec.md) - ๐ Issues: GitHub Issues for bugs and feature requests
- ๐ฌ Discussions: GitHub Discussions for questions and ideas
- ๐ง Contact: Open source project - community driven!
Happy hunting! ๐พ
Your digital cat is ready to pounce on any data challenge you throw at it!