A beautiful, web-based tool for creating, editing, and organizing markdown notes with real-time preview.

The simplest way to install mdlib is through cargo:
cargo install mdlib
Once installed, you can run mdlib from any directory to serve that directory's markdown files.
git clone https://github.com/bahdotsh/mdlib.git
cd mdlib
cargo build --release
The compiled binary will be located in target/release/mdlib.
To start mdlib, run:
mdlib [DIRECTORY]
Where [DIRECTORY] is the path to the directory containing your markdown files. If not specified, the current directory is used.
You can also specify a custom configuration file:
mdlib --config-file /path/to/config.json [DIRECTORY]
Once started, open your browser and navigate to http://localhost:3000.
mdlib includes special commands to manage your configuration:
# Show config file location and current settings
mdlib --config
# Create a default config file
mdlib --config create
# List all embedded static files (for debugging)
mdlib --list-embedded
Ctrl/Cmd + S: Save current fileCtrl/Cmd + B: Bold selected textCtrl/Cmd + I: Italicize selected textCtrl/Cmd + P: Toggle preview modeCtrl/Cmd + N: Create new notesrc/: Source codemain.rs: Entry pointfs.rs: File system operationsserver.rs: Web server and API endpointsconfig.rs: Configuration managementembedded.rs: Embedded static assets handlerstatic/: Static web files (embedded into the binary at compile time)index.html: Main HTML pagecss/: Stylesheetsjs/: JavaScript files# Clone the repository
git clone https://github.com/bahdotsh/mdlib.git
cd mdlib
# Build the project
cargo build --release
# Run the application
./target/release/mdlib
You can specify a custom configuration file with the --config-file option:
mdlib --config-file /path/to/config.json
Configuration options include: - Server port - Bind address - File watching - Maximum file size - Default theme preference
Here's a sample config.json file with default settings:
{
"port": 3000,
"watch_files": true,
"bind_address": "127.0.0.1",
"max_file_size_mb": 10,
"default_dark_mode": false
}
These settings can be customized according to your preferences:
- port: The HTTP port for the mdlib server (default: 3000)
- watch_files: Whether to watch for file changes and auto-refresh (default: true)
- bind_address: The address to bind to (default: "127.0.0.1", use "0.0.0.0" to allow external access)
- max_file_size_mb: Maximum file size in megabytes (default: 10)
- default_dark_mode: Start in dark mode by default (default: false)
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
$ claude mcp add mdlib \
-- python -m otcore.mcp_server <graph>