MCP YouTube Transcript
An MCP server retrieving transcripts of YouTube videos
作者による説明(英語の原文)
MCP server for Box admin-log analytics — external-sharing visibility, read-only
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"boxadm": {
"command": "uvx",
"args": [
"boxadm-mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add boxadm -- uvx boxadm-mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"boxadm": {
"command": "uvx",
"args": [
"boxadm-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"boxadm": {
"type": "stdio",
"command": "uvx",
"args": [
"boxadm-mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント shigechika で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.12.0)がレジストリに届いたのは11 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
An MCP server retrieving transcripts of YouTube videos
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
English | 日本語
MCP (Model Context Protocol) server that surfaces external file flow from a Box admin's point of view. It reads Box's enterprise event log (admin_logs) to highlight "who shares a lot with the outside" and "which files get accessed from outside" — an early-warning signal for leakage, not a general-purpose file browser.
Documentation: https://shigechika.github.io/boxadm-mcp/
Read-only: it never revokes shares, deletes files, or otherwise mutates anything — it only surfaces risk. This is a different tool from a general-purpose Box file MCP (the official Box MCP, or the claude.ai Box connector): those operate on a user's own files and cannot see enterprise events, which is exactly what this server is for.
Named after the admin-console viewpoint (boxadm = Box admin), sibling of gwsadm-mcp.
| Tool | Category | Description |
|---|---|---|
health_check | — | version + auth_mode + Box auth + admin_logs scope probe + configured domain allowlist. Reports needs-login when not yet authenticated (OAuth mode) |
recent_admin_events | Diagnostic | Raw recent enterprise events (for checking event types/fields). Supports manual pagination via stream_position |
external_access_events | Access (events, enterprise-wide) | Aggregates external DOWNLOAD/PREVIEW within a window: top external accessors, top externally-accessed files, share-link count. Pass created_by_logins for DLP tracing of a specific account |
external_collaborators | Exposure (enumeration) | Lists external collaborators (outside-org login or external invite email) |
public_shared_links | Exposure (enumeration) | Lists items shared with an open (anyone-with-the-link) share link |
top_external_sharers | Exposure (enumeration) | Ranks internal owners by external exposure (external collabs + public links) |
list_folder_items | One folder (ls) | Names, upload time, size, who uploaded, and a direct link per item, plus the folder's owner and path. Filter by uploader or upload-time window. Reads no file content |
read_file | One file (cat), opt-in | The text Box extracted from one file in a folder named by BOXADM_READ_FOLDER_IDS: spreadsheets as tab-separated cells, documents and PDFs as text. Not registered unless that variable is set; images and archives return metadata only |
get_user | Account state (lookup) | One account by its exact login: status, role, enterprise, quota, timestamps. Answers "is this account disabled?" without an admin console |
daily_brief | Combined | Morning summary combining access (events) and exposure (enumeration) |
Two modes, selected via BOX_AUTH_MODE:
oauth — OAuth 2.0 (user auth). An admin authorizes once in a browser; the refresh token keeps it running unattended after that.ccg — Client Credentials Grant (server-to-server). Simpler to run unattended if your Box tenant has an available server-authentication app slot.admin_logs (enterprise events) is readable in either mode, provided the authorizing/impersonated user is an admin and the app has the Manage enterprise properties scope.
http://localhost:8787/callbackadmin_logs). Add Read all files and folders too if you also want collaboration/share-link enumeration, and Manage users if you want the get_user lookup (each scope change requires re-consent via boxadm-mcp auth)BOX_AUTH_MODE=oauth etc., then run `boxadm-mcp auth` → authorize in the browser → a token cache is written to ~/.config/boxadm-mcp/token.json (chmod 600)# uv
uv pip install boxadm-mcp
pip install boxadm-mcp
Or from source:
git clone https://github.com/shigechika/boxadm-mcp.git
cd boxadm-mcp
uv sync
pip install -e .
| Variable | Required | Description |
|---|---|---|
BOX_AUTH_MODE | oauth / ccg (default ccg). Any other value falls back to ccg; health_check reports the mode in effect, so a typo shows up there as ccg rather than as what was typed | |
BOX_CLIENT_ID | ✓ | App Client ID |
BOX_CLIENT_SECRET | ✓ | App Client Secret |
BOX_ENTERPRISE_ID | ccg mode | Enterprise ID (CCG subject; not needed for oauth) |
BOX_OAUTH_REDIRECT_URI | oauth redirect. Default http://localhost:8787/callback | |
BOX_TOKEN_CACHE | oauth token cache path. Default ~/.config/boxadm-mcp/token.json | |
BOX_API_BASE | Default https://api.box.com | |
BOX_SCAN_CONCURRENCY | Parallel per-folder lookups in the enumeration scan. Default 8, clamped 1–32 | |
BOX_SCAN_DEADLINE | Soft wall-clock budget (seconds) for one enumeration scan. Default 45; 0/negative disables it. When hit, the scan returns a disclosed partial (capped=true) instead of running until the tool call times out | |
BOX_HTTP_TIMEOUT | Per-request HTTP timeout (seconds). Default 30. Lower it (with BOX_SCAN_DEADLINE) so one slow endpoint can't stretch the final in-flight scan batch past a gateway timeout | |
BOXADM_READ_FOLDER_IDS | Folders whose files read_file may read (comma-separated folder ids; 0 is refused). Unset: read_file is not registered. One bad entry turns it off and makes health_check degraded | |
BOX_ALLOWED_DOMAINS | ✓ | Internal email domains (comma-separated). No default — every address counts as external until you set this |
Keep secrets out of .mcp.json (e.g. in a local env file sourced before launch); .mcp.json itself can reference ${BOX_CLIENT_ID}-style variables and be safely committed.
external_access_events, and the access half of daily_brief) read the enterprise-wide events stream. Hitting max_events sets capped: true (oldest-first scan).max_folders/max_depth limits (surfaced via capped). Requires the Read all files and folders scope.BOX_SCAN_CONCURRENCY), since Box has no enterprise-wide collaboration listing — this widens how many folders finish inside a tool-call timeout, but coverage is still bounded by the caps. The read path retries 429 (honoring Retry-After) and transient 5xx with jittered backoff, so a passing throttle recovers instead of degrading coverage; a folder dropped by a per-folder API error that outlasts those retries (e.g. a persistent 403) is counted in fetch_errors: coverage is complete only when capped is false and fetch_errors is 0.public_shared_links skips collaboration calls entirely (optimization).capped flag discloses a truncated search, so a found: false from a truncated result reads as inconclusive rather than negative.To answer "what did this external account download": pass created_by_logins (comma-separated logins) to external_access_events. It keeps only that accessor's events and returns per-file detail (matched_events: item id/name, owner, size in bytes+GB, timestamp, event_type, whether it was via a share link).
external_access_events(since_hours=26, created_by_logins="someone@example.com")
events_matched (match count) instead of events_scanned (no running total is kept; use capped to judge coverage). capped: true means the window wasn't fully scanned — raise max_events.admin_logs API has no created_by query parameter, so this is a client-side filter (fetch_admin_events(created_by_logins=...)).list_folder_items)An ls, not a cat. Written for a help desk answering a submitted enquiry whose attachments land in a Box folder: instead of a human going to find that folder, the answer names the attachments and links straight to them. File content is never read, and no shared link is ever created — an existing one is reported because it is an exposure finding, not a convenience.
Who uploaded an item is not where you would look for it. For an upload made through a File Request, Box records no user at all: created_by and modified_by both read *"Anonymous User"*, and owned_by is the application's own service account — identical on every row. The only field carrying the submitter is uploader_display_name, and despite its name the value observed in practice was an email address. It is therefore matched as an opaque string (exact, case-insensitive) and never parsed or validated as an address. For a file uploaded by a signed-in user the reverse holds, so created_by is the fallback.
Ordering and time bounds are computed here rather than by Box:
sort as the second sort attribute — items order by type first, so a subfolder precedes every file regardless of date. Measured against a real folder, sort=date also matched neither created_at nor modified_at order, so it cannot honestly be presented as "newest".since / until are compared as instants, not text. Box stamps items in its own UTC offset while a caller asks in theirs, so a lexicographic comparison is wrong by that difference at every date boundary and silent about it. Both bounds must carry an offset; a bare date is refused rather than guessed.limit bounds what is RETURNED, not what is searched — a full page is fetched first, so an uploader's item is found even when it is not among the newest. Truncation is disclosed twice over, because they are different truths: returned vs matched is the caller's own limit, while capped means the folder holds more than one page and a miss is inconclusive rather than negative.
read_file, opt-in)The cat to list_folder_items' ls, for the same help desk: after listing an enquiry's attachments, read the one it is about. It is registered only when BOXADM_READ_FOLDER_IDS names one or more folders, and every call is refused unless Box reports the file's parent, or one of its ancestors, as one of those folders. The account behind this server can see far more than one use needs; this keeps the reader to the folders you named.
The text is Box's own extracted_text representation, so it needs only preview rights: nothing is downloaded or parsed here, and an account that may not download a file can still read it. Spreadsheets arrive as tab-separated cells, documents and PDFs as their text. A file Box has no text for (an image, an archive) returns its metadata with text: null; a file Box has not processed yet is waited for up to 20 seconds. The text is capped at max_chars (default 20000, at most 100000), with truncated saying whether it was cut.
The bearer token goes only to the configured API base and to Box's download hosts (https, a *.boxcloud.com name, a path un
冒頭だけを表示しています。続きはリポジトリで読めます