Skip to main content
Glama
okets
by okets
README.md
# folder-mcp (Under Development, will be released soon enough)

**Model Context Protocol Server for Folder Operations**

A Model Context Protocol (MCP) server that provides tools for reading and analyzing folder structures, enabling LLMs to interact with local file systems safely and efficiently.

## Overview
folder-mcp was created for a simple but powerful purpose: take your local folder and make it accessible to Large Language Models (LLMs) running anywhere.
You don't need to upload your files to the cloud or use a third-party service.

it creates RAG (Retrieval-Augmented Generation) capabilities for your local files, allowing LLMs to read, search, and analyze documents in a secure and structured way.
This server implements the Model Context Protocol (MCP) standard, allowing LLMs to interact with local file systems through a set of defined tools.
This project is designed to work with MCP clients like Claude Desktop, Cursor, VsCode and others, providing a secure and efficient way to access and manipulate files within specified folders.

## Features

āœ… **Secure File Access**
- Read files from specified folders with path validation
- Security checks to prevent directory traversal attacks
- Support for various file types and encodings

āœ… **File System Operations**
- List all files in a folder recursively
- Search files by name patterns (glob support)
- Get folder information and metadata
- Exclude common directories like node_modules and .git

āœ… **MCP Integration**
- Standard Model Context Protocol server implementation
- Works with Claude Desktop and other MCP clients
- Stdio transport for seamless integration
- Structured tool definitions with JSON schemas

āœ… **Developer Friendly**
- TypeScript implementation with full type safety
- Clear error handling and informative responses
- Simple CLI interface for testing and development

## Installation

```bash
git clone https://github.com/okets/folder-mcp.git
cd folder-mcp
npm install
npm run build
```

## Configuration

folder-mcp uses a centralized configuration system stored in `config.yaml` at the project root. This YAML file contains settings for embeddings, caching, processing, API, logging, and development configurations.

### Embedding Models

The system supports multiple embedding models with GPU acceleration via Ollama:

| Model | Dimensions | Description |
|-------|------------|-------------|
| `nomic-v1.5` | 768 | High-quality general-purpose (default) |
| `mxbai-large` | 1024 | Large model with excellent performance |
| `all-minilm` | 384 | Lightweight and fast |
| `bge-small` | 384 | BAAI general embedding, small version |
| `gte-base` | 768 | General Text Embeddings model |

### Configuration Structure

```yaml
# Embedding Model Configuration
embeddings:
  defaultModel: "nomic-v1.5"
  ollamaApiUrl: "http://127.0.0.1:11434"
  batchSize: 32
  timeoutMs: 30000
  models:
    # Model definitions with dimensions, descriptions, etc.

# Cache Configuration  
cache:
  defaultCacheDir: "~/.cache/folder-mcp"
  maxCacheSize: "10GB"
  cleanupIntervalHours: 24

# Text Processing Configuration
processing:
  defaultChunkSize: 1000
  defaultOverlap: 200
  maxConcurrentOperations: 10

# Development & Logging options
logging:
  level: "info"
  format: "json"
  
development:
  enableDebugOutput: false
  mockOllamaApi: false
```

For detailed configuration options, see [CONFIGURATION.md](docs/CONFIGURATION.md).

## Current Status

šŸš€ **Version 1.0** - Basic MCP Server (13/30 planned features complete)

This is the foundation release providing secure file system access through MCP. The full vision includes semantic search, embeddings, and intelligent document parsing - see [ROADMAP.md](ROADMAP.md) for the complete development plan.

**What works now:**
- āœ… Basic file reading and folder operations
- āœ… Security validation and path protection  
- āœ… Pattern-based file searching
- āœ… MCP protocol integration

**Coming next:** Smart text chunking, semantic embeddings, vector search ([see all 30 planned features](GITHUB_ISSUES.md))

## Usage

### As an MCP Server

This server is designed to be used with MCP clients like Claude Desktop. Add it to your Claude Desktop configuration:

```json
{
  "mcpServers": {
    "folder-mcp": {
      "command": "node",
      "args": [
        "C:\\Path\\To\\folder-mcp\\dist\\mcp-server.js",
        "C:\\Path\\To\\folder-mcp"
      ],
      "env": {}
    }
  }
}
```

