# Linkding Mcp

> MCP Server for Linkding self-hosted bookmarking service

- **Type:** MCP server
- **Install:** `agentstack add mcp-chickenzord-linkding-mcp`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [chickenzord](https://agentstack.voostack.com/s/chickenzord)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [chickenzord](https://github.com/chickenzord)
- **Source:** https://github.com/chickenzord/linkding-mcp

## Install

```sh
agentstack add mcp-chickenzord-linkding-mcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Linkding MCP Server

[](https://goreportcard.com/report/github.com/chickenzord/linkding-mcp)

A Model Context Protocol (MCP) server that provides seamless integration with [Linkding](https://linkding.link/), a self-hosted bookmark manager. This server enables AI assistants like Claude to interact with your Linkding bookmarks through standardized MCP tools.

## Features

- 🔍 **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

## Tools Available

### `search_bookmarks`
Search through your Linkding bookmarks.

**Parameters:**
- `query` (string, optional): Search phrase to filter bookmarks
- `limit` (number, optional): Maximum results to return (default: 20)

### `create_bookmark` 
Create a new bookmark in Linkding.

**Parameters:**
- `url` (string, required): The URL to bookmark
- `title` (string, optional): Title for the bookmark
- `description` (string, optional): Description of the bookmark  
- `tags` (array of strings, optional): Tags to associate with the bookmark

### `get_tags`
Retrieve available tags from Linkding.

**Parameters:**
- `limit` (number, optional): Maximum number of tags to return (default: 50)

## Installation

### Prerequisites

- [Linkding](https://linkding.link/) instance running and accessible
- Linkding API token (generate in your Linkding admin panel)

### Option 1: Docker (Recommended)

```bash
# 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
```

### Option 2: Homebrew (macOS/Linux)

```bash
# Add the tap
brew tap chickenzord/tap

# Install linkding-mcp
brew install linkding-mcp

# Install latest development version
brew install --HEAD linkding-mcp
```

### Option 3: Go Install

```bash
go install github.com/chickenzord/linkding-mcp/cmd/linkding-mcp@latest
```

### Option 4: Build from Source

```bash
git clone https://github.com/chickenzord/linkding-mcp.git
cd linkding-mcp
go build -o linkding-mcp ./cmd/linkding-mcp
```

## Configuration

### Environment Variables

- `LINKDING_URL` (required): Your Linkding instance URL
- `LINKDING_API_TOKEN` (required): API token from your Linkding admin panel
- `BIND_ADDR` (optional): HTTP server bind address (default: ":8080")

### Getting Your Linkding API Token

1. Log into your Linkding instance
2. Go to Settings → Integrations
3. Generate a new API token
4. Copy the token for use with this MCP server

## MCP Client Configuration

### Claude Desktop

Add to your Claude Desktop configuration file:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`  
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

```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:

```json
{
  "mcpServers": {
    "linkding": {
      "command": "linkding-mcp",
      "args": ["stdio"],
      "env": {
        "LINKDING_URL": "https://your-linkding.example.com",
        "LINKDING_API_TOKEN": "your-api-token"
      }
    }
  }
}
```

### VS Code with MCP Extension

```json
{
  "mcp.servers": [
    {
      "name": "linkding",
      "command": "linkding-mcp",
      "args": ["stdio"],
      "env": {
        "LINKDING_URL": "https://your-linkding.example.com", 
        "LINKDING_API_TOKEN": "your-api-token"
      }
    }
  ]
}
```

### Other MCP Clients

For any MCP-compatible client, use:
- **Command**: `linkding-mcp stdio` (or Docker equivalent)
- **Transport**: stdio
- **Environment**: Set `LINKDING_URL` and `LINKDING_API_TOKEN`

## Usage Examples

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"*

## Development

### Running Locally

```bash
# 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
```

### Testing

```bash
# Run tests
go test ./...

# Test with a real Linkding instance
go run ./cmd/linkding-mcp stdio 
```

## Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add 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 MIT License - see the [LICENSE](LICENSE) file for details.

## Related Projects

- [Linkding](https://linkding.link/) - The self-hosted bookmark manager
- [MCP Specification](https://spec.modelcontextprotocol.io/) - Model Context Protocol specification
- [Claude Desktop](https://claude.ai/desktop) - AI assistant with MCP support

## Support

- 🐛 **Bug Reports**: [GitHub Issues](https://github.com/chickenzord/linkding-mcp/issues)
- 💡 **Feature Requests**: [GitHub Discussions](https://github.com/chickenzord/linkding-mcp/discussions)
- 📖 **Documentation**: [Wiki](https://github.com/chickenzord/linkding-mcp/wiki)

---

Built with ❤️ for the MCP ecosystem

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [chickenzord](https://github.com/chickenzord)
- **Source:** [chickenzord/linkding-mcp](https://github.com/chickenzord/linkding-mcp)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-chickenzord-linkding-mcp
- Seller: https://agentstack.voostack.com/s/chickenzord
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
