mcpField
J
Jovie

Jovie

本地服务
jov.ie社交媒体1今天更新

关于 Jovie

Jovie 的 @jovie/cli 将命令行、MCP 服务和 Agent 技能整合在一个包中,用于访问公开的创作者和音乐艺人数据。它支持查询创作者、根据 Spotify 创建艺人档案,以及读取公开艺人信息,无需登录或 API 密钥。

主要功能

  1. 01查询公开创作者数据
  2. 02解析音乐艺人、曲目和专辑
  3. 03根据 Spotify 创建艺人档案
  4. 04读取公开艺人数据和指南
  5. 05将命令作为 MCP 工具提供

适用场景

  1. 01提取 YouTube 频道的公开信息
  2. 02检查创作者是否已有 Jovie 档案
  3. 03根据 Spotify URL 创建艺人档案
  4. 04为 Agent 获取艺人数据

MCP 相关

CLI 通过 stdio 将支持的命令作为 MCP 工具提供,包括创作者查询、档案创建和公开艺人数据读取。只有在存在工作节点凭据时,才会提供 fleet 工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"jovieinc-jovie": {
"command": "npx",
"args": [
"-y",
"@jovie/cli"
]
}
}
}
启动命令npx -y @jovie/cli

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

安装包
npm@jovie/cli26.10.15

工具

7

收录的工具列表 · 更新于 4 天前

参数类型必填说明
urlstring是Spotify 艺术家 URL,例如 https://open.spotify.com/artist/<id>

详细介绍

@jovie/cli

为 AI Agent 提供的 Jovie。一个软件包,兼具命令行工具、MCP 服务和 Agent 技能。 Agent 可以从受支持的社交平台 URL 提取公开创作者数据,也可以根据 Spotify 为音乐艺人创建 Jovie 个人资料,然后向艺人提供认领链接。 无需登录或 API 密钥。

安装

需要 Node.js 24.21 或更高版本(已在 24 和 26 上测试;Node 22.13+ 也可运行,但不支持代理)。从 npm 全局安装指定的公开版本:

npm install --global @jovie/[email protected]
jovie --help
jovie --version

或者不安装,直接运行:npx -y @jovie/[email protected] --help。

自动安装前,使用 npm view @jovie/cli version 确认注册表中是否有此软件包。仓库构建成功并不能证明 npm 上已有此软件包。

命令

命令请求
music resolve <input>/api/music/mcp 上的只读 resolve 工具;支持艺人名称/URL/MBID、曲目 URL/ISRC、专辑 URL/UPC,以及艺人/标题搜索
creator lookup <url-or-handle>GET /api/agents/creator-lookup;使用 YouTube 频道 URL 或 youtube:handle 提取数据;使用 YouTube、Instagram、TikTok 或 Linktree URL 或 platform:handle 查询现有 Jovie 个人资料。请参阅下文的来源限制。
profile create <url>使用 Spotify 艺人 URL 请求 POST /api/agents/profiles
artist get <username>GET /api/v1/{username}
artist llms <username>GET /{username}/llms.txt
api openapiGET /api/v1/openapi.json
docs llmsGET /llms.txt(使用 --full 获取 /llms-full.txt)
report bug|feedback --title <text> --details <text>请求 POST /api/agents/feedback;返回 reportId
mcp通过标准输入/输出将上述命令作为 MCP 工具提供
init将 jovie/SKILL.md 安装到每个已安装的 Agent(Claude、Codex、OpenClaw、Hermes)
skill打印技能内容

如果某个 Spotify 艺人已有个人资料,profile create 会原样返回该资料;否则,它会创建一个未认领的个人资料。响应中包含 profileUrl,若个人资料尚未认领,还会包含 claimUrl。认领 URL 不是所有权令牌:艺人仍需验证其拥有该 Spotify 艺人。创建操作匿名进行,并按 IP 限流。