> āš ļø **Critical Claude Desktop Integration Note**: 
> The MCP protocol requires that ONLY valid JSON-RPC messages go to stdout. Any logging or debugging 
> output to stdout will break the connection. All logs should be redirected to stderr only.
> See CLAUDE_DESKTOP_SETUP.md for detailed troubleshooting tips.

### Available Tools

The server currently provides the following tools:

1. **get_status** - A system status tool that returns processing information to verify connection
   - Optional parameter: `name` - A name to include in the greeting

#### 1. `read_file`
Read the contents of a specific file within a folder.

**Parameters:**
- `folder_path`: Path to the folder containing the file
- `file_path`: Relative path to the file within the folder

#### 2. `search_files`
Search for files matching a specific pattern.

**Parameters:**
- `folder_path`: Path to the folder to search
- `pattern`: File pattern (e.g., "*.md", "*.txt", "config.*")

#### 3. `list_files`
List all files in a folder recursively.

**Parameters:**
- `folder_path`: Path to the folder to list

#### 4. `get_folder_info`
Get information about a folder including file count and metadata.

**Parameters:**
- `folder_path`: Path to the folder to analyze

### Security Features

- **Path Validation**: Prevents access to files outside the specified folder
- **Directory Exclusions**: Automatically excludes node_modules, .git, and cache folders
- **Error Handling**: Graceful handling of permission errors and invalid paths

## Architecture

### MCP Server Implementation

The server implements the Model Context Protocol standard with the following components:

```
šŸ“” MCP Client (Claude Desktop) ↔ šŸ“ž Stdio Transport ↔ šŸ–„ļø MCP Server ↔ šŸ“ File System
```

### File Access Pattern

```
1. Client Request → 2. Tool Validation → 3. Path Security Check → 4. File Operation → 5. Response
```

### Server Components

- **Tool Handlers**: Process read_file, search_files, list_files, and get_folder_info requests
- **Security Layer**: Validates paths and prevents directory traversal
- **File Operations**: Uses Node.js fs and glob for efficient file system access
- **Transport Layer**: Stdio transport for communication with MCP clients

## Technical Details

### Dependencies

- `@modelcontextprotocol/sdk`: MCP protocol implementation
- `glob`: Pattern-based file searching
- `typescript`: Type-safe development
- Additional libraries for future file parsing capabilities

### File Patterns

The server uses glob patterns for file searching:
- `*` - All files
- `*.md` - Markdown files only  
- `**/*.js` - JavaScript files recursively
- `config.*` - Any file starting with "config"

### Excluded Directories

Automatically excluded from all operations:
- `**/node_modules/**`
- `**/.git/**`
- `**/.folder-mcp/**`

## Development

### Building the Project

```bash
npm run build
```

### Running the Server

```bash
npm start
```

### Development Mode

```bash
npm run dev
```

### Testing with MCP Clients

The server can be tested with any MCP-compatible client. For Claude Desktop, add the configuration to your settings file.

## Future Enhancements

**šŸ“‹ Development Roadmap:** See [ROADMAP.md](ROADMAP.md) for visual progress and [GITHUB_ISSUES.md](GITHUB_ISSUES.md) for detailed task breakdown.

### Planned Features (17 remaining tasks):
- **Phase 3:** Smart text chunking and semantic embeddings
- **Phase 4:** FAISS vector search and similarity matching  
- **Phase 5:** Enhanced MCP integration with semantic search
- **Phase 6:** Real-time file watching and configuration system
- **Phase 7:** Performance optimization and comprehensive testing
- **Phase 8:** Documentation and npm release

### Vision: Universal Folder-to-MCP Tool
Transform any folder into an intelligent knowledge base with:
- **Multi-format parsing**: PDF, Word, Excel, PowerPoint with structure preservation
- **Semantic embeddings**: Nomic Embed model for intelligent content understanding  
- **Vector search**: FAISS-powered similarity search for context-aware retrieval
- **Smart chunking**: Meaning-based content segmentation
- **Real-time updates**: File watching with automatic re-indexing
- **RAG capabilities**: Enable LLMs to query folder contents intelligently

## Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## License

MIT License - see [LICENSE](LICENSE) file for details.

## Acknowledgments

- Built with the Model Context Protocol SDK
- Uses TypeScript for type safety and developer experience
- Designed for secure and efficient file system access
- Compatible with Claude Desktop and other MCP clients

---

**Enable your LLM to work with local folders through the Model Context Protocol!** šŸš€