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スター

4

ユーザー評価

未評価

お気に入り

0

閲覧数

8

フォーク

1

イシュー

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