Skip to main content
Glama
licc168

htmltolink-mcp

by licc168

htmltolink-mcp

Deploy any HTML project to a live public URL in seconds — directly from Cursor, Claude Code, or any MCP-compatible AI agent.

No server. No config. No build pipeline. Just one command and you get a shareable link.

Quick Start

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "htmltolink": {
      "command": "npx",
      "args": ["-y", "htmltolink-mcp"]
    }
  }
}

Then just tell Cursor: "Deploy this project" — it will package your files, upload them, and return a live URL.

Claude Code

Add to .mcp.json in your project root:

{
  "mcpServers": {
    "htmltolink": {
      "command": "npx",
      "args": ["-y", "htmltolink-mcp"]
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "htmltolink": {
      "command": "npx",
      "args": ["-y", "htmltolink-mcp"]
    }
  }
}

Related MCP server: deloc-mcp

Available Tools

Tool

Description

deploy

Package and deploy a project directory to htmlto.link

status

Check existing deployment info from .htmltolink.json

Authentication (Optional)

By default, deployments are anonymous and temporary (24 hours). The agent automatically saves update credentials so it can refresh the same link.

For persistent managed pages, set your API token:

{
  "mcpServers": {
    "htmltolink": {
      "command": "npx",
      "args": ["-y", "htmltolink-mcp"],
      "env": {
        "HTML_TO_LINK_TOKEN": "your-api-token"
      }
    }
  }
}

Get your token from htmlto.link/settings.

How It Works

  1. Agent calls the deploy tool with your project directory

  2. MCP server zips the project (excluding node_modules, .git, secrets, etc.)

  3. Uploads to https://htmlto.link/api/skill/deploy

  4. Saves deployment info to .htmltolink.json (auto-added to .gitignore)

  5. Returns the live public URL

Use Cases

  • 🚀 AI-generated pages: Cursor/Claude builds a landing page → instant live URL

  • 📋 Client demos: Share a prototype link in seconds

  • 🧪 Quick previews: Test responsive design on real devices

  • 📦 Portfolio pieces: Host experiments without setting up hosting

Using .cursorrules (Alternative)

If you prefer prompt-based integration over MCP, copy the .cursorrules file from this repo into your project root. The agent will follow the instructions to deploy via the HTTP API directly.

License

MIT

Available Tools

2 tools
deployA

Deploy the current project to htmlto.link and get a live public URL. Packages the project as ZIP, uploads it, and returns a shareable link. Supports --next mode for automatic Next.js static export.

ParametersJSON Schema
NameRequiredDescriptionDefault
nextNoIf true, auto-detect Next.js project, run static export build, and deploy the out/ directory
titleNoTitle for the deployed page (defaults to folder name)
entry_fileNoThe entry HTML file (relative to project root)index.html
project_dirYesAbsolute path to the project directory to deploy

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the deployment process: packages the project as ZIP, uploads it, and returns a shareable link. It also describes the --next mode behavior (auto-detects Next.js, runs static export, deploys out/). However, it does not mention authentication requirements, possible side effects like overwriting existing deployments, or rate limits, which are relevant for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and includes a second sentence for important process details. There is zero fluff, and every piece of information is relevant and necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description appropriately states that it returns a shareable link. It covers the deployment flow, the --next mode, and all parameters are documented in the input schema. It lacks some edge-case information like error handling or whether the URL is stable across deployments, but overall it is sufficiently complete for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with detailed descriptions for all four parameters. The description itself does not add any parameter-specific semantics beyond what the schema already provides; it only mentions 'next' mode in general terms, which is already captured in the schema for the 'next' property.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Deploy the current project to htmlto.link and get a live public URL.' It also describes the process (packages ZIP, uploads, returns link) and distinguishes itself from the sibling 'status' by focusing on the deployment action rather than checking status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear when to use this tool: when you want to deploy a project and receive a live URL. It does not explicitly mention when not to use it or list alternatives, but its context is unambiguous compared to the only sibling 'status'. The mention of '--next mode' provides additional guidance for Next.js projects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusA

Check the deployment status of the current project by reading .htmltolink.json

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesAbsolute path to the project directory

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool reads a file (.htmltolink.json), implying a read-only operation. However, it does not specify permissions, error behavior if the file is missing, or return format. The phrase 'current project' is ambiguous relative to the required project_dir parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler, front-loading the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool lacks annotations and an output schema, and the description does not explain the return value shape or error conditions. The ambiguity between 'current project' and the required project_dir parameter could mislead an agent. While the tool is simple, critical details for invocation are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes project_dir. The description adds context by indicating that project_dir is used to locate .htmltolink.json, giving the parameter operational meaning beyond its type definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (Check), the target (deployment status), and the method (by reading .htmltolink.json). This distinguishes it from the sibling 'deploy' which is a mutation action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for verifying deployment state, which is a distinct context from the sibling 'deploy'. However, it does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observeddeploy
    • First observedstatus

TDQS

A4.2/5.0
Disambiguation5/5

The two tools are unmistakably distinct: 'deploy' triggers a deployment, while 'status' reads the deployment status. There is no overlap in their purposes or outcomes.

Naming Consistency4/5

Both names are concise, lowercase, and single-word, following a predictable command-style pattern. However, 'status' is a noun while 'deploy' is a verb, representing a minor inconsistency in part of speech.

Tool Count4/5

With only two tools, the server is minimal but well-aligned to its narrow purpose. It is slightly under the typical range, yet both tools are essential and justify their existence.

Completeness4/5

The core deployment workflow is covered: deploying and checking status. A setup or initialization tool could be useful, but the current surface does not present critical gaps for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Deloc — deploy static sites from AI coding agents. Say "deploy this to Deloc" in Claude Code or Cursor and get a live URL back without leaving your editor.
    4
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Deploy static HTML folders to permanent vibie.page URLs from Claude, Cursor, or any MCP client. One-line auto-install wires up the config, OAuth device-flow handles auth, and a folder marker lets repeat deploys skip the slug.
    4
    78
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Publishes HTML pages straight from your AI assistant to a shareable URL, then lets you manage them - update, list, search, fetch, and delete pages in a public or private workspace. Turns "share what I just made" into a single tool call from Claude, Cursor, or any MCP client.
    MIT

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/licc168/htmltolink-mcp'

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