Links Environment
Environment Configuration
- Location: /opt/mcp-servers/links/mcp_links_server.py
- Version: 1.1.0 (stable user ID support)
- Vault Port: 6635 (requires password)
- Operational Port: 6636 (not replicated)
- Locker ID: l_a588
Purpose
Hierarchical link/bookmark storage with: - Auto-metadata extraction (title, description, og:image via httpx/BeautifulSoup) - Smart domain categorization (GitHub, Anthropic, AWS, YouTube, etc.) - System > Subsystem hierarchy for organization - Track Pattern: links:{owner}:{timestamp}:link:{hash_id} - Session integration for activity tracking - MD5-based link IDs (8-char hash of URL)
Tools (7 total)
| Tool | Description | Required Params |
|---|---|---|
save |
Save link with auto-metadata | url (required) |
save_batch |
Save multiple links | links[] (required) |
get |
Get link by ID | link_id (required) |
search |
Search links by query | query (required) |
list |
List links by system | system, subsystem, limit |
systems |
List all systems with counts | none |
delete |
Delete a link | link_id (required) |
Link Fields
- url - The saved URL (required)
- title - Auto-fetched or manual title
- system - Category (auto or manual)
- subsystem - Sub-category
- notes - Free-form notes
- source - Where link was saved from
- search_id - Associated search reference
Architecture
Key Pattern
links:{user}:{YYYYMMDD_HHMM}:link:{md5_hash[:8]}
Redis Structure
links:{user}:all_links(set) - all link IDslinks:{user}:systems(set) - all system nameslinks:{user}:system:{name}:links(set) - links per systemlinks:{user}:system:{name}:subsystem:{sub}:links(set) - links per subsystem
Domain Auto-Categorization
- github.com → GitHub
- anthropic.com → Anthropic
- docs.anthropic.com → Anthropic/Docs
- youtube.com/youtu.be → YouTube
- aws.amazon.com → AWS
- redis.io → Redis
-
- many more built-in mappings
Integrations
- httpx for HTTP requests (10s timeout)
- BeautifulSoup for HTML parsing
- session_helper for activity linking
- user_helper for stable user IDs
- credentials_helper for passwords
Security Assessment
✅ Uses credentials_helper for password from Locker (l_a588) ✅ No SQL injection (Redis-based) ✅ No command injection vectors ✅ HTTP client has timeout protection (10s) ✅ User-Agent properly identified as bot
⚠️ Hardcoded fallback password: '9MYE06' (line 65) ⚠️ Port 6636 has no data (DBSIZE=0) - not replicated
Current Data
- Vault (6635): 35 keys
- Operational (6636): 0 keys
- Active links: ~20 across 6 systems
- Systems: GitHub, Anthropic/Docs, ElevenLabs, Redis, Nexus, Docs
Test Results
✅ Redis 6635 (vault): Responding ✅ Redis 6636 (operational): Responding ✅ links.list: Working ✅ links.systems: Working - 6 systems ✅ links.get: Working ✅ links.search: Working
Status: WORKING
Links environment fully operational. Operational port 6636 not replicated (data only on vault 6635).