@uselink/mcp
Click on "Deploy 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., "@@uselink/mcp create a new document with the design proposal and publish it"
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.
@uselink/mcp
Model Context Protocol (MCP) server for uselink. Lets Claude, Cursor, Codex, and other MCP-aware AI tools publish HTML/Markdown docs, upload assets, and reply to stakeholder comments directly from the editor — no manual copy-paste, no portal switch.
Status:
0.2.0— adds project + folder management and document moves.
Two ways to connect
Uselink supports two parallel authentication paths. Pick one — they don't overlap.
Option A — stdio + Personal Access Token (this package)
Best for CI/CD pipelines, scripted workflows, and power users who want fine-grained, revocable tokens.
claude mcp add uselink npx -y @uselink/mcpThen set USELINK_API_KEY=ulk_pat_xxx in the Claude Code MCP environment. Full tool catalog (documents, projects, folders, webhooks orchestration) — everything below.
Option B — HTTP + OAuth (browser login, no token paste)
Best for non-technical users (PM, designers) and tools that mandate OAuth (Claude.ai Connectors, Cursor extension store).
claude mcp add --transport http uselink <USELINK_BACKEND_URL>/mcpBrowser opens, you log in to uselink, click "Allow" on the consent screen, done. Token rotation and revocation are automatic. Manage authorized clients at uselink → Settings → Connected Apps.
Tool coverage on HTTP transport is currently the document + asset + comment surface (14 tools). Project and folder tools remain stdio-only until they are wired into the HTTP server.
Both paths talk to the same backend; revoking via Settings → Connected Apps does not affect PATs, and rotating a PAT does not affect OAuth-issued tokens.
Related MCP server: contextium-mcp-server
Install (Option A)
npm install -g @uselink/mcpOr run on demand without a global install:
npx -y @uselink/mcpEnvironment (Option A)
Variable | Required | Default | Notes |
| Yes | — | Personal access token from uselink → Settings → Developer. Format: |
| No | uselink production backend | Override for self-hosted or staging environments. |
Tools
Read tools
Tool | Description |
| List documents in a workspace |
| Read full document content by ID |
| Full-text search across a workspace |
| List threaded comments on a document |
| List assets attached to a document |
Write tools
Tool | Description |
| Create a new document. Pass |
| Update title, content, or format (slug is immutable) |
| Move a document into a different project / folder |
| Publish a document (makes it publicly accessible) |
| Unpublish a document |
| Delete a document |
| Upload an image or file from local disk |
| Upload a zip archive; server extracts and stores each file |
| Reply to an existing comment thread |
| Mark a comment thread as resolved |
Project tools
Require projects:read (list/read/check-slug) or projects:write (everything else) on the PAT. Stdio + PAT only — not yet on HTTP transport.
Tool | Description |
| List projects the PAT can see |
| Read a project by id |
| Create a project (workspace inferred from PAT) |
| Update name / slug |
| Soft-archive a project |
| Restore an archived project |
| Rename a project's slug |
| Check whether a slug is available |
| Mark a project as the user's default |
| Move a personal project into a workspace |
| Move a project back to personal |
Folder tools
Require folders:read (list/read) or folders:write (everything else) on the PAT. Stdio + PAT only — not yet on HTTP transport.
Tool | Description |
| List folders in a project (or under a parent folder) |
| Read a folder by id |
| Create a folder inside a project |
| Update name / slug / color |
| Re-parent a folder |
| Delete a folder (docs inside are moved to the project root) |
Account tools
Require account:write on the PAT.
Tool | Description |
| Set the user's public URL handle (3-30 lowercase letters/digits/hyphens, no leading/trailing hyphen). Required once before publishing the first document. Call this when publish returns |
Orchestrator
Tool | Description |
| Upload local images, rewrite |
OAuth scopes (Option B only)
When you connect via HTTP transport, the consent screen lists these scopes:
Scope | Grants |
| List, read, and search your documents |
| Create, update, publish, unpublish, and delete documents |
| Upload images and files to your documents |
| Read comments on your documents |
| Reply to and resolve comments on your documents |
| Set your public URL handle (required to publish your first doc) |
Authorized clients can be listed and revoked individually at uselink → Settings → Connected Apps.
Development
npm install
npm run build # compile to dist/
npm run dev # run via tsx
npm run smoke # local smoke test (lists tools)Publishing
This package publishes from CI on tags matching mcp-v*.*.* via .github/workflows/publish-mcp.yml.
Prerequisite (one-time, manual): the @uselink npm organization must be reserved on npmjs.com and the NPM_TOKEN secret added to the GitHub repo before the first publish.
License
MIT
Available Tools
34 toolsuselink_archive_projectA
Soft-archive a project. Its documents stay accessible by direct URL but no longer appear in listings.
Inputs: id (required).
uselink_check_project_slugA
Check whether a project slug is available in the PAT's workspace. Returns { available, suggestion? }.
Inputs: slug (required).
uselink_create_documentA
Create a new draft document in the uselink workspace bound to the active PAT. Returns the created document including its id, slug, and edit URL. Content can be omitted and added later via uselink_update_document. Pass project_id and/or folder_id to drop the doc directly into that location; otherwise it lands in the user's default project at the root.
Inputs: slug, title, format, content, +2 more.
uselink_create_folderA
Create a new folder inside a project. Omit parent_folder_id to create at the project root, or pass a folder id to nest. Slug is auto-generated from the name if omitted.
Inputs: name (required), project_id (required), slug, color, +1 more.
uselink_create_projectA
Create a new project. Workspace is inferred from the PAT — workspace-scoped tokens create inside that workspace, personal tokens create a personal project. Slug is auto-generated from the name if omitted.
Inputs: name (required), slug.
uselink_delete_documentA
Delete a uselink document. The document is removed and the public URL stops working.
Inputs: id (required).
uselink_delete_folderA
Delete a folder. Documents inside the folder are NOT deleted — they are moved back to the project root.
Inputs: id (required).
uselink_list_assetsB
List assets (images, files) attached to a document.
Inputs: document_id (required), limit, offset.
uselink_list_commentsC
List threaded comments on a document.
Inputs: document_id (required), limit, offset.
uselink_list_documentsB
List documents in the uselink workspace bound to the active PAT. Returns id, title, slug, status, and timestamps. Supports filtering by status and free-text search.
Inputs: limit, offset, search, status.
uselink_list_foldersA
List folders in a project. Pass parent_folder_id to list children of a specific folder; omit it to list folders at the project root. Returns folders plus a parent_breadcrumb for navigation.
Inputs: project_id (required), parent_folder_id.
uselink_list_projectsA
List projects the active PAT can see. Workspace-scoped tokens see projects in that workspace; personal tokens see the user's personal projects. Returns id, name, slug, default flag, archive state, document count.
Inputs: limit, offset, include_archived.
uselink_move_documentA
Move a document into a different project and/or folder. Pass project_id (required) plus an optional folder_id; omit folder_id to land at the project root.
Inputs: project_id (required), document_id (required), folder_id.
uselink_move_folderA
Re-parent a folder. Omit parent_folder_id to move the folder to the project root, or pass a folder id to nest under it.
Inputs: id (required), parent_folder_id.
uselink_move_project_to_workspaceB
Move a personal project into a workspace.
Inputs: project_id (required), workspace_id (required).
uselink_publish_documentA
Publish a uselink document. Snapshots the current draft into the published version and makes it accessible via the public URL. Returns the document with its public URL.
Inputs: id (required).
uselink_publish_with_assetsA
One-shot publish: create a draft document, upload every local referenced in the HTML as an asset, rewrite the HTML to point to CDN URLs, save the rewritten HTML to the document, and publish it. Returns the public URL plus a list of assets uploaded and any rewrites applied. Use this when you have an HTML document with relative image paths and want to publish it to uselink in a single step.
Inputs: html (required), title, assets_dir.
uselink_read_documentA
Read the full content of a uselink document by id OR slug (exactly one is required). Returns title, content, format, published status, and metadata.
Inputs: id, slug.
uselink_read_folderA
Read a single folder by id, including doc / live / draft counts.
Inputs: id (required).
uselink_read_projectB
Read a single project by id.
Inputs: id (required).
uselink_remove_project_from_workspaceA
Remove a project from its workspace and return it to the user's personal projects.
Inputs: project_id (required).
uselink_rename_project_slugB
Rename a project's URL slug. The old slug stops resolving immediately.
Inputs: id (required), new_slug (required).
uselink_reply_commentA
Post a reply to an existing comment thread on a uselink document. Replies are nested under the parent comment.
Inputs: body (required), document_id (required), parent_comment_id (required).
uselink_resolve_commentA
Mark a comment thread on a uselink document as resolved.
Inputs: comment_id (required).
uselink_search_documentsA
Free-text search across documents in the workspace bound to the active PAT. Thin wrapper over uselink_list_documents with the search field set.
Inputs: query (required), limit, offset.
uselink_set_default_projectA
Make this the user's default project. Newly created documents (when no explicit project is given) land here.
Inputs: id (required).
uselink_set_url_handleA
Set the user's public URL handle. Required once before publishing the first document. Call this when publish returns USERNAME_REQUIRED. Handle format: 3-30 lowercase letters/digits/hyphens (no leading/trailing hyphen). Returns the updated user.
Inputs: handle (required).
uselink_unarchive_projectB
Restore a previously archived project.
Inputs: id (required).
uselink_unpublish_documentA
Unpublish a uselink document, removing it from public access. The draft is preserved.
Inputs: id (required).
uselink_update_documentA
Update an existing uselink document's title, content, or format. Only provided fields are changed. This updates the draft only — call uselink_publish_document to make changes public.
Inputs: id (required), title, format, content.
uselink_update_folderA
Update a folder's name, slug, or color. Only provided fields change.
Inputs: id (required), name, slug, color.
uselink_update_projectA
Update a project's name and/or slug. Only provided fields change.
Inputs: id (required), name, slug.
uselink_upload_assetA
Upload a single image or file from the local filesystem and attach it to a uselink document. Returns the asset with its CDN URL. Use the returned URL in your document's HTML/Markdown.
Inputs: file_path (required), document_id (required).
uselink_upload_zipA
Upload a zip archive containing an HTML page and its referenced assets. The server extracts the zip, stores every asset, rewrites references to CDN URLs, and returns the rewritten HTML plus the list of assets created and skipped.
Inputs: zip_path (required), document_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 34 tools
Most tools are distinct, but uselink_search_documents is a thin wrapper over uselink_list_documents, and uselink_rename_project_slug duplicates slug updating via uselink_update_project. uselink_publish_with_assets also overlaps with the create+upload+publish workflow, creating mild selection ambiguity.
Every tool follows a consistent uselink_<verb>_<noun> pattern in lowercase snake_case. Verbs clearly indicate actions (list, create, update, publish, delete) and resources are consistent across documents, projects, folders, comments, and assets. There is no stylistic mixing.
At 34 tools, the surface is heavy. While the domain spans multiple resources, the count is inflated by redundant conveniences (search vs list, rename vs update, publish_with_assets) and exceeds the recommended range for a coherent toolset.
Core document (CRUD + publish/unpublish), project, and folder management are well covered. However, comments lack a create tool—only list, reply, and resolve—so new threads cannot be started. Also missing are comment deletion or unresolve and asset deletion, which are notable gaps for a collaboration platform.
Maintenance
Related MCP Connectors
Publish and share access-controlled Markdown documents from any MCP-enabled AI tool.
Hosted MCP server for AI agents to post to LinkedIn profiles and X and upload to YouTube.
MCP Server for Web2MD — convert URLs to Markdown from Claude Desktop, Cursor, etc.
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Related MCP Servers
AlicenseBqualityCmaintenanceMCP (Model Context Protocol) server for Lindo AI — create websites, pages, and blog posts with AI directly from Claude, Cursor, Kiro, Windsurf, and other MCP-compatible tools.50125 npm3MIT- AlicenseBqualityDmaintenanceMCP server for Contextium — pipe team SOPs, coding standards, agents, skills, and workflows directly into Claude, Cursor, and other AI coding assistants.67MIT
- AlicenseAqualityCmaintenanceMCP server for AI-powered image, audio, and video generation, enabling media creation directly from Claude, Cursor, and other MCP clients.1144 npmMIT
- AlicenseAqualityDmaintenanceMCP server for integrating Confluence with AI agents, enabling search, read, and retrieval of documentation, plus syncing and pushing markdown files.7404 npmMIT