Pinboard MCP Server
Pinboard MCP-Server
Schreibgeschützter Zugriff auf Pinboard.in-Lesezeichen für LLMs über das Model Context Protocol (MCP).
Übersicht
Dieser Server bietet LLMs die Möglichkeit, Lesezeichen-Metadaten von Pinboard.in zur Inferenzzeit zu suchen, zu filtern und abzurufen. Er basiert auf FastMCP 2.0 und bietet vier Kern-Tools für die Interaktion mit Lesezeichen, während er die Ratenbegrenzungen von Pinboard respektiert und intelligentes Caching implementiert.
Related MCP server: Raindrop.io MCP Server
Funktionen
Schreibgeschützter Zugriff auf Pinboard-Lesezeichen
Fünf MCP-Tools:
search_bookmarks,search_bookmarks_extended,list_recent_bookmarks,list_bookmarks_by_tags,list_tagsIntelligentes Caching mit LRU-Cache und automatischer Invalidierung über den
posts/update-EndpunktRatenbegrenzung respektiert die 3-Sekunden-Richtlinie von Pinboard zwischen API-Aufrufen
Feldzuordnung konvertiert die Legacy-Feldnamen von Pinboard in intuitive Namen (description→title, extended→notes)
Umfassende Tests mit Integrationstest-Harnesses und CI-Validierung
Installation
Via pip (empfohlen)
pip install pinboard-bookmarks-mcp-serverAus dem Quellcode
git clone https://github.com/rossshannon/pinboard-bookmarks-mcp-server.git
cd pinboard-bookmarks-mcp-server
pip install -e .Schnellstart
Holen Sie sich Ihren Pinboard-API-Token von https://pinboard.in/settings/password
Umgebungsvariable setzen:
export PINBOARD_TOKEN="username:1234567890ABCDEF"Server starten:
pinboard-mcp-serverÜberprüfen, ob es funktioniert:
# Test help command (works without token) pinboard-mcp-server --help # Server should show "Starting MCP server" when run with token
Verwendung mit Claude Desktop
Fügen Sie diese Konfiguration zu Ihren Claude Desktop-Einstellungen hinzu:
{
"mcpServers": {
"pinboard": {
"command": "pinboard-mcp-server",
"env": {
"PINBOARD_TOKEN": "your-username:your-token-here"
}
}
}
}Verfügbare Tools
1. search_bookmarks
Suchen Sie Lesezeichen nach Suchbegriffen in Titeln, Notizen und Tags. Fokus auf aktuelle Einträge mit automatischer Erweiterung.
Parameter:
query(string): Suchbegrifflimit(int, optional): Maximale Anzahl der Ergebnisse (Standard: 20, Maximum: 100)
Beispiel:
Search for "python testing" bookmarks2. search_bookmarks_extended
Erweiterte Suche für umfassende historische Ergebnisse in Titeln, Notizen und Tags.
Parameter:
query(string): Suchbegriffdays_back(int, optional): Wie viele Tage zurück gesucht werden soll (Standard: 365, Maximum: 730)limit(int, optional): Maximale Anzahl der Ergebnisse (Standard: 100, Maximum: 200)
Beispiel:
Search the last 2 years for "kubernetes" bookmarks3. list_recent_bookmarks
Lesezeichen auflisten, die in den letzten N Tagen gespeichert wurden.
Parameter:
days(int, optional): Tage, die zurückgeblickt werden sollen (Standard: 7, Maximum: 30)limit(int, optional): Maximale Anzahl der Ergebnisse (Standard: 20, Maximum: 100)
Beispiel:
Show me bookmarks from the last 3 days4. list_bookmarks_by_tags
ALLE Lesezeichen auflisten, gefiltert nach Tags mit optionalem Datumsbereich. Am effizientesten für den historischen Zugriff.
Parameter:
tags(array): Liste der Tags zum Filtern (1-3 Tags)from_date(string, optional): Startdatum im ISO-Format (YYYY-MM-DD)to_date(string, optional): Enddatum im ISO-Format (YYYY-MM-DD)limit(int, optional): Maximale Anzahl der Ergebnisse (Standard: 100, Maximum: 200)
Beispiel:
Find bookmarks tagged with "python" and "api" from January 20245. list_tags
Alle Tags mit ihren Nutzungshäufigkeiten auflisten.
Beispiel:
What are my most used tags?Konfiguration
Umgebungsvariablen
PINBOARD_TOKEN(erforderlich): Ihr Pinboard-API-Token im Formatusername:token
Ratenbegrenzung
Der Server erzwingt automatisch eine 3-sekündige Verzögerung zwischen Pinboard-API-Aufrufen, um deren Richtlinien zu respektieren. Zwischengespeicherte Antworten werden sofort zurückgegeben.
Caching-Strategie
Abfrage-Cache: LRU-Cache mit 1000 Einträgen für Suchergebnisse
Lesezeichen-Cache: Vollständige Lesezeichenliste für 1 Stunde zwischengespeichert
Cache-Invalidierung: Verwendet den
posts/update-Endpunkt, um Änderungen zu erkennenTag-Cache: Tag-Liste wird zwischengespeichert, bis sie manuell aktualisiert wird
Testen
Das Projekt enthält eine umfassende Testabdeckung mit mehreren Teststrategien:
Alle Tests ausführen
# Activate virtual environment first
source ~/.venvs/pinboard-bookmarks-mcp-server/bin/activate
# Run all tests with coverage
pytest --cov=src --cov-report=term-missingEchte API-Tests
# Set your Pinboard token
export PINBOARD_TOKEN="username:token"
# Run debug utility to test search functionality (development only)
PINBOARD_TOKEN="username:token" python tests/debug_bookmarks.pyMock-API-Tests
# Run comprehensive test suite (development only)
python -m pytest tests/ -vEntwicklung
Einrichtung
# Clone and setup
git clone https://github.com/rossshannon/pinboard-bookmarks-mcp-server.git
cd pinboard-bookmarks-mcp-server
# Quick development setup
./scripts/dev-setup.shCode-Qualität
# Activate environment
source ~/.venvs/pinboard-bookmarks-mcp-server/bin/activate
# Linting and formatting
ruff check src/ tests/
ruff format src/ tests/
# Type checking
mypy src/
# Run tests
pytest -v
# Build package
./scripts/build.shArchitektur
FastMCP 2.0: MCP-Grundgerüst mit Tool-Abstraktion und async FastAPI-Server
pinboard.py: Pinboard-API-Client-Wrapper mit Fehlerbehandlung
Pydantic: Datenvalidierung und Serialisierung mit JSON-Schema
ThreadPoolExecutor: Überbrückt async MCP mit der sync pinboard.py-Bibliothek
LRU-Cache: In-Memory-Caching mit intelligenter Invalidierung
Wichtige Dateien
src/pinboard_mcp_server/main.py- MCP-Server-Einstiegspunkt und Tool-Implementierungensrc/pinboard_mcp_server/client.py- Pinboard-API-Client mit Cachingsrc/pinboard_mcp_server/models.py- Pydantic-Datenmodelletests/- Umfassende Test-Suitetests/debug_bookmarks.py- Debug-Dienstprogramm zum Testen der Suchfunktionalitätdocs/TEST_HARNESS.md- Dokumentation für Test-Harnesses
Leistung
P50-Antwortzeit: <250ms (zwischengespeicherte Antworten)
P95-Antwortzeit: <600ms (kalter Cache)
Ratenbegrenzung: 3-Sekunden-Intervalle zwischen API-Aufrufen
Cache-Trefferquote: >90% bei typischen Nutzungsmustern
Sicherheit
API-Token werden niemals protokolliert oder in Fehlermeldungen angezeigt
Schreibgeschützter Zugriff auf Pinboard-Daten
Eingabevalidierung für alle Tool-Parameter
Sichere Handhabung von Umgebungsvariablen
Fehlerbehebung
Häufige Probleme
"PINBOARD_TOKEN environment variable is required"
Stellen Sie sicher, dass Sie Ihren Token gesetzt haben:
export PINBOARD_TOKEN="username:token"Holen Sie sich Ihren Token von https://pinboard.in/settings/password
Das Token-Format sollte sein:
username:1234567890ABCDEF
"Command not found: pinboard-mcp-server"
Stellen Sie sicher, dass Sie das Paket installiert haben:
pip install pinboard-bookmarks-mcp-serverÜberprüfen Sie, ob Ihre Python-Umgebung aktiviert ist
Versuchen Sie eine Neuinstallation:
pip uninstall pinboard-bookmarks-mcp-server && pip install pinboard-bookmarks-mcp-server
Server startet, aber Claude Desktop kann keine Verbindung herstellen
Überprüfen Sie die MCP-Konfiguration in den Claude Desktop-Einstellungen
Überprüfen Sie, ob der
command-Pfad korrekt ist:pinboard-mcp-serverStellen Sie sicher, dass
PINBOARD_TOKENimenv-Abschnitt gesetzt ist
"Permission denied" oder "Access denied"-Fehler
Überprüfen Sie, ob Ihr Pinboard-Token gültig und aktiv ist
Überprüfen Sie Ihre Internetverbindung, um pinboard.in zu erreichen
Testen Sie Ihren Token manuell unter https://pinboard.in/api/v1/posts/recent
Mitwirken
Forken Sie das Repository
Erstellen Sie einen Feature-Branch (
git checkout -b feature/amazing-feature)Führen Sie Ihre Änderungen mit Tests durch
Stellen Sie sicher, dass alle Tests bestehen und der Code formatiert ist
Senden Sie einen Pull Request
Lizenz
MIT-Lizenz - siehe LICENSE-Datei für Details.
Available Tools
5 toolslist_bookmarks_by_tagsA
List ALL bookmarks filtered by tags and optional date range.
Args:
tags: List of tags to filter by (1-3 tags)
from_date: Start date in ISO format (YYYY-MM-DD), optional
to_date: End date in ISO format (YYYY-MM-DD), optional
limit: Maximum number of results to return (1-200, default 100)
Note: Gets ALL bookmarks with specified tags, regardless of age.
Very efficient for tag-based searches. Provides generous data for analysis.
Inputs: tags (required), from_date, to_date, limit.
list_recent_bookmarksA
List bookmarks saved in the last N days.
Args:
days: Number of days to look back (1-30, default 7)
limit: Maximum number of results to return (1-100, default 20)
Inputs: days, limit.
list_tagsA
List all tags with their usage counts.
Inputs: no named parameters.
search_bookmarksA
Search bookmarks by query string across titles, notes, and tags (recent focus).
Args:
query: Search query to match against bookmark titles, notes, and tags
limit: Maximum number of results to return (1-100, default 20)
Note: Searches recent bookmarks first, expands automatically if needed.
For comprehensive historical search, use search_bookmarks_extended.
Inputs: query (required), limit.
search_bookmarks_extendedA
Extended search for comprehensive historical results across titles, notes, and tags.
Args:
query: Search query to match against bookmark titles, notes, and tags
days_back: How many days back to search (1-730, default 365 = 1 year)
limit: Maximum number of results to return (1-200, default 100)
Note: Provides comprehensive results while being mindful of server load.
Use tag-based searches for most efficient access to historical bookmarks.
Inputs: query (required), days_back, limit.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 5 tools
Each tool has a distinct purpose: listing by tags, recent bookmarks, tag counts, and two search variants differentiated by scope (recent vs. historical). Minimal overlap.
All tools follow a consistent verb_noun pattern: 'list_' for listing and 'search_' for searching, with descriptive suffixes. No style mixing.
5 tools for a bookmark server is a reasonable count, though the set lacks write operations like add/delete. Still well-scoped for a query-focused service.
The tool set covers only read and search operations. Missing essential CRUD actions (create, update, delete bookmarks), which are typical for bookmark management.
Maintenance
Related MCP Connectors
Search and chat with your X bookmarks, with citations back to the original posts.
Save, search, read, tag, and organize your bookmarks from AI assistants with OAuth sign-in.
All your bookmarks in one library. Share them with your AI agents. Read-only search over your saves.
Your portable context layer — load it into any AI.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables users to access and manage their Pinboard bookmarks directly through Claude Desktop. Supports retrieving, adding, and updating bookmarks with date filtering, tagging, and bookmark analysis capabilities.10-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to access and manage Raindrop.io bookmarks, collections, tags, and highlights through the Model Context Protocol. Supports CRUD operations, advanced search, file uploads, and bulk editing of bookmarks.238 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to save and search bookmarks using OpenAI's RAG capabilities for intelligent bookmark management and retrieval.MIT
- AlicenseNot gradedqualityDmaintenanceEnables language models to access and manage Raindrop.io bookmarks, collections, tags, and highlights through the Model Context Protocol.24 npmMIT