Skip to main content
Glama

linkwarden-mcp

CI npm downloads container node license docs

Model Context Protocol サーバーです。 Linkwarden 用で、保存したすべてのページの永続的なコピーを保持するセルフホスト型ブックマークマネージャーです。

MCP クライアント(Claude Code、Claude Desktop、Codex)がブックマークコレクションを検索し、コレクションやタグに整理し、保存されたページのアーカイブ記事テキストを読むことができるため、アーカイブ済みのリンクをライブサイトにアクセスせずに要約したり引用したりできます。

📖 完全なドキュメントは linkwarden-mcp.ni-c.de で

Demo

注: Linkwarden の公開 API リファレンスは不完全です。このサーバーは linkwarden/linkwardenapps/web/pages/api/v1/** のルートと packages/lib/schemaValidation.ts のリクエストスキーマに対して作成され、 v2.16.0 (2026-08-17) で検証されています。これら 2 つのファイルが、ここにあるすべてのツールの信頼できる情報源です。

要件

  • Node.js ≥ 22

  • 実行中の Linkwarden インスタンス

  • 設定 → アクセストークン で作成されたアクセストークン

Linkwarden にはトークンごとのスコープはありません。トークンは、それを作成したアカウントのすべての権限を持ちます。管理トークンを渡すのではなく、このサーバーがアクセスすべきコレクションのみにアクセスできる専用アカウントを作成してください。

Related MCP server: linkwarden-mcp

設定

変数

必須

説明

LINKWARDEN_URL

はい

ベース URL(例: https://links.example.net/api/v1 は含めない)

LINKWARDEN_TOKEN

はい

設定 → アクセストークンからのアクセストークン

LINKWARDEN_READ_ONLY

いいえ

true にすると読み取りツールのみ登録

LINKWARDEN_INSECURE_TLS

いいえ

true にすると自己署名証明書を受け入れる(この接続に限定)

https:// を使用してください。 平文の http ではトークンが暗号化されずに送信されます。ホストがローカルでない限り、サーバーは警告を出力します。自己署名証明書の場合は、LINKWARDEN_INSECURE_TLS よりも適切な内部 CA を推奨します。

トークンは読み取り後にプロセス環境から削除されるため、子プロセスや /proc/<pid>/environ からは見えません。

認証情報がない場合でもサーバーは起動し、ツールをリスト表示するため、レジストリやインスペクターが内部を調査できます。その場合、すべての呼び出しは API に到達せず、設定手順を示すエラーで失敗します。

インストール

Claude Code

claude mcp add linkwarden -e LINKWARDEN_URL=https://links.example.net -e LINKWARDEN_TOKEN=… -- npx -y linkwarden-mcp

Claude Desktop

{
  "mcpServers": {
    "linkwarden": {
      "command": "npx",
      "args": ["-y", "linkwarden-mcp"],
      "env": {
        "LINKWARDEN_URL": "https://links.example.net",
        "LINKWARDEN_TOKEN": "…"
      }
    }
  }
}

Codex

[mcp_servers.linkwarden]
command = "npx"
args = ["-y", "linkwarden-mcp"]
env = { LINKWARDEN_URL = "https://links.example.net", LINKWARDEN_TOKEN = "…" }

ソースから

npm install && npm run build
LINKWARDEN_URL=https://links.example.net LINKWARDEN_TOKEN=… node dist/index.js

Docker

docker build -t linkwarden-mcp .
docker run --rm -i \
  -e LINKWARDEN_URL=https://links.example.net \
  -e LINKWARDEN_TOKEN=… \
  linkwarden-mcp

ツール

読み取り

ツール

説明

search_links

ブックマークを検索または一覧表示。Linkwarden のフィールドフィルター(tag:collection:before:! …)に対応。

get_link

1 つのブックマークとそのタグ、コレクション、保存されているフォーマットを取得。

get_link_content

保存されたページのアーカイブ記事テキスト。長い記事は分割して取得。

list_collections

すべてのコレクションとリンク数。parentId によるネスト表示。

get_collection

1 つのコレクションとメンバーごとの権限を取得。

list_tags

タグとリンク数、タグごとのアーカイブ設定。

get_tag

1 つのタグを取得。

get_dashboard

最近追加されたリンクとピン留めされたリンクを、Linkwarden のダッシュボードのように表示。

list_rss_subscriptions

このアカウントが購読している RSS フィード。

get_current_user

トークンが属するアカウントとそのアーカイブデフォルトを取得。接続確認に便利。

get_worker_stats

保存と検索インデックスのキュー。管理者アカウントのみ — それ以外は HTTP 403 を返します。

書き込み

LINKWARDEN_READ_ONLY=true の場合はまったく登録されません。🔒 マークのツールは確認トークンが必要です。

ツール

説明

create_link

ブックマークを保存。必要に応じてタグとコレクション(オンデマンド作成)を指定。

update_link

タイトル、説明、タグ、コレクションを変更。🔒 URL が変更される場合のみ必要。

set_link_pinned

リンクをピン留めまたはピン解除(このアカウント用)。

delete_link 🔒

ブックマークとその保存コピーを削除。

bulk_update_links 🔒

複数のリンクに 1 つのタグリストやコレクションを適用。

bulk_delete_links 🔒

複数のブックマークを一度に削除。

represerve_link 🔒

既存のアーカイブを削除し、ページを再度保存。

delete_link_preservations 🔒

複数のリンクのアーカイブを削除し、ブックマークは保持。

create_collection

コレクションを作成。必要に応じてネスト可能。

update_collection

コレクションの名前変更、親変更、公開設定の変更。🔒 公開する場合のみ必要。

delete_collection 🔒

コレクションを削除 — リンクとサブコレクションも連鎖削除。

create_tags

タグを作成またはアーカイブ設定を変更(名前で upsert)。

rename_tag

タグの名前を変更。

delete_tags 🔒

タグを削除。リンクはそのまま残る。

merge_tags 🔒

複数のタグを 1 つの新しいタグに統合。

create_rss_subscription

RSS/Atom フィードを購読。

delete_rss_subscription 🔒

フィードのポーリングを停止。

意図的に公開していないもの

  • アクセストークン管理 (/tokens)。API 資格情報を作成できるツールは権限昇格の表面となり、ブックマークサーバーが保持するべきではありません。

  • ユーザー管理 (/users、アカウント削除)。対象外。

  • バックアップのエクスポートとインポート (/migration)。エクスポートはインスタンス全体をモデルのコンテキストにダンプし、インポートは破壊的です。

  • ハイライト。作成には保存ドキュメント内の正確な文字オフセットが必要であり、モデルが意味のある形で生成できません。また、Linkwarden には既存のハイライトを一覧表示するルートがありません。

  • アーカイブアップロード および署名付き preserved URL。これらは NEXT_PUBLIC_USER_CONTENT_DOMAIN の設定が必要です。

  • 非推奨の GET /links 一覧ルート — search_links は代わりに GET /search を使用します。これは Linkwarden 自身が推奨する方法です。

安全性

  • 破壊的なツールは 2 段階です。 最初の呼び出しは、正確な対象に紐づいた短命の確認トークンを返します。そのトークンを使って 2 回目の呼び出しを行うことで初めて操作が実行されます。モデル単独ではこのゲートを通過できず、あるリンク、タグセット、変更に対して発行されたトークンを別のものに使い回すことはできません。

  • 可視性の拡大は破壊的とみなされます。 コレクションの公開や、リンクの URL 変更(古いページの保存コピーをすべて削除する)は、削除だけでなく確認が必要です。

  • 確認プロンプトは Linkwarden からのコンテンツを引用しません。 タイトル、URL、説明、コレクション名は保存されたページやインスタンスの他のユーザーから取得されるものであり、モデルが読むテキストにはカウントと ID のみが表示されます。

  • 返されるコンテンツは信頼できないデータとしてマークされます。 特に保存された記事テキストは、対象サイトの管理者が書いたものです。

  • 部分更新でフィールドがクリアされることはありません。 Linkwarden の更新ルートはレコード全体を置き換えるため、このサーバーは現在の状態を読み取り、マージします。そうしないと、更新によってリンクのタグやコレクションの共同作業者が静かに削除される可能性があります。

  • 200 応答をそのまま信頼しません。 いくつかの Linkwarden ルートは HTTP 200 と本文内のエラー文で失敗を報告し、使用されたメソッドのハンドラがないルートは何もない 200 を返します。これらは正常な書き込みではなくエラーとして報告されます。

  • エラー本文は切り詰められ、HTML エラーページは完全に破棄され、リダイレクトは決して追跡されません(Bearer トークンが別のホストに再利用されるのを防ぐため)。また、すべてのリクエストにはタイムアウトが設定されています。

  • LINKWARDEN_READ_ONLY=true は書き込みツールをまったく登録しません。

  • 残存リスク: 設定したトークンの権限の範囲内で、破壊的な操作を依頼され、ユーザーが確認したモデルは、その操作を実行できます。アカウントをスコープし、ホストレベルの権限プロンプトを維持してください。

開発

npm install
npm run build
npm test
npm run test:coverage
npm run lint
npm run format
npm run docs:tools     # regenerate docs/reference/tools.md from the registered tools

docs/reference/tools.md は生成されます。コミットされたコピーがコードと一致しなくなった場合、CI は失敗します。ドキュメントサイトは docs/ にあり、独自の package.json とロックファイルを持っています。VitePress は Docker ビルドやテストマトリックス全体で実行されるルートインストールに含めてはいけません。

CONTRIBUTING.md を参照してください。

リリース

すべてはタグによって駆動されます。手動での公開手順はありません。

  1. [CHANGELOG.md](CHANGELOG.md)[Unreleased] セクションを新しいバージョンに移動し、日付を記入してください。リリースワークフローは awk でそのセクションを抽出するため、## [x.y.z] の見出し形式が重要です。

  2. package.jsonversion を更新してください。

  3. npm run lint && npm run build && npm run test:coverage を実行してください。

  4. コミット後、署名付き注釈タグを作成してください:

    git tag -s v0.1.1 -m "v0.1.1"
    git push origin main v0.1.1

release.yml はタグが package.json と一致することを検証し、Trusted Publishing(OIDC — 漏洩するnpmトークンは存在しません)によりnpmに証明書付きで公開し、バージョンを server.json の両方のパッケージエントリに同期し、MCPレジストリに公開し、チェンジログセクションからGitHubリリースを作成します。ci.yml はそれと並行してマルチアーキテクチャコンテナイメージをGHCRにプッシュします。

レジストリ手順が失敗した場合は、main ブランチで修正し、mcp-registry.yml ワークフローを手動で実行してください。失敗したジョブの再実行はオプションではありません。不変のタグをチェックアウトするため、main での修正がそこに届くことは決してありません。

ライセンス

MIT © Willi Thiel

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    -
    quality
    C
    maintenance
    Enables Claude and other MCP clients to manage Instapaper accounts by reading, saving, organizing, and analyzing articles through natural language. It supports comprehensive bookmark management, bulk operations, folder organization, and full-text content retrieval for research and synthesis.
    20
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables managing bookmarks via the Linkwarden API with token-frugal tools for listing collections and links, adding/moving/deleting links, and creating collections.
    7
  • A
    license
    B
    quality
    C
    maintenance
    Enables management of Raindrop.io bookmarks, collections, tags, and highlights via MCP tools, with support for search, bulk editing, and library auditing.
    17
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Enables users to search, read, and query saved bookmark content via a read-only MCP interface, with full-text and optional semantic search.
    4
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.

  • MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.

  • Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only

View all MCP Connectors

Latest Blog Posts

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/ni-c/linkwarden-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server