mcpField
U
unlocalhost

unlocalhost

本地服务
github.com/info-arnav云与基础设施314 周前更新

关于 unlocalhost

unlocalhost 是供编码 Agent 使用的 MCP 服务,可将仓库中的应用部署为受访客名单保护的私有链接。它负责构建和登录校验,也支持自托管。

主要功能

  1. 01从仓库部署应用
  2. 02通过访客名单限制访问
  3. 03扫描部署中的已提交密钥
  4. 04使用 GitHub 或 Google 验证访客
  5. 05自托管服务

适用场景

  1. 01向指定评审者分享 Agent 构建的应用
  2. 02为已部署的原型提供私有访问

MCP 相关

将 unlocalhost 添加为 MCP 服务后,编码 Agent 可登录并部署应用,同时指定获准访问的人员。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"info-arnav-unlocalhost": {
"command": "npx",
"args": [
"-y",
"@unlocalhost/unlocalhost"
],
"env": {
"UNLOCALHOST_URL": "<UNLOCALHOST_URL>",
"UNLOCALHOST_TOKEN": "<UNLOCALHOST_TOKEN>"
}
}
}
}
启动命令npx -y @unlocalhost/unlocalhost
需要配置的环境变量
UNLOCALHOST_URLBase URL of the unlocalhost instance to talk to. Defaults to the hosted instance. Set this to point the tools at your own self hosted deployment.
UNLOCALHOST_TOKEN密钥API token. Normally written by the unlocalhost_login tool after you approve the device in a browser, so you should not need to set this by hand.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@unlocalhost/unlocalhost0.1.1

工具

7

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

unlocalhost

unlocalhost

将 localhost 变成只有你指定的人才能打开的链接。

内置登录功能,因此你无需编写任何身份验证代码,也无需接触任何服务器。

网站 · 文档 · MIT 许可 · 可自托管


问题

你的编码 Agent 可以编写整个应用,但无法托管它,因为托管需要服务器、域名、证书和登录系统。于是人们会选择最快的方式,而问题也就由此产生:没有登录功能的公开 URL、不小心提交的 API 密钥,或者由从未编写过身份验证的人在最后才匆忙添加的身份验证。

unlocalhost 填补了这一空缺。你只需对已经打开的 Agent 说一句话,就能获得一个带有访客名单的真实 URL。

you    deploy this and let [email protected] in

agent  pushed your code to a private repo
agent  building
agent  live at sarahs-todo.unlocalhost.tech
agent  [email protected] can sign in and open it

工作原理

  1. 将 unlocalhost 添加到编码 Agent,作为 MCP 服务,然后使用 GitHub 登录一次。
  2. 告诉 Agent 部署,并指定允许访问的人。
  3. 你的 Agent 使用你自己的 git 凭据推送代码。 unlocalhost 从不持有任何内容的写入权限。
  4. 我们以只读方式克隆代码,扫描已提交的密钥;如果发现任何密钥,就会拒绝继续,然后构建并运行应用。
  5. 访客使用 GitHub 或 Google 登录。我们会在请求到达你的应用之前,先将经过验证的邮箱地址与访客名单进行核对。

有何不同

隧道(ngrok)平台(Vercel)unlocalhost
关闭笔记本电脑后仍可使用否是是
默认私密否否是
需要你编写的身份验证代码全部全部无需
在你自己的服务器上运行否否是

快速开始

claude mcp add unlocalhost -- npx -y @unlocalhost/unlocalhost

或者在任意 MCP 客户端配置中:

{
  "mcpServers": {
    "unlocalhost": {
      "command": "npx",
      "args": ["-y", "@unlocalhost/unlocalhost"]
    }
  }
}

然后让你的 Agent 登录 unlocalhost 并进行部署。

自托管

托管服务运行的就是这份代码。没有任何保留内容,不会向外回传信息,也没有许可证检查。

git clone https://github.com/info-arnav/unlocalhost.git
cd unlocalhost/deploy
cp .env.example .env      # fill it in
docker compose --env-file .env run --rm migrate
docker compose --env-file .env up -d

你需要一个带有通配符 DNS 的域名、用于通配符 TLS 的 DNS 服务商 API 令牌、一个 GitHub App,以及一个 Google OAuth 客户端。完整的操作指南请参阅 docs/server-setup.md。

架构

internet :443 → Caddy → auth-gate /verify → activator → Dokku → your app
PackageJob
web落地页、登录界面、文档
server/gateway公共 API 入口、CORS、速率限制、请求 ID
server/services/auth-gateOAuth、会话,以及每次请求的允许名单检查
server/services/control-plane应用、共享、GitHub App、部署流水线
server/services/activator唤醒休眠的应用,并让闲置的应用重新休眠
server/services/mcp-serverAgent 使用的 unlocalhost npm 包
server/shared数据库、日志记录、加密、错误、会话

我们选择借用而非自行构建的组件:Dokku 和 Nixpacks 可将代码仓库转换为运行中的容器, Caddy 负责处理通配符 TLS。刻意将创新部分保持得很小。

安全

  • 在指定人员之前,应用均为私有。移除人员会立即撤销访问权限。
  • 每次部署都会扫描已提交的密钥;如果发现任何密钥,部署将被拒绝。
  • 请求到达应用之前,会在边缘层强制要求登录。
  • 环境变量在静态存储时使用 AES 256 GCM 加密。
  • 我们仅拥有只读访问权限,且只能访问你选择的仓库。

发现漏洞?请遵循 SECURITY.md,不要公开提交问题。

贡献

请先阅读 CONTRIBUTING.md。简而言之:每个后端模块都遵循 routes → controller → service → repository,代码不包含注释,也没有测试文件。通过运行程序进行验证。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。