Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bookmark Manager MCPadd https://github.com to my development bookmarks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🔖 Bookmark Manager MCP
A Model Context Protocol (MCP) server for managing bookmarks with persistent storage
📋 Overview
This MCP server provides a simple yet powerful bookmark management system that integrates seamlessly with Claude and other MCP-compatible clients. It offers persistent storage, categorization, and easy retrieval of your bookmarks.
✨ Features
📁 Persistent Storage: Bookmarks are saved to
~/.data/bookmarks.json🏷️ Categories: Organize bookmarks with custom categories
🔍 Resource Discovery: Browse bookmarks by category using MCP resources
🐳 Container Support: Ready-to-use container image (Docker/Podman)
⚡ TypeScript: Type-safe implementation with Zod validation
🔗 MCP Integration: Full Model Context Protocol compliance
🛠️ Installation
🔧 Claude Code Integration
# Add to Claude Code (Docker)
docker pull mindriftfall2infinitepiio/bookmark-manager-mcp:latest
claude mcp add bookmark-manager -- docker run \
--rm \
--interactive \
--volume ~/.data:/app/.data \
mindriftfall2infinitepiio/bookmark-manager-mcp:latest
# Or with Podman
podman pull mindriftfall2infinitepiio/bookmark-manager-mcp:latest
claude mcp add bookmark-manager -- podman run \
--rm \
--interactive \
--volume ~/.data:/app/.data \
mindriftfall2infinitepiio/bookmark-manager-mcp:latest🔧 VS Code Integration
# Docker
docker pull mindriftfall2infinitepiio/bookmark-manager-mcp:latest
# Or Podman
podman pull mindriftfall2infinitepiio/bookmark-manager-mcp:latestCreate
.vscode/mcp.json
{
"servers": {
"bookmark-manager": {
"command": "docker",
"args": [
"run",
"--rm",
"--interactive",
"--volume",
"~/.data:/app/.data",
"mindriftfall2infinitepiio/bookmark-manager-mcp:latest"
]
}
}
}For Podman users:
{
"servers": {
"bookmark-manager": {
"command": "podman",
"args": [
"run",
"--rm",
"--interactive",
"--volume",
"~/.data:/app/.data",
"mindriftfall2infinitepiio/bookmark-manager-mcp:latest"
]
}
}
}Local Development
# Clone the repository
git clone https://github.com/infinitepi-io/bookmark-manager-mcp.git
cd bookmark-manager-mcp
# Install dependencies
pnpm install
# Development mode
pnpm run dev
# Build for production
pnpm run build
pnpm start🚀 Usage
GitHub Copilot (VS Code)
Agent Mode + Natural Language or # prefix
Add bookmark for GitHub at https://github.com category development
#add bookmark: title "GitHub", url "https://github.com"
#list all my bookmarks in development categoryClaude Code (CLI)
Usage: @ prefix
claude @bookmark-manager add bookmark for GitHub at https://github.com
claude @bookmark-manager search development bookmarks
claude @bookmark-manager list all bookmarksMCP Resources Available
bookmarks://all- All bookmarksbookmarks://mcp- MCP-related bookmarksbookmarks://general- General bookmarksbookmarks://{category}- Custom category bookmarks
Example Usage with Claude
Add a bookmark for "OpenAI Documentation" with URL "https://docs.openai.com" in category "ai"
List all my bookmarks
Show me all MCP-related bookmarks💾 Data Storage
Storage Location
Local:
~/.data/bookmarks.jsonContainer (Docker/Podman):
/app/.data/bookmarks.json(mount your local~/.datadirectory)
Data Format
[
{
"title": "Model Context Protocol",
"url": "https://modelcontextprotocol.io/introduction",
"category": "mcp"
},
{
"title": "infinitepi-io",
"url": "https://github.com/infinitepi-io",
"category": "general"
}
]Data Persistence
Automatic Creation: If no bookmarks file exists, default bookmarks are created
Error Handling: Graceful error handling for file operations
Backup Strategy: Simple JSON format allows easy backup and restoration
🐳 Container Configuration
Image Details
Base Image:
node:22-alpineSize: Optimized for minimal footprint
Volumes:
/app/.datafor persistent storage
📊 Technical Details
Dependencies
@modelcontextprotocol/sdk: ^1.13.2
zod: ^3.25.67 (Schema validation)
Node.js: 22+
TypeScript: 5.0+
Build Process
# TypeScript compilation with esbuild
esbuild index.ts --bundle --platform=node --target=node22 --format=esm --outfile=dist/index.jsArchitecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP Client │◄──►│ MCP Server │◄──►│ JSON Storage │
│ (Claude) │ │ (This App) │ │ (~/.data/) │
└─────────────────┘ └─────────────────┘ └─────────────────┘Synching your bookmark to S3 or vice versa BYOS3(Bring your own s3 on aws)
Use below function to copy the data from local to s3 or s3 to local:
🤝 Contributing
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
📝 License
This project is licensed under the Apache License 2.0.
👤 Author
Satish Tripathi
GitHub: @infinitepi-io
Blog: https://dev.to/mindriftfall2infinitepiio/building-a-bookmark-manager-with-ai-integration-my-journey-with-model-context-protocol-2j32
🆘 Support
Issues: GitHub Issues
Documentation: MCP Documentation
Container Registry: mindriftfall2infinitepiio/mcp
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.