bookmark-manager-mcp

A lightweight Model Context Protocol (MCP) server that provides persistent bookmark management for Claude and other MCP-compatible clients. Features categorized storage, resource discovery, and seamless integration with your AI workflow.

GitHub Stars

4

User Rating

Not Rated

Favorites

0

Views

258

Forks

1

Issues

1

README
๐Ÿ”– Bookmark Manager MCP

A Model Context Protocol (MCP) server for managing bookmarks with persistent storage

Docker Hub
GitHub
TypeScript
MCP

Bookmark Manager MCP
๐Ÿ“‹ 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:latest
  • Create .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 category
Claude 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 bookmarks
MCP Resources Available
  • bookmarks://all - All bookmarks
  • bookmarks://mcp - MCP-related bookmarks
  • bookmarks://general - General bookmarks
  • bookmarks://{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.json
  • Container (Docker/Podman): /app/.data/bookmarks.json (mount your local ~/.data directory)
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-alpine
  • Size: Optimized for minimal footprint
  • Volumes: /app/.data for 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.js
Architecture
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   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)
๐Ÿค Contributing
  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request
๐Ÿ“ License

This project is licensed under the Apache License 2.0.

๐Ÿ‘ค Author

Satish Tripathi

๐Ÿ†˜ Support