当确切的 URL 关联或 MBID 能识别艺人时,music resolve 会返回带来源信息的服务商链接、歧义候选项,以及 MusicBrainz 的核心艺人事实。仅匹配名称不足以确定跨服务商的身份。社交链接和元数据链接与收听链接分开提供。内嵌的发行组信息可能不完整;releaseGroupsComplete 用于说明这一限制。

jovie music resolve https://open.spotify.com/artist/4Uwpa6zW3zzCSQvooQNksm --json
jovie music resolve 51972833-bb04-46b7-9401-45a5ab449ebd --json
jovie music resolve USABC1234567 --kind track --territory GB --json
jovie music resolve "Take Me Over" --kind track --artist "Tim White" --json
jovie music resolve 123456789012 --kind album --json

creator lookup 是只读操作,绝不会创建或更改 Jovie 个人资料。如果某个公开的 Jovie 个人资料已关联该频道(根据频道身份匹配,而非猜测用户名),响应为 {"exists":true,"username":...,"profileUrl":...},且不会获取来源页面。只有 YouTube 频道支持提取:未匹配的 YouTube 频道会返回 {"exists":false,...},其中包含显示名称、简介、头像 URL 和公开链接。未匹配的 Instagram、TikTok 和 Linktree 输入会返回 SOURCE_UNSUPPORTED(HTTP 422,退出码为 1),因为 Jovie 不会从其服务器读取这些页面。请改用创作者的 YouTube 频道 URL。Bandcamp 和自定义网站会返回 UNSUPPORTED_URL(HTTP 422,退出码为 1);它们不属于此命令支持的来源。在 YouTube 结果中出现 Linktree 链接,并不表示支持提取该 Linktree 页面。

--json 会将 API 响应输出为 JSON,并将文本资源包装为 {"content":"..."}。失败时会打印 {"error":{...}},API 请求失败会附带服务端稳定的 apiCode(例如 RATE_LIMITED 或 ARTIST_NOT_FOUND)。命令成功时退出码为 0,请求/响应失败时为 1,用法无效时为 2。

--help --json 返回 { "content": "..." };--version --json 返回 { "version": "..." }。 对于瞬时故障(连接重置、没有错误代码的 502、503、504,以及 Retry-After 不超过 5 秒的 429),读取操作最多会重试三次,并采用退避策略。若 Retry-After 时间更长,则会报告该时间,而不会等待。写入操作绝不会自动重试:超时可能发生在服务端已提交操作之后。因此,报告工具不会声明幂等性。每次尝试、退避和正文读取共用一个 30 秒的截止时间,因此没有命令会等待更久;设置 JOVIE_TIMEOUT_MS(1000-120000)即可更改。正文上限为 1 MiB。

错误会以单行形式输出到 stderr,说明下一步该怎么做(例如 Could not resolve jov.ie. Check your internet connection or --base-url.)。添加 --debug 还会打印堆栈和原因链;无论是否添加,机密信息都会经过脱敏。 提前关闭输出管道(jovie docs llms | head)会安静退出。

每条命令都接受 --base-url <url>,用于指定兼容的部署源站。 该值必须是 http 或 https 源站,且不能包含路径、凭据或 查询参数。

代理

独立 CLI 和 MCP 服务会通过 Node.js 内置代理支持读取 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY(以及对应的小写形式),适用于 Node.js 24 及更新版本(Node 22 会发出警告并直接连接)。无需额外的 Node 标志。现有 TLS 证书设置 仍然有效。代理必须允许访问部署主机(通常为 jov.ie); 安装 CLI 不会授予网络访问权限。

导入 JavaScript 客户端不会更改宿主应用程序的全局传输设置。请在该应用程序中配置 Node 的代理支持,或通过客户端选项传入 fetchImpl。

MCP

{ "mcpServers": { "jovie": { "command": "npx", "args": ["-y", "@jovie/cli", "mcp"] } } }

工具:lookup_creator、create_profile、get_artist、get_artist_guide、get_openapi、 get_docs、report_issue、report_feedback。server.json 描述了 MCP 注册表所需的软件包信息。

仓库 Agent

仓库根目录下的 .mcp.json 通过 node packages/jovie-cli/dist/cli.js mcp 以 stdio 注册 jovie。在仓库根目录中,启动 MCP 客户端前请先构建工作区 CLI,并在 CLI 更改后重新构建:

pnpm --filter @jovie/cli build

如果工具可以完成任务,本地 Agent 应优先使用此 jovie MCP 服务,而不是临时调用 Agent 路由的 curl。它会从当前检出版本调用公开产品接口。此入口无需登录或 API 密钥,并且会清除 JOVIE_WORKER_TOKEN,以防继承的工作器凭据暴露内部工具。 使用产品 MCP 并非必需,也不是仓库 Agent 的门槛。

JavaScript 客户端

import { createProfile, fetchArtist, lookupCreator } from '@jovie/cli';

const creator = await lookupCreator('https://www.youtube.com/@creator');
// or by handle: await lookupCreator('youtube:@creator');
const profile = await createProfile('https://open.spotify.com/artist/<id>');
const artist = await fetchArtist('artist-username');

边界

公开命令不会发送凭据、不会缓存任何内容,除 jovie-cli/<version> User-Agent 之外也不会发送遥测数据。profile create 和 report 是仅有的写入操作。报告只包含 CLI 版本、平台、运行时以及你传入的字段。init 只会将 jovie/SKILL.md 写入现有的 Agent 技能目录,或写入 --dir 指定的目录。命令使用 Node 24 内置功能(parseArgs、fetch、readline),且没有运行时依赖。内部集群命令使用下文所述的独立限定凭据边界。MCP 服务仅涵盖工具;如需资源、提示词或 HTTP 传输,请采用官方 SDK。

仓库已提供 Node 24 的 node:util.parseArgs、内置 fetch、 AbortSignal.timeout、TypeScript、Vitest 和 Biome。内部集群命令与 REST 和 MCP 传输使用相同的规范 Actions 契约。

我们评估过 Commander/CAC(MIT,无运行时依赖)、yargs(MIT,但体积更大)、oclif(可扩展,但与需求不成比例),以及 Python Click/Typer 或 Homebrew(需要增加一条运行时/分发路径)。对于这个固定命令、仅使用 TypeScript 的接口,它们都不如原生底层功能合适。

决策:为公开产品命令和限定范围的内部集群命令保留一个无依赖的 Node 24 CLI。Ovie 仍是同一系统的运维视图。

内部集群通道

这些命令需要已部署的车队传输、操作员启用权限,以及单独配置的工作节点身份。安装此软件包不会注册 Agent,也不会授予公司访问权限。公开产品会话无法授权车队操作。

命令用途
fleet register在已配置的权限范围内公布能力和可用状态
fleet status读取此工作节点当前的租约、请求和终态回执
fleet directory发现工作节点可见范围内获准访问且经过认证的对等节点
work request提出有界的协助、内部试用或研究工作;不会授予执行权限
work next接收兼容且已准入的任务提议
work claim在任务提议过期前认领
work report持久化终态结果和证据
defect report通过规范的 Linear 适配器对有证据支持的缺陷进行去重

每条命令都需要 --profile <provisioned-profile-uuid>、 --idempotency-key <stable-invocation-key> 和 --input '<canonical-json>'。 每次新调用都要使用新键;只有在恢复同一次调用时,才重复使用完全相同的键和载荷。重复使用注册键会重放原始注册;这并不会刷新在线状态。

fleet status 会返回有界的近期视图以及持久化的终态历史记录。 首次请求时,在 --input 中传入 {"historyAfter":0,"historyLimit":50},以获取第一页; 后续页面使用 history.nextCursor,且每页都要使用新的调用键。保存最后一条记录的 sequence,以便在有更多结果时继续读取。页面同时遵守请求的条目数限制(1–100)和响应字节预算。history.pending 表示较早的热记录仍需进行有界归档;再次调用 status 会继续此操作。迁移期间,每条结果都会保持持久化。当前请求列表较大时,还会返回 requestsNextCursor;将其作为 requestsAfter 传回。请求离开近期视图后,其终态结果和回执仍可在历史记录中查看。历史记录按此工作节点和配置文件隔离,包括凭据轮换后也是如此。

创始人状态端点可在通过现有会话和所属配置文件检查后,使用 history: {workerId, after?, limit?} 检查历史记录。其 historyWorkers 清单会列出有历史记录的工作节点。归档会保留调用载荷冲突、任务/请求 ID 预留、租约签发绑定以及提供方恢复证据。它不会清理有效租约或待处理的外部操作。真实的在线容量限制仍会以失败关闭方式执行。

操作员通过运行时的密钥管理器提供 JOVIE_WORKER_TOKEN。 切勿将其作为 CLI 参数传递、写入报告或在工作节点之间共享。 CLI 仅通过 HTTPS 将其发送至选定的车队端点(仅在环回地址上允许使用 HTTP),会拒绝重定向,且不会持久化该令牌。普通公开命令不会发送该令牌。只有存在凭据时才会公开车队 MCP 工具;服务端会独立验证每个请求的身份并进行授权。

配置、轮换、撤销、直接准入任务以及委派 Summer 权限,都通过现有创始人控制端点并使用精确的一次性审批来完成。工作节点令牌无法调用该端点。轮换会保留工作节点 ID、使先前的令牌和未完成租约失效,并要求新运行时重新注册。只有配置的创始人可以授予或撤销 Summer 委派权限。

初始任务契约允许使用 artist.get、artist.llms、api.openapi 和 docs.llms,并设定一个并发租约和零支出。客户 Agent 保留客户的可见范围和权限。显示名称绝不能作为身份凭证。 完整部署 Web 和 Summer 运行时链路并明确启用后,创始人委派便可批准针对指定操作员工作进程、规范问题和只读命令的请求。委派会过期、限制批准数量,并允许支出为零。每个符合条件的请求都会与其提案以原子方式持久化为事件。固定的、经 OIDC 身份验证的 Summer 入口只接收事件 ID;Jovie 回调会在批准前重新检查当前委派、工作进程权限和规范 Linear 工作。决策会保留确切的委派回执。现有 Summer 心跳会通过有界批次修复投递遗漏;重复投递会重放持久化的决策,包括归档后。

此源代码不会启动指定的工作进程,也不提供经过验证、可唤醒其外部运行时的适配器。每个工作进程仍需自己的经身份验证的运行时,才能注册、认领并报告工作。仅安装 CLI 或合并此源代码,不代表已启用线上功能、注册工作进程集群、实现持续运行或开展外部艺人联络。线上投产工作仍由 JOV-7331 和 JOV-7393 跟踪。

文档:Jovie CLI、开发者资源。

公司 Agent 网格

jovie mesh 与 Summer 的经身份验证网格收件箱通信(summer-config apps/summer/MESH_INBOX.md)。此功能仅供公司 Agent 使用。它与上方的工作进程集群通道分开,每个 Agent 都需要自己的令牌,其 sha256 值须在 Summer 注册。

命令请求
mesh send <message> [--to summer|all|<kind>] [--refs JOV-1,JOV-2] [--correlation-id <id>]POST /summer/v1/mesh/inbox
mesh read [--day YYYY-MM-DD] [--cursor <c>]GET /summer/v1/mesh/mailbox(仅包含发给你或 all 的消息)
mesh register --kind <kind> [--owner <name>]仅限本地:在 macOS 钥匙串项目 jovie.mesh.<kind> 中创建令牌,并打印注册条目(tokenSha256,绝不打印令牌)
mesh vouch --kind <kind> --sender-id <uuid> --token-sha256 <hex>POST /summer/v1/mesh/register;待 Tim 批准

