Soundiiz MCP

Soundiiz MCP

An MCP server for Soundiiz that lets AI assistants inspect sync jobs and SmartLinks across streaming services, trigger syncs, and clean up stale links.

Category
访问服务器

README

<p align="center"> <img src="assets/logo.svg" alt="Soundiiz MCP logo" width="112" height="112" /> </p>

Soundiiz MCP

An MCP server for Soundiiz. Lets your AI assistant inspect your sync jobs and SmartLinks across streaming services, trigger syncs, and clean up stale links.

Built for Claude Desktop, OpenCode, and any other Model Context Protocol client.

Your API key stays on your machine. Curated tools on top of the Soundiiz User API so agents don't have to paginate through raw endpoints.

This project is unofficial and is not affiliated with Soundiiz.

Status

v0.1.0 — early. The Soundiiz User API is itself in BETA, so the surface this server wraps may shift. The 25-test mock suite exercises every curated tool, but the maintainer hasn't run it against a real Creator-plan account in the wild — if you're an early adopter, please try npm run smoke:live and file an issue if anything breaks.

What You Can Ask

  • Show me all my Soundiiz syncs and which ones are due to run next.
  • Summarize sync status: how many succeeded, how many failed, which platforms are involved.
  • Which syncs failed recently, and why?
  • Trigger sync #42 to run now.
  • List all my published SmartLinks and their shortcodes.
  • Show details for SmartLink "abc123": fallback URL, per-platform links, status.
  • Delete this stale draft SmartLink.

Writes and confirmations

The Soundiiz API exposes three write operations: delete sync, delete smartlink, and trigger sync. All three are callable, but each goes through a two-step confirm flow:

  1. The first call returns a confirmId and a recap of what would happen.
  2. Re-call the same tool with the same args plus that confirmId to execute. The token is single-use and bound to the tool name + arg hash.

Knobs:

  • writes.confirmDestructive = false — skip the confirm step (one-call writes).
  • writes.allow = false (or SOUNDIIZ_MCP_ALLOW_WRITES=false) — disable writes entirely.
  • syncs.allowlist / smartlinks.allowlist — restrict writes to specific IDs.

Auth and storage

Your API key is read from SOUNDIIZ_API_KEY, a local file, or the OS keychain (via keytar). It never leaves your machine except in Authorization: Bearer headers to api.soundiiz.com.

Logs go to stderr so stdout stays reserved for MCP protocol messages. Live smoke checks and LLM evals are opt-in and read gitignored fixture files.

Quick Start

Requirements:

  • Node.js 22 or newer.
  • A Soundiiz account on the Creator plan. The Soundiiz User API is currently in BETA and gated to Creator subscribers.
  • An MCP client such as Claude Desktop, OpenCode, or another MCP-compatible host.

Generate your personal API key at soundiiz.com/webapp/settings/api.

Install from source:

git clone https://github.com/BASIC-BIT/soundiiz-mcp.git
cd soundiiz-mcp
npm install
npm run build

MCP Client Config

Use the built server for day-to-day use. Replace the path with your local checkout.

{
  "mcpServers": {
    "soundiiz": {
      "command": "node",
      "args": ["<ABS_PATH_TO_REPO>/dist/bin/cli.js"],
      "env": {
        "SOUNDIIZ_API_KEY": "<YOUR_KEY>",
        "SOUNDIIZ_MCP_USER_AGENT": "your-name (email@example.com)"
      }
    }
  }
}

For active development, point at the TypeScript entrypoint instead:

{
  "mcpServers": {
    "soundiiz-dev": {
      "command": "npx",
      "args": ["tsx", "<ABS_PATH_TO_REPO>/src/index.ts"],
      "env": {
        "SOUNDIIZ_API_KEY": "<YOUR_KEY>",
        "SOUNDIIZ_MCP_USER_AGENT": "your-name (email@example.com)"
      }
    }
  }
}

Configuration

Defaults live in src/config/defaults.json. To override them, create a JSON config file and point to it with SOUNDIIZ_MCP_CONFIG_FILE.

Example soundiiz-mcp.config.json:

{
  "api": {
    "baseUrl": "https://api.soundiiz.com",
    "userAgent": "your-name (email@example.com)"
  },
  "auth": { "keyStore": "env" },
  "writes": { "allow": false, "confirmDestructive": true, "confirmTtlMs": 120000 },
  "syncs": { "allowlist": [] },
  "smartlinks": { "allowlist": [] },
  "rateLimit": { "perMinute": 60 },
  "cache": { "enabled": true }
}

Environment variables override the config file when set.

