A Model Context Protocol (MCP) server that provides seamless integration with Linkding, a self-hosted bookmark manager. This server enables AI assistants like Claude to interact with your Linkding bookmarks through standardized MCP tools.
- π Search Bookmarks - Find bookmarks by query with customizable limits
- β Create Bookmarks - Add new bookmarks with titles, descriptions, and tags
- π·οΈ Manage Tags - Retrieve and work with your bookmark tags
- π Dual Mode Support - Run via stdio (MCP standard) or HTTP server
- π³ Docker Ready - Multi-stage Alpine-based container
- π Secure - Runs as non-root user with minimal dependencies
Search through your Linkding bookmarks.
Parameters:
query(string, optional): Search phrase to filter bookmarkslimit(number, optional): Maximum results to return (default: 20)
Create a new bookmark in Linkding.
Parameters:
url(string, required): The URL to bookmarktitle(string, optional): Title for the bookmarkdescription(string, optional): Description of the bookmarktags(array of strings, optional): Tags to associate with the bookmark
Retrieve available tags from Linkding.
Parameters:
limit(number, optional): Maximum number of tags to return (default: 50)
- Linkding instance running and accessible
- Linkding API token (generate in your Linkding admin panel)
# Pull the image
docker pull ghcr.io/chickenzord/linkding-mcp:latest
# Run in stdio mode (for MCP clients)
docker run --rm -i \
-e LINKDING_URL="https://your-linkding.example.com" \
-e LINKDING_API_TOKEN="your-api-token" \
ghcr.io/chickenzord/linkding-mcp:latest stdio
# Run in HTTP mode
docker run --rm -p 8080:8080 \
-e LINKDING_URL="https://your-linkding.example.com" \
-e LINKDING_API_TOKEN="your-api-token" \
-e BIND_ADDR=":8080" \
ghcr.io/chickenzord/linkding-mcp:latest http# Add the tap
brew tap chickenzord/tap
# Install linkding-mcp
brew install linkding-mcp
# Install latest development version
brew install --HEAD linkding-mcpgo install github.com/chickenzord/linkding-mcp/cmd/linkding-mcp@latestgit clone https://github.com/chickenzord/linkding-mcp.git
cd linkding-mcp
go build -o linkding-mcp ./cmd/linkding-mcpLINKDING_URL(required): Your Linkding instance URLLINKDING_API_TOKEN(required): API token from your Linkding admin panelBIND_ADDR(optional): HTTP server bind address (default: ":8080")
- Log into your Linkding instance
- Go to Settings β Integrations
- Generate a new API token
- Copy the token for use with this MCP server
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"linkding": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "LINKDING_URL=https://your-linkding.example.com",
"-e", "LINKDING_API_TOKEN=your-api-token",
"ghcr.io/chickenzord/linkding-mcp:latest",
"stdio"
]
}
}
}Or if using a local binary:
{
"mcpServers": {
"linkding": {
"command": "linkding-mcp",
"args": ["stdio"],
"env": {
"LINKDING_URL": "https://your-linkding.example.com",
"LINKDING_API_TOKEN": "your-api-token"
}
}
}
}{
"mcp.servers": [
{
"name": "linkding",
"command": "linkding-mcp",
"args": ["stdio"],
"env": {
"LINKDING_URL": "https://your-linkding.example.com",
"LINKDING_API_TOKEN": "your-api-token"
}
}
]
}For any MCP-compatible client, use:
- Command:
linkding-mcp stdio(or Docker equivalent) - Transport: stdio
- Environment: Set
LINKDING_URLandLINKDING_API_TOKEN
Once configured with an MCP client, you can use natural language commands:
- "Search for bookmarks about golang"
- "Create a bookmark for https://example.com with title 'Example Site' and tags 'reference', 'tools'"
- "Show me all my tags"
- "Find bookmarks related to kubernetes"
# Set environment variables
export LINKDING_URL="https://your-linkding.example.com"
export LINKDING_API_TOKEN="your-api-token"
# Run in stdio mode
go run ./cmd/linkding-mcp stdio
# Run in HTTP mode
go run ./cmd/linkding-mcp http# Run tests
go test ./...
# Test with a real Linkding instance
go run ./cmd/linkding-mcp stdio < test-requests.json# Build binary
go build -o linkding-mcp ./cmd/linkding-mcp
# Build Docker image
docker build -t linkding-mcp .version: '3.8'
services:
linkding-mcp:
image: ghcr.io/chickenzord/linkding-mcp:latest
environment:
- LINKDING_URL=https://your-linkding.example.com
- LINKDING_API_TOKEN=your-api-token
- BIND_ADDR=:8080
ports:
- "8080:8080"
command: ["http"]The HTTP mode exposes MCP endpoints at:
POST /mcp/v1/initialize- Initialize MCP sessionPOST /mcp/v1/tools/list- List available toolsPOST /mcp/v1/tools/call- Call a tool
See the MCP specification for detailed API documentation.
Authentication Error: Verify your LINKDING_API_TOKEN is correct and has proper permissions.
Connection Error: Ensure your LINKDING_URL is accessible and includes the protocol (https://).
Permission Denied: If running Docker, ensure the container can access your Linkding instance (check firewalls/networks).
Set LINKDING_DEBUG=true for verbose logging:
LINKDING_DEBUG=true linkding-mcp stdioContainer logs:
docker logs <container-id>- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Linkding - The self-hosted bookmark manager
- MCP Specification - Model Context Protocol specification
- Claude Desktop - AI assistant with MCP support
- π Bug Reports: GitHub Issues
- π‘ Feature Requests: GitHub Discussions
- π Documentation: Wiki
Built with β€οΈ for the MCP ecosystem