DocuMCP
by DSado88
README.md
# DocuMCP - Document Management System with MCP Integration
A powerful document management system that combines local file storage with vector database capabilities, accessible through both a web GUI and Claude Desktop via the Model Context Protocol (MCP).
## Features
- š **Document Management**: Upload, store, and organize documents with a beautiful web interface
- š **Vector Search**: Semantic search powered by Qdrant vector database
- š¤ **MCP Integration**: Access documents directly from Claude Desktop
- š **Authentication**: Secure JWT-based authentication system
- šØ **Modern GUI**: Responsive web dashboard for easy document management
- š³ **Docker Support**: Easy deployment with Docker Compose
## Quick Start
### Prerequisites
- Node.js 20+
- Docker & Docker Compose (optional, for Qdrant)
- Claude Desktop (for MCP integration)
### Installation
1. **Clone and install dependencies:**
```bash
git clone <repository>
cd documcp
npm install
```
2. **Start Qdrant (using Docker):**
```bash
docker run -p 6333:6333 -v ./qdrant_data:/qdrant/storage qdrant/qdrant
```
3. **Configure environment:**
```bash
cp .env.example .env
# Edit .env with your settings
```
4. **Build and start the application:**
```bash
npm run build
npm start
```
5. **Access the web interface:**
Open http://localhost:3456 in your browser
- Default login: `admin` / `admin123`
## Docker Deployment
For production deployment with Docker:
```bash
docker-compose up -d
```
This will start:
- Qdrant vector database on port 6333
- DocuMCP web server on port 3456
- MCP server on port 3457
## Claude Desktop Integration
1. **Build the MCP server:**
```bash
npm run build
```
2. **Add to Claude Desktop configuration:**
Edit your Claude Desktop config file:
- Mac: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
Add this configuration:
```json
{
"mcpServers": {
"documcp": {
"command": "node",
"args": ["/path/to/documcp/dist/mcp-server.js"],
"env": {
"QDRANT_URL": "http://localhost:6333",
"COLLECTION_NAME": "documents"
}
}
}
}
```
3. **Restart Claude Desktop**
## Available MCP Tools
Once configured, Claude can use these tools:
- `list_documents` - List all documents in the system
- `search_documents` - Semantic search across documents
- `read_document` - Read specific document content
- `delete_document` - Remove documents from the system
## Architecture
```
DocuMCP/
āāā Web GUI (Express + HTML/JS)
ā āāā Authentication (JWT)
ā āāā File Upload/Download
ā āāā Document Management
āāā MCP Server
ā āāā Document Access Tools
āāā Storage Layer
ā āāā Local File System (./uploads)
ā āāā Qdrant Vector DB
āāā API Layer
āāā REST API
āāā MCP Protocol
```
## Configuration
### Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `PORT` | Web server port | 3456 |
| `JWT_SECRET` | JWT signing secret | (required) |
| `ADMIN_PASSWORD` | Admin login password | admin123 |
| `QDRANT_URL` | Qdrant server URL | http://localhost:6333 |
| `COLLECTION_NAME` | Qdrant collection | documents |
| `UPLOAD_DIR` | File storage directory | ./uploads |
| `MAX_FILE_SIZE` | Max upload size (bytes) | 10485760 |
## Development
```bash
# Run in development mode
npm run dev
# Run MCP server standalone
npm run mcp:dev
# Build TypeScript
npm run build
```
## Security Notes
ā ļø **Important for Production:**
- Change default `JWT_SECRET` and `ADMIN_PASSWORD`
- Use HTTPS in production
- Configure proper CORS settings
- Implement rate limiting
- Add file type restrictions
- Use environment-specific configs
## Troubleshooting
### Qdrant Connection Issues
- Ensure Qdrant is running: `docker ps`
- Check logs: `docker logs qdrant`
- Verify port 6333 is accessible
### MCP Server Not Connecting
- Check Claude Desktop logs
- Verify path in config is absolute
- Ensure Node.js is in PATH
### Upload Failures
- Check `MAX_FILE_SIZE` setting
- Verify `uploads` directory permissions
- Check available disk space
## License
MIT
## Contributing
Pull requests welcome! Please ensure:
- Code follows TypeScript best practices
- Tests pass (when implemented)
- Documentation is updated
- Security considerations addressedThis server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues