Linkwarden MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Linkwarden MCPsearch my bookmarks for anything about TypeScript and Cloudflare"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Linkwarden MCP
An MCP server that exposes a Linkwarden bookmark collection as a tool set, running as a stateful agent on Cloudflare Workers. Point an MCP client (Claude, etc.) at the deployed endpoint and it can browse, search, filter, create, and archive links directly against your own Linkwarden instance.
How it works
Every tool call goes straight to the Linkwarden REST API on your live instance — there's no index,
cache, or background sync involved. The instance isn't exposed publicly: requests reach it over a
Workers VPC service binding, which tunnels to the
private host via cloudflared.
MCP client ──HTTP/SSE──► Worker (/mcp) ──► LinkwardenMCP (Durable Object)
│
LINKWARDEN_VPC binding (+ LINKWARDEN_TOKEN)
│
Cloudflare Tunnel → Linkwarden API (private)LinkwardenMCP is a McpAgent hosted on a Durable Object.
Related MCP server: OpenViking MCP Server
Tools
Tool | Description |
| List links, optionally filtered to specific collections |
| Full-text search and filter by collection/tag |
| Fetch a single link by ID |
| Save a new bookmark |
| Trigger or refresh a link's archive snapshot |
| List all Linkwarden collections |
| List all tags |
Setup
npm installLinkwarden is reached through a VPC Service, created once against the Cloudflare Tunnel that runs on the same network as the instance:
wrangler vpc service create linkwarden \
--type http --tunnel-id <tunnel-id> --hostname <internal-host> --http-port 9000wrangler.jsonc binds the returned service ID under vpc_services, and the LINKWARDEN_URL var
supplies the URL used for the request path and Host header (the VPC Service — not this URL —
decides where the request actually goes):
"vars": { "LINKWARDEN_URL": "http://mediaserver:9000" },
"vpc_services": [
{ "binding": "LINKWARDEN_VPC", "service_id": "<service-id>", "remote": true }
]LINKWARDEN_TOKEN (a Linkwarden API access token) is read from Cloudflare's
Secrets Store, not a plain Wrangler secret.
Create it once per account and it's reusable across Workers:
wrangler secrets-store secret create <store-id> \
--name linkwarden-token --scopes workers --remotewrangler.jsonc then binds it via secrets_store_secrets:
"secrets_store_secrets": [
{ "binding": "LINKWARDEN_TOKEN", "store_id": "<store-id>", "secret_name": "linkwarden-token" }
]For local dev, create a local-only secret with the same name (omit --remote) so wrangler dev
has something to read. The VPC binding is marked remote: true, so wrangler dev connects to the
real VPC Service — there is no local emulation of it.
See CLAUDE.md for the full architecture and binding reference.
Development
npm run dev # wrangler dev — local development with hot reload
npm run test # vitest run
npm run typecheck # tsc --noEmitDeploy
Cloudflare Workers Builds is connected to this repo — pushing to master deploys automatically
(npm run build then wrangler deploy). npm run deploy remains available for manual/ad-hoc
deploys. Either way, the linkwarden-token secret must exist in the account's Secrets Store — it
is never stored in the repo.
Stack
Cloudflare Workers + Durable Objects (SQLite-backed)
Cloudflare Agents SDK (
agents/mcp)
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server for managing bookmarks and tags in linkding, a self-hosted bookmark manager.24MIT
- AlicenseNot gradedqualityDmaintenanceLightweight MCP server that connects to OpenViking for semantic search, resource management, and memory storage via natural language.Apache 2.0
- AlicenseCqualityCmaintenanceA local-first MCP server that turns browser bookmark exports into a searchable knowledge base with classification, merging, full-text indexing, and Chrome integration.20MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for Linkding bookmarks and web archival, enabling Claude to search, add, tag, archive, and delete bookmarks including archival snapshots.MIT
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/crunchypancake1/linkwarden-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server