Common environment variables:

  • SOUNDIIZ_MCP_CONFIG_FILE: path to a JSON config file.
  • SOUNDIIZ_API_KEY: your personal Soundiiz User API key (Bearer token).
  • SOUNDIIZ_MCP_USER_AGENT: descriptive user agent. Include contact info when possible.
  • SOUNDIIZ_MCP_API_BASE: override the API base URL. Defaults to https://api.soundiiz.com.
  • SOUNDIIZ_MCP_LOG_LEVEL: debug, info, warn, or error.
  • SOUNDIIZ_MCP_KEY_STORE: env, file, or keychain.
  • SOUNDIIZ_MCP_KEY_FILE: file path when SOUNDIIZ_MCP_KEY_STORE=file.
  • SOUNDIIZ_MCP_ALLOW_WRITES: enable non-GET operations.
  • SOUNDIIZ_MCP_CONFIRM_DESTRUCTIVE: require a confirmation token for DELETE / trigger.
  • SOUNDIIZ_MCP_SYNC_ALLOWLIST: comma-separated list of sync IDs permitted for write actions.
  • SOUNDIIZ_MCP_SMARTLINK_ALLOWLIST: comma-separated list of smartlink IDs permitted for write actions.
  • SOUNDIIZ_MCP_ENABLE_RAW_CALL: enable the raw soundiiz_call tool. Disabled by default.
  • SOUNDIIZ_MCP_DISABLE_GENERATED_READ_TOOLS: disable auto-generated read tools.
  • SOUNDIIZ_MCP_DISABLE_GENERATED_WRITE_TOOLS: disable auto-generated write tools.

Tool Surface

Soundiiz MCP exposes three layers (mirroring the vrchat-mcp pattern):

  • Curated tools for common agent workflows: soundiiz_me, soundiiz_syncs_list, soundiiz_syncs_overview, soundiiz_syncs_due, soundiiz_sync_get, soundiiz_smartlinks_list, soundiiz_smartlinks_overview, soundiiz_smartlink_get, soundiiz_sync_trigger, soundiiz_sync_delete, soundiiz_smartlink_delete.
  • Auto-generated read tools named soundiiz_read_<operationId> for GET operations from the Soundiiz OpenAPI spec.
  • Auto-generated write tools named soundiiz_write_<operationId> for non-GET operations.

Local-only tools include:

  • soundiiz_auth_status — check whether a key is loaded and valid (calls /v1/me).
  • soundiiz_cache_invalidate for MCP-local cache control.

The generated catalog lives in docs/tools.md. The shorter usage guide lives in docs/tools-guide.md.

Optional Swagger UI

If you want a Swagger UI proxy for the MCP tools, use mcpo:

uvx mcpo --port 8000 --api-key "top-secret" -- node <ABS_PATH_TO_REPO>/dist/bin/cli.js

Then open http://localhost:8000/docs.

Development

Useful scripts:

  • npm run dev — run src/index.ts through tsx.
  • npm run build — type-check and emit to dist/.
  • npm run start — run the built server from dist/.
  • npm run lint, npm run typecheck, npm test — quality gates.
  • npm run check — lint + typecheck + test.
  • npm run mcp:status — check whether the configured key authenticates.
  • npm run mcp:list-tools, npm run mcp:call — local harness.
  • npm run smoke:live — opt-in live smoke matrix against the built server.
  • npm run sync:spec — refetch the Soundiiz OpenAPI spec from https://soundiiz.com/api/doc.
  • npm run generate:schemas — regenerate Zod schemas from specs/soundiiz-openapi.json.
  • npm run generate:tools-docs — regenerate docs/tools.md.

Project layout (planned):

  • src/index.ts — server bootstrap.
  • src/config/ — defaults and config loader.
  • src/auth/ — API key loading from env / file / keychain.
  • src/core/ — HTTP client, spec parser, generated tool registries.
  • src/services/ — domain services for syncs, smartlinks, user, cache.
  • src/schemas/ — shared Zod schemas for tool inputs and outputs.
  • src/generated/ — Zod schemas generated from the Soundiiz OpenAPI spec.
  • src/tools/ — MCP tool registration (curated + auto-generated + raw + auth + cache).
  • src/infra/ — logging.
  • src/utils/ — small helpers.
  • specs/soundiiz-openapi.json — vendored copy of the Soundiiz User API spec.
  • docs/ — architecture, tool inventory, evals, design notes, launch plan.

Testing And Evals

Local checks:

npm run check

Live smoke checks are opt-in and require a Creator-plan API key:

npm run build
SOUNDIIZ_API_KEY=... npm run smoke:live

Live E2E and LLM evals use gitignored local fixture files. See docs/evals.md.

Documentation

  • docs/tools.md — generated tool catalog with schemas.
  • docs/tools-guide.md — short human guide for the tool surface.
  • docs/architecture.md — codebase overview and data flow.
  • docs/curated-tools.md — curated tool charter and risk tiers.
  • docs/evals.md — smoke, LLM, and manual agent eval workflow.
  • docs/public-launch-plan.md — release awareness, registry, and launch-channel plan.
  • docs/design-notes.md — archived design notes and future-facing ideas.

License

MIT.

推荐服务器

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选