Skip to main content

URL Manager MCP Server — Agent-first web link collection & knowledge management

Project description

URL Manager MCP Server

url-manager-mcp MCP server License: MIT

English | 简体中文

A Model Context Protocol server for managing web bookmarks — cross-device sync, categories, tags, full-text search, batch operations, and team sharing. 20 tools with auto-registration so no manual setup is required.

📖 Usage patterns and best practices → URL Manager Skill

Tools

Registration & Identity

  • agent_register() Create a new account. No parameters. Token is auto-applied for all subsequent calls. ⚠️ Call once only — each invocation creates a fresh account.

  • my_info() Verify connection and token validity. Returns username and membership status.

Bookmarks

  • search_footprints(query, limit, offset) Full-text search across titles, descriptions, and URLs.

    • query (required) — Search keywords
    • limit — Results per page (default 10, max 100)
    • offset — Pagination offset (default 0)
  • list_footprints(category_id, limit, offset) List bookmarks by category. category_id=0 returns all.

    • limit — Results per page (default 20, max 100)
    • offset — Pagination offset (default 0)
  • get_footprint(footprint_id) Get full details of a single bookmark.

    • footprint_id (required) — From list_footprints or search_footprints results (field id)
  • add_footprint(url, title, description, category_ids, tag_names) Add a new bookmark. Call list_categories() and list_tags() first to discover existing structure.

    • url (required) — Web page URL
    • title — Leave empty to auto-extract from the page
    • description — Summary or notes
    • category_ids — Comma-separated IDs, e.g. "1,3"
    • tag_names — Comma-separated names, e.g. "AI,tutorial"
  • update_footprint(footprint_id, title, description, category_ids, tag_names) Update a bookmark. Omitted fields stay unchanged. ⚠️ category_ids replaces the entire list — not append. Call get_footprint() first, then merge IDs.

    • footprint_id (required) — From search or list results

Categories & Tags

  • list_categories() List all categories (personal + shared). Returns id, name, and mode fields. mode=null → personal; mode="cocreate"/"subscribe" → shared.

  • create_category(name, category_set_id) Create a new category. Check list_categories() first to avoid duplicates.

    • name (required) — Category name
    • category_set_id — Parent category set (0 = default)
  • list_tags() List all tags used by this account.

Category Sets

  • list_category_sets() List all category sets.

  • create_category_set(name) Create a new category set (a container of categories).

    • name (required) — Category set name

Shared Categories

  • create_shared_category(name, mode, description) Create a shared category for team collaboration.

    • name (required)
    • mode (required)"cocreate" (multiple editors) or "subscribe" (read-only)
    • description — Optional description ⚠️ In subscribe mode, adding bookmarks returns 403. Use "cocreate" for editable collaboration.
  • create_invite_link(shared_category_id, duration_hours) Generate an invite link for others to join.

    • shared_category_id (required) — From list_categories() (shared entries)
    • duration_hours — Default 24
  • join_shared_category(invite_code) Join a shared category by invite code.

    • invite_code (required) — 8-character code from the invite link
  • add_to_shared_category(shared_category_id, footprint_id) Add one of your own bookmarks to a shared category.

    • Both parameters required
  • remove_from_shared_category(shared_category_id, footprint_id) Remove a bookmark from a shared category. Does not delete the bookmark itself.

    • Both parameters required
  • copy_footprint(footprint_id, category_ids) Copy a bookmark from a shared category into your personal collection.

    • Both parameters required

Batch & Delivery

  • batch_update_footprints(updates) Bulk edit up to 50 bookmarks at once.

    • updates (required) — JSON string: [{"id":"...", "title":"New Title", "category_ids":"1,3"}, ...] Each object may contain title, description, category_ids, tag_names; id is required.
  • agent_magic_link() Generate a delivery link. Send to the user — they open it to see a card-based interface with all their organized bookmarks. Valid for 30 days, reusable.

Installation

git clone https://github.com/Piccolo123/url-manager-mcp.git
cd url-manager-mcp
pip install -r requirements.txt

Prerequisites

  • Python 3.10+
  • Network access to https://ai.ocean94.com

Configuration

Claude Desktop / Claude Code

{
  "mcpServers": {
    "url-manager": {
      "command": "python",
      "args": ["path/to/url-manager-mcp/server.py"]
    }
  }
}

If the user has an existing account:

{
  "mcpServers": {
    "url-manager": {
      "command": "python",
      "args": ["path/to/url-manager-mcp/server.py"],
      "env": {
        "FOOTPRINTS_TOKEN": "FA_xxxxxxxxxxxx"
      }
    }
  }
}

Cursor / Windsurf / Cherry Studio

Same JSON structure as above. Works with any MCP-compatible client supporting STDIO transport.

Other Clients

This server supports both STDIO (default) and Streamable HTTP transports:

# STDIO (default)
python server.py

# Streamable HTTP (for Docker / Glama / hosted environments)
python server.py --http

Deployment

Docker

docker build -t url-manager-mcp .
docker run -e FOOTPRINTS_TOKEN="FA_xxx" url-manager-mcp

ModelScope

One-click hosted deployment: url-manager-mcp

Why URL Manager

Browser bookmarks are flat lists with no organization, no search, and no sharing. URL Manager adds:

  • Categories, category sets, and tags — Hierarchical organization
  • Full-text search — Find anything across all titles, descriptions, and URLs
  • Cross-device sync — Save on one device, access on all
  • Batch management — Sort and organize hundreds of links at once
  • Team sharing — Co-editing and read-only shared collections with invite links
  • Card-based delivery — Send organized collections as a polished interface, not raw URLs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

url_manager_mcp-1.0.0.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

url_manager_mcp-1.0.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file url_manager_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: url_manager_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for url_manager_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2e7321c17f52f35b82512c04c3e31890443396b67f669b18350a21514e7fb6f8
MD5 c4c1a0783517fd9ca7d02e25b097768f
BLAKE2b-256 523307f30f34c8d919491a501f1e031d36705f5d1ebf13df75769f973a629425

See more details on using hashes here.

File details

Details for the file url_manager_mcp-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for url_manager_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5600a891b7e2996cab707be34470b4910fdbb2faa22fc660b434a1374ab114ff
MD5 cae834111c2fec7ce4072b0f2d7638ec
BLAKE2b-256 b6240ba9be9c032b8c868655c3823264b113a8ce4329b59becdccf2220b883c7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page