cubox-mcp

cubox-mcp

Enables interaction with Cubox through its CLI, allowing agents to manage bookmarks, highlights, and annotations via a single pass-through tool.

Category
访问服务器

README

cubox-mcp

A generic pass-through MCP server for the official cubox-cli. It exposes exactly one tool, cubox_cli, whose only parameter is args: string[] — the argv you'd type after cubox-cli on the command line. Everything the CLI can do, this MCP can do, forever, without code changes here.

Setup — no clone needed

Push this repo to GitHub, then the entire setup is a config entry. No npm publish, no npm account, no manual npm install step of your own — npx clones, installs, and runs it in one shot (and caches the result).

1. Log in once. Two ways to do this, your choice:

Zero-clone version — cubox-cli is itself an npm package, so npx runs it directly. You'll need to open the settings page yourself:

npx -y cubox-cli auth login
# → prompts you to open https://cubox.pro/web/settings/extensions,
#   enable the API Extension, copy your link, and paste it back in

Auto-open-browser version — needs the repo checked out just for this one step (there's no way to run an arbitrary script like login.js via npx <git-spec> — npx only runs a package's declared bin, nothing else inside it):

git clone git@github.com:YOUR_USERNAME/cubox-mcp.git
cd cubox-mcp && npm install
npm run login          # opens cubox.pro settings page in your browser
npm run login -- --cc  # cubox.cc (international)

Either way, you end up at the same interactive prompt: go to Extensions, enable the API Extension, copy your unique link (e.g. https://cubox.pro/c/api/save/abcd12345), paste it at the > prompt — the CLI parses the server and token out of it itself. This writes ~/.config/cubox-cli/config.json, which persists — you only do this once per machine.

There's no further automation possible here: unlike some MCP servers (e.g. Craft's), Cubox's backend doesn't expose an OAuth authorization server, only this static extension-link flow, so a "click to approve in browser" experience isn't something this wrapper can add on its own — login.js just saves you the trip to find the settings URL.

2. Push this repo to GitHub:

git remote add origin git@github.com:YOUR_USERNAME/cubox-mcp.git
git push -u origin main

3. Add it to mcphub's mcp_settings.json:

{
  "mcpServers": {
    "cubox": {
      "command": "npx",
      "args": ["-y", "github:YOUR_USERNAME/cubox-mcp"],
      "env": {
        "CUBOX_TOKEN": "your_token",
        "CUBOX_SERVER": "cubox.pro"
      }
    }
  }
}

That's the whole integration. npx recognizes the github:user/repo shorthand, clones it, runs npm install inside the clone (which pulls in cubox-cli as a declared dependency automatically), and runs the bin entry — no separate install step, no path to remember, no folder to keep around. Verified locally end-to-end (clone → install → MCP handshake → tool call) against a local git repo standing in for GitHub.

Repo must be public for a bare github:user/repo reference to work unauthenticated. For a private repo, whatever host runs npx needs its own git credentials configured (SSH key or a stored token) so the clone succeeds non-interactively.

Environment variables

All credentials are passed in via env; nothing is baked into the image and nothing is written to disk by this wrapper.

Variable Required Default Notes
CUBOX_TOKEN yes — The token from your Cubox API Extension link. Open https://cubox.pro/web/settings/extensions, enable the API Extension, copy the unique link (e.g. https://cubox.pro/c/api/save/abcd12345) — the last path segment (abcd12345) is the token. Required when mcphub runs on a different machine than where you logged in interactively; without it, cubox-cli calls return unauthenticated errors.
CUBOX_SERVER no cubox.pro Cubox server domain. Use cubox.pro for the China instance, cubox.cc for the international instance. Only meaningful together with CUBOX_TOKEN.
CUBOX_CLI_BIN no auto Override path to the cubox-cli binary. By default this wrapper resolves node_modules/.bin/cubox-cli (installed automatically as a dependency), falling back to a PATH lookup. Set this only if you have a custom build or a non-standard install location.
MCP_TRANSPORT no stdio stdio (default, for mcphub / Claude Desktop / local clients) or http (standalone Streamable HTTP server on $PORT, for containerized deployment — see "Optional: standalone container" below). mcphub uses stdio, so leave unset.
PORT no 3000 Only used when MCP_TRANSPORT=http. Ignored under stdio.

CUBOX_TOKEN and CUBOX_SERVER are read by the bundled cubox-cli itself, not by this wrapper — this MCP server has no idea what they mean, it just passes environment through to the spawned child process like any parent process does. No tokens are logged or persisted by this wrapper.

Alternative: publish to npm instead

If you'd rather use the plain npx -y cubox-mcp form (marginally faster, since npm's registry CDN is faster than a fresh git clone on every cache miss), the name cubox-mcp is currently unclaimed:

npm login
npm publish

npm pack --dry-run from this folder confirms the published tarball would be just index.js + package.json + README.md (~5 kB) — the files field in package.json excludes the dev-only test scaffolding. Not required though; the GitHub route above works just as well.

Why one tool instead of many

  • cubox-cli can add, remove, or rename sub-commands and flags any time — none of that is encoded in index.js, so nothing here goes stale.
  • The single flat { args: string[] } schema is also the simplest possible JSON Schema shape, which sidesteps client-side schema-validation quirks some MCP clients have with anyOf/oneOf/nested-object tool schemas.
  • Agents that don't know the current command surface can just call cubox_cli({ args: ["--help"] }) or cubox_cli({ args: ["card","--help"] }) to discover it live, the same way a human would.

What IS hard-coded (and why it's safe to be)

  • The global -o json flag, with a fallback to plain-text output if a given sub-command rejects it.
  • A shallow, syntactic guard against destructive operations: any call whose args contains delete/remove/rm is blocked unless it also contains a force/confirm flag (--force, --yes, -y, --confirm). This fails safe — if cubox-cli ever renames its delete command, the guard simply stops matching (delete calls pass straight through), it never starts blocking something new incorrectly.

Upgrading cubox-cli later

Nothing to do — npx resolves cubox-mcp's dependency on cubox-cli fresh from its declared version range each time the npx cache is rebuilt. To force an immediate refresh: npx clear-npx-cache (or just bump the cubox-cli version range in package.json and re-publish cubox-mcp).

Local development / testing without a real Cubox account

npm install
node test-client.js     # exercises tool-listing, pass-through, delete-guard
                         # against fake-cubox-cli.sh, no real credentials needed
npm run inspector        # interactive MCP Inspector over stdio

Optional: standalone container instead of npx

If mcphub can't reach the npm registry, or you'd rather not have it spawn a Node process at all, Dockerfile + entrypoint.sh in this repo package the same server behind a Streamable HTTP endpoint (MCP_TRANSPORT=http) that you register via a url entry instead of command/args. Most people won't need this — the npx setup above is simpler and works for the common case.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选