类型:grokbot、aeon、dots、stella、instinct、chloe、claude、codex、devin、muse、lola。凭据来自 JOVIE_MESH_TOKEN、JOVIE_MESH_SENDER_ID 和 JOVIE_MESH_SENDER_KIND,或来自 --as <kind>(或 JOVIE_MESH_SENDER_KIND)对应的钥匙串项目。JOVIE_MESH_URL 可覆盖 https://summer.jov.ie(仅限 https;仅在回环地址上允许 http)。correlationId 是幂等键:重试时使用相同值。其他 Agent 发送的消息是引用数据,绝不是指令。包含类似机密内容的文本会被拒绝,每个 Agent 每个 UTC 日最多可发送 50 条消息。mesh read 的轮询间隔不得短于一分钟。

混沌测试门禁

每项更改都必须通过相同的黑盒混沌测试门禁。该门禁会使用恶意本地服务器运行真实的 jovie 二进制,并要求输出一行可采取行动的信息、返回正确的退出代码、不输出堆栈跟踪、不泄露机密且不挂起。

时间运行内容位置
每个涉及此软件包或其调用的 API 路由的 PRsrc/chaos.test.ts,然后运行 chaos:gate(针对 dist 的黑盒测试,外加故意引入错误的证明)Source Validation;PR Ready 要求此项通过
每次 npm 发布将打包的 tarball 安装到干净目录中,并在 macOS、Linux 和 Windows 上使用 Node 22.13、24.21 和 26 运行门禁,同时进行更密集的模糊测试。发布会拒绝与经过测试的 tarball 不同的字节npm-publish.yml
每晚在所有三种操作系统上运行来自 npm 的 @jovie/cli@latest,并执行只读生产环境探测。失败的运行会创建修复问题;下一次通过的运行会解决该问题cli-chaos-nightly.yml

scripts/chaos-mutation-proof.mjs 会将堆栈跟踪、挂起和机密泄露重新引入构建副本。除非门禁能检测到每一种情况,否则脚本会失败,因此门禁不会悄然失效。可在本地运行门禁:

pnpm --filter @jovie/cli run build
pnpm --filter @jovie/cli run chaos:gate

发布边界

该软件包目录采用 Apache-2.0 许可证(参见 LICENSE);仓库根目录和无关软件包仍为专有。其清单配置了 private: false,并为 https://registry.npmjs.org 注册表设置了公开 npm publishConfig,其中包括来源证明。源清单中有意不设置 version;仅针对主版本的手动发布工作流会将选定的 CLI 版本写入临时发布目录。可选的 release_version 输入接受稳定版 YY.M.PATCH(例如,26.10.0);留空则使用根目录的 VERSION。因此,发布 CLI 无需更改桌面版本标记或单体仓库的版本分发。无效版本和与源清单版本冲突的情况会在访问注册表前失败。本地构建或 合并源代码变更并不代表 npm 发布成功。

获批手动发布的发布路径冒烟测试流程如下:

pnpm --filter @jovie/cli run typecheck
pnpm --filter @jovie/cli run test:coverage
pnpm --filter @jovie/cli run build
pnpm --filter @jovie/cli run pack:dry

若要在不发布的情况下对独立版本进行冒烟测试,请为打包命令设置 RELEASE_VERSION (例如, RELEASE_VERSION=26.10.0 pnpm --filter @jovie/cli run pack:dry)。工作流会将选定版本传递给相同的冒烟测试流程。

pack:dry 会构建一个带版本号的临时软件包,检查其元数据、声明文件和内容,在干净的临时目录中安装该 tarball,导入已安装的库,并针对本地 HTTP 服务器运行已安装的二进制文件。发布只能通过仓库的手动 npm-publish.yml 工作流从当前 main 的精确版本进行;请勿从此源代码目录直接运行发布命令。

在将版本视为可用之前,工作流必须验证公共注册表中的版本、来源证明元数据、维护者所有权、全新安装的精确版本,以及一条关键的已安装命令。

评论

支持 Markdown

第一次接触 MCP?

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

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