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
- Clone and install dependencies:
git clone <repository>
cd documcp
npm install
- Start Qdrant (using Docker):
docker run -p 6333:6333 -v ./qdrant_data:/qdrant/storage qdrant/qdrant
- Configure environment:
cp .env.example .env
# Edit .env with your settings
- Build and start the application:
npm run build
npm start
- Access the web interface:
Open http://localhost:3456 in your browser
- Default login:
admin/admin123
Docker Deployment
For production deployment with Docker:
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
- Build the MCP server:
npm run build
- 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" } } } } ``
- Restart Claude Desktop
Available MCP Tools
Once configured, Claude can use these tools:
list_documents- List all documents in the systemsearch_documents- Semantic search across documentsread_document- Read specific document contentdelete_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
# 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_SECRETandADMIN_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_SIZEsetting - Verify
uploadsdirectory 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 addressed











