MCP YouTube Transcript
An MCP server retrieving transcripts of YouTube videos
作者による説明(英語の原文)
Search, read and publish X posts and manage users, lists and media via the X API v2.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET, MEDIA_ROOT, MCP_TRANSPORT, MCP_NAME, MCP_PATH, SERVER_PORT, SERVER_READ_TIMEOUT, SERVER_WRITE_TIMEOUT, LOG_MODE, MAX_IDLE_CONNS_PER_HOST, X_DEBUG, POSTS_MAX_QUERIES, POSTS_MAX_USERNAMES, POSTS_MAX_IDS, POSTS_DEFAULT_RESULTS, POSTS_MAX_RESULTS, POSTS_DEFAULT_DAYS, POSTS_MAX_DAYS, POSTS_DEFAULT_TIMEOUT_MS, POSTS_MIN_TIMEOUT_MS, POSTS_MAX_TIMEOUT_MS, USERS_MAX_USERNAMES, USERS_MAX_IDS, USERS_DEFAULT_RESULTS, USERS_MAX_RESULTS, USERS_DEFAULT_TIMEOUT_MS, USERS_MIN_TIMEOUT_MS, USERS_MAX_TIMEOUT_MS, LISTS_DEFAULT_RESULTS, LISTS_MAX_RESULTS, LISTS_DEFAULT_TIMEOUT_MS, LISTS_MIN_TIMEOUT_MS, LISTS_MAX_TIMEOUT_MS, MEDIA_CHUNK_BYTES, MEDIA_POLL_INTERVAL_MS, MEDIA_DEFAULT_TIMEOUT_MS, MEDIA_MIN_TIMEOUT_MS, MEDIA_MAX_TIMEOUT_MS「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
リンク先は作者自身のファイルです。私たちが置いたり再パッケージしたりしたものではありません。ファイルを開くと、Claude Desktopがインストールします。
ターミナルでこれを実行します
claude mcp add x --env X_API_KEY=your-value --env X_API_KEY_SECRET=your-value --env X_ACCESS_TOKEN=your-value --env X_ACCESS_TOKEN_SECRET=your-value --env MEDIA_ROOT=your-value --env MCP_TRANSPORT=your-value --env MCP_NAME=your-value --env MCP_PATH=your-value --env SERVER_PORT=your-value --env SERVER_READ_TIMEOUT=your-value --env SERVER_WRITE_TIMEOUT=your-value --env LOG_MODE=your-value --env MAX_IDLE_CONNS_PER_HOST=your-value --env X_DEBUG=your-value --env POSTS_MAX_QUERIES=your-value --env POSTS_MAX_USERNAMES=your-value --env POSTS_MAX_IDS=your-value --env POSTS_DEFAULT_RESULTS=your-value --env POSTS_MAX_RESULTS=your-value --env POSTS_DEFAULT_DAYS=your-value --env POSTS_MAX_DAYS=your-value --env POSTS_DEFAULT_TIMEOUT_MS=your-value --env POSTS_MIN_TIMEOUT_MS=your-value --env POSTS_MAX_TIMEOUT_MS=your-value --env USERS_MAX_USERNAMES=your-value --env USERS_MAX_IDS=your-value --env USERS_DEFAULT_RESULTS=your-value --env USERS_MAX_RESULTS=your-value --env USERS_DEFAULT_TIMEOUT_MS=your-value --env USERS_MIN_TIMEOUT_MS=your-value --env USERS_MAX_TIMEOUT_MS=your-value --env LISTS_DEFAULT_RESULTS=your-value --env LISTS_MAX_RESULTS=your-value --env LISTS_DEFAULT_TIMEOUT_MS=your-value --env LISTS_MIN_TIMEOUT_MS=your-value --env LISTS_MAX_TIMEOUT_MS=your-value --env MEDIA_CHUNK_BYTES=your-value --env MEDIA_POLL_INTERVAL_MS=your-value --env MEDIA_DEFAULT_TIMEOUT_MS=your-value --env MEDIA_MIN_TIMEOUT_MS=your-value --env MEDIA_MAX_TIMEOUT_MS=your-value -- docker run -i --rm -e X_API_KEY -e X_API_KEY_SECRET -e X_ACCESS_TOKEN -e X_ACCESS_TOKEN_SECRET -e MEDIA_ROOT -e MCP_TRANSPORT -e MCP_NAME -e MCP_PATH -e SERVER_PORT -e SERVER_READ_TIMEOUT -e SERVER_WRITE_TIMEOUT -e LOG_MODE -e MAX_IDLE_CONNS_PER_HOST -e X_DEBUG -e POSTS_MAX_QUERIES -e POSTS_MAX_USERNAMES -e POSTS_MAX_IDS -e POSTS_DEFAULT_RESULTS -e POSTS_MAX_RESULTS -e POSTS_DEFAULT_DAYS -e POSTS_MAX_DAYS -e POSTS_DEFAULT_TIMEOUT_MS -e POSTS_MIN_TIMEOUT_MS -e POSTS_MAX_TIMEOUT_MS -e USERS_MAX_USERNAMES -e USERS_MAX_IDS -e USERS_DEFAULT_RESULTS -e USERS_MAX_RESULTS -e USERS_DEFAULT_TIMEOUT_MS -e USERS_MIN_TIMEOUT_MS -e USERS_MAX_TIMEOUT_MS -e LISTS_DEFAULT_RESULTS -e LISTS_MAX_RESULTS -e LISTS_DEFAULT_TIMEOUT_MS -e LISTS_MIN_TIMEOUT_MS -e LISTS_MAX_TIMEOUT_MS -e MEDIA_CHUNK_BYTES -e MEDIA_POLL_INTERVAL_MS -e MEDIA_DEFAULT_TIMEOUT_MS -e MEDIA_MIN_TIMEOUT_MS -e MEDIA_MAX_TIMEOUT_MS ghcr.io/role1776/mcp-x:0.1.1動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"x": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"X_API_KEY",
"-e",
"X_API_KEY_SECRET",
"-e",
"X_ACCESS_TOKEN",
"-e",
"X_ACCESS_TOKEN_SECRET",
"-e",
"MEDIA_ROOT",
"-e",
"MCP_TRANSPORT",
"-e",
"MCP_NAME",
"-e",
"MCP_PATH",
"-e",
"SERVER_PORT",
"-e",
"SERVER_READ_TIMEOUT",
"-e",
"SERVER_WRITE_TIMEOUT",
"-e",
"LOG_MODE",
"-e",
"MAX_IDLE_CONNS_PER_HOST",
"-e",
"X_DEBUG",
"-e",
"POSTS_MAX_QUERIES",
"-e",
"POSTS_MAX_USERNAMES",
"-e",
"POSTS_MAX_IDS",
"-e",
"POSTS_DEFAULT_RESULTS",
"-e",
"POSTS_MAX_RESULTS",
"-e",
"POSTS_DEFAULT_DAYS",
"-e",
"POSTS_MAX_DAYS",
"-e",
"POSTS_DEFAULT_TIMEOUT_MS",
"-e",
"POSTS_MIN_TIMEOUT_MS",
"-e",
"POSTS_MAX_TIMEOUT_MS",
"-e",
"USERS_MAX_USERNAMES",
"-e",
"USERS_MAX_IDS",
"-e",
"USERS_DEFAULT_RESULTS",
"-e",
"USERS_MAX_RESULTS",
"-e",
"USERS_DEFAULT_TIMEOUT_MS",
"-e",
"USERS_MIN_TIMEOUT_MS",
"-e",
"USERS_MAX_TIMEOUT_MS",
"-e",
"LISTS_DEFAULT_RESULTS",
"-e",
"LISTS_MAX_RESULTS",
"-e",
"LISTS_DEFAULT_TIMEOUT_MS",
"-e",
"LISTS_MIN_TIMEOUT_MS",
"-e",
"LISTS_MAX_TIMEOUT_MS",
"-e",
"MEDIA_CHUNK_BYTES",
"-e",
"MEDIA_POLL_INTERVAL_MS",
"-e",
"MEDIA_DEFAULT_TIMEOUT_MS",
"-e",
"MEDIA_MIN_TIMEOUT_MS",
"-e",
"MEDIA_MAX_TIMEOUT_MS",
"ghcr.io/role1776/mcp-x:0.1.1"
],
"env": {
"X_API_KEY": "your-value",
"X_API_KEY_SECRET": "your-value",
"X_ACCESS_TOKEN": "your-value",
"X_ACCESS_TOKEN_SECRET": "your-value",
"MEDIA_ROOT": "your-value",
"MCP_TRANSPORT": "your-value",
"MCP_NAME": "your-value",
"MCP_PATH": "your-value",
"SERVER_PORT": "your-value",
"SERVER_READ_TIMEOUT": "your-value",
"SERVER_WRITE_TIMEOUT": "your-value",
"LOG_MODE": "your-value",
"MAX_IDLE_CONNS_PER_HOST": "your-value",
"X_DEBUG": "your-value",
"POSTS_MAX_QUERIES": "your-value",
"POSTS_MAX_USERNAMES": "your-value",
"POSTS_MAX_IDS": "your-value",
"POSTS_DEFAULT_RESULTS": "your-value",
"POSTS_MAX_RESULTS": "your-value",
"POSTS_DEFAULT_DAYS": "your-value",
"POSTS_MAX_DAYS": "your-value",
"POSTS_DEFAULT_TIMEOUT_MS": "your-value",
"POSTS_MIN_TIMEOUT_MS": "your-value",
"POSTS_MAX_TIMEOUT_MS": "your-value",
"USERS_MAX_USERNAMES": "your-value",
"USERS_MAX_IDS": "your-value",
"USERS_DEFAULT_RESULTS": "your-value",
"USERS_MAX_RESULTS": "your-value",
"USERS_DEFAULT_TIMEOUT_MS": "your-value",
"USERS_MIN_TIMEOUT_MS": "your-value",
"USERS_MAX_TIMEOUT_MS": "your-value",
"LISTS_DEFAULT_RESULTS": "your-value",
"LISTS_MAX_RESULTS": "your-value",
"LISTS_DEFAULT_TIMEOUT_MS": "your-value",
"LISTS_MIN_TIMEOUT_MS": "your-value",
"LISTS_MAX_TIMEOUT_MS": "your-value",
"MEDIA_CHUNK_BYTES": "your-value",
"MEDIA_POLL_INTERVAL_MS": "your-value",
"MEDIA_DEFAULT_TIMEOUT_MS": "your-value",
"MEDIA_MIN_TIMEOUT_MS": "your-value",
"MEDIA_MAX_TIMEOUT_MS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"x": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"X_API_KEY",
"-e",
"X_API_KEY_SECRET",
"-e",
"X_ACCESS_TOKEN",
"-e",
"X_ACCESS_TOKEN_SECRET",
"-e",
"MEDIA_ROOT",
"-e",
"MCP_TRANSPORT",
"-e",
"MCP_NAME",
"-e",
"MCP_PATH",
"-e",
"SERVER_PORT",
"-e",
"SERVER_READ_TIMEOUT",
"-e",
"SERVER_WRITE_TIMEOUT",
"-e",
"LOG_MODE",
"-e",
"MAX_IDLE_CONNS_PER_HOST",
"-e",
"X_DEBUG",
"-e",
"POSTS_MAX_QUERIES",
"-e",
"POSTS_MAX_USERNAMES",
"-e",
"POSTS_MAX_IDS",
"-e",
"POSTS_DEFAULT_RESULTS",
"-e",
"POSTS_MAX_RESULTS",
"-e",
"POSTS_DEFAULT_DAYS",
"-e",
"POSTS_MAX_DAYS",
"-e",
"POSTS_DEFAULT_TIMEOUT_MS",
"-e",
"POSTS_MIN_TIMEOUT_MS",
"-e",
"POSTS_MAX_TIMEOUT_MS",
"-e",
"USERS_MAX_USERNAMES",
"-e",
"USERS_MAX_IDS",
"-e",
"USERS_DEFAULT_RESULTS",
"-e",
"USERS_MAX_RESULTS",
"-e",
"USERS_DEFAULT_TIMEOUT_MS",
"-e",
"USERS_MIN_TIMEOUT_MS",
"-e",
"USERS_MAX_TIMEOUT_MS",
"-e",
"LISTS_DEFAULT_RESULTS",
"-e",
"LISTS_MAX_RESULTS",
"-e",
"LISTS_DEFAULT_TIMEOUT_MS",
"-e",
"LISTS_MIN_TIMEOUT_MS",
"-e",
"LISTS_MAX_TIMEOUT_MS",
"-e",
"MEDIA_CHUNK_BYTES",
"-e",
"MEDIA_POLL_INTERVAL_MS",
"-e",
"MEDIA_DEFAULT_TIMEOUT_MS",
"-e",
"MEDIA_MIN_TIMEOUT_MS",
"-e",
"MEDIA_MAX_TIMEOUT_MS",
"ghcr.io/role1776/mcp-x:0.1.1"
],
"env": {
"X_API_KEY": "your-value",
"X_API_KEY_SECRET": "your-value",
"X_ACCESS_TOKEN": "your-value",
"X_ACCESS_TOKEN_SECRET": "your-value",
"MEDIA_ROOT": "your-value",
"MCP_TRANSPORT": "your-value",
"MCP_NAME": "your-value",
"MCP_PATH": "your-value",
"SERVER_PORT": "your-value",
"SERVER_READ_TIMEOUT": "your-value",
"SERVER_WRITE_TIMEOUT": "your-value",
"LOG_MODE": "your-value",
"MAX_IDLE_CONNS_PER_HOST": "your-value",
"X_DEBUG": "your-value",
"POSTS_MAX_QUERIES": "your-value",
"POSTS_MAX_USERNAMES": "your-value",
"POSTS_MAX_IDS": "your-value",
"POSTS_DEFAULT_RESULTS": "your-value",
"POSTS_MAX_RESULTS": "your-value",
"POSTS_DEFAULT_DAYS": "your-value",
"POSTS_MAX_DAYS": "your-value",
"POSTS_DEFAULT_TIMEOUT_MS": "your-value",
"POSTS_MIN_TIMEOUT_MS": "your-value",
"POSTS_MAX_TIMEOUT_MS": "your-value",
"USERS_MAX_USERNAMES": "your-value",
"USERS_MAX_IDS": "your-value",
"USERS_DEFAULT_RESULTS": "your-value",
"USERS_MAX_RESULTS": "your-value",
"USERS_DEFAULT_TIMEOUT_MS": "your-value",
"USERS_MIN_TIMEOUT_MS": "your-value",
"USERS_MAX_TIMEOUT_MS": "your-value",
"LISTS_DEFAULT_RESULTS": "your-value",
"LISTS_MAX_RESULTS": "your-value",
"LISTS_DEFAULT_TIMEOUT_MS": "your-value",
"LISTS_MIN_TIMEOUT_MS": "your-value",
"LISTS_MAX_TIMEOUT_MS": "your-value",
"MEDIA_CHUNK_BYTES": "your-value",
"MEDIA_POLL_INTERVAL_MS": "your-value",
"MEDIA_DEFAULT_TIMEOUT_MS": "your-value",
"MEDIA_MIN_TIMEOUT_MS": "your-value",
"MEDIA_MAX_TIMEOUT_MS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
MCP_TRANSPORT envMCP_NAME envMCP_PATH envSERVER_PORT envSERVER_READ_TIMEOUT envSERVER_WRITE_TIMEOUT envLOG_MODE envMAX_IDLE_CONNS_PER_HOST envX_DEBUG envPOSTS_MAX_QUERIES envPOSTS_MAX_USERNAMES envPOSTS_MAX_IDS envPOSTS_DEFAULT_RESULTS envPOSTS_MAX_RESULTS envPOSTS_DEFAULT_DAYS envPOSTS_MAX_DAYS envPOSTS_DEFAULT_TIMEOUT_MS envPOSTS_MIN_TIMEOUT_MS envPOSTS_MAX_TIMEOUT_MS envUSERS_MAX_USERNAMES envUSERS_MAX_IDS envUSERS_DEFAULT_RESULTS envUSERS_MAX_RESULTS envUSERS_DEFAULT_TIMEOUT_MS envUSERS_MIN_TIMEOUT_MS envUSERS_MAX_TIMEOUT_MS envLISTS_DEFAULT_RESULTS envLISTS_MAX_RESULTS envLISTS_DEFAULT_TIMEOUT_MS envLISTS_MIN_TIMEOUT_MS envLISTS_MAX_TIMEOUT_MS envMEDIA_CHUNK_BYTES envMEDIA_POLL_INTERVAL_MS envMEDIA_DEFAULT_TIMEOUT_MS envMEDIA_MIN_TIMEOUT_MS envMEDIA_MAX_TIMEOUT_MS envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント Role1776 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET, MEDIA_ROOT
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.1)がレジストリに届いたのは2 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにDocker, MCPBも必要です。
同じカテゴリには: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、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
mcp-x
An MCP server that gives an LLM the X (Twitter) API: read and search posts, manage users and lists, upload media, and publish — as the account whose keys it runs on.
Website · Costs · Credentials · Tools · Quick start · Configuration · Architecture · Contributing
mcp-x is a Model Context Protocol server written in Go. It exposes the X API v2 to any MCP-compatible client (Claude Desktop, IDE agents, custom LLM apps) as 42 tools covering posts, users, lists and media.
It authenticates with OAuth 1.0a user context, which means every call acts *as a real X account* — the one the four keys belong to. x_post_create publishes publicly. x_user_follow really follows. x_post_delete is irreversible. This is not a sandbox, and it is not free: see The X API costs money before you wire it into an agent.
Both transports the MCP SDK supports are available and expose the identical tool set:
[!WARNING]
There is no free tier any more. X retired the Free/Basic/Pro subscription tiers for new developers and moved to pay-per-use credits: you buy credits upfront in the Developer Console and every request deducts from the balance in real time. Legacy Basic ($200/mo) and Pro ($5,000/mo) subscriptions survive only for accounts that already had them; Enterprise starts around $42,000/mo. A new developer account today gets pay-per-use and nothing else.
Rates at the time of writing (official pricing — always re-check the Console, they have changed several times in 2026):
| Operation | Price |
|---|---|
| Post read | $0.005 per post returned |
| Owned read (your own posts, bookmarks, followers, likes, lists) | $0.001 per resource |
| User read | $0.010 per user returned |
| Likes / mutes / blocks read | $0.001 per resource |
| Followers / following read | $0.010 per resource |
| Publishing a post | $0.015 per request |
| Publishing a post containing a URL | $0.200 per request |
| Like / repost and other interactions | $0.015 per request |
| List and bookmark writes | $0.005–$0.010 per request |
Two things follow from this, and both are baked into the server:
max_results: 100 on x_posts_search costs twenty times what max_results: 5 costs for the same query. Every read tool's description tells the model to ask for the smallest max_results that answers the question, and the batching tools (x_posts_lookup, x_users_lookup) tell it to batch rather than loop.x_posts_count first, then pay for x_posts_search.X also deduplicates: the same resource fetched twice inside a 24-hour UTC window is billed once. And pay-per-use is capped at 3 million post reads per billing cycle — past that, only Enterprise.
When the money runs out the API answers with a distinct error, and the server maps it to a message that explicitly tells the model not to retry — see Errors.
The server needs four OAuth 1.0a values, all from one X app:
X_API_KEY
X_API_KEY_SECRET X_ACCESS_TOKEN X_ACCESS_TOKEN_SECRET
The first pair identifies the *app*; the second pair identifies the *account acting through it*. mcp-x uses AuthenMethodOAuth1UserContext, not app-only bearer auth, because every write endpoint and every "me" endpoint (x_users_me, x_posts_home, x_bookmarks_list, mentions) requires a user context. There is no bearer-token mode.
[!IMPORTANT]
An access token permanently keeps the permissions the app had at the moment it was generated. If you created the token while the app was Read-only and then flipped the app to Read and Write, the token is *still* read-only. Nothing about the app settings page will tell you this. Every write will fail with X's
oauth1-permissionsproblem type, forever, until you go back to Keys and tokens and regenerate the Access Token and Secret.
This is the single most common setup failure with the X API, which is why the server checks for it at startup and refuses to start with:
`
the access token is read-only: set the app permissions to Read and Write
in the X Developer Console, then regenerate the Access Token and Secret
`
Regenerating the *API Key/Secret* is not the fix. Regenerate the Access Token and Secret.
Before registering a single tool, the server calls GET /2/users/me once (client.Bootstrap) with a 15-second deadline. This does three jobs:
POST /2/users/:id/... and looking the id up per write would be another billed request.A failure here is fatal by design. A server that starts and then fails every call is worse than one that does not start.
The cost of that choice is worth stating plainly: there is no way to try this server without a funded X developer account. No credentials means no startup, which means no tool list — /mcp and claude mcp list will show a failed connection and nothing else. To confirm an install short of that, run the binary with -version, and read the Tools section for what it would have exposed.
The four values are credentials for a live account with write access. Keep them in a file only you can read, pass it with -env, and never commit it — .env is gitignored, .env.example is the template. When running under an MCP client, the client's env block works too; it takes precedence over the .env file.
42 tools in four groups. Every tool carries MCP annotations: readOnlyHint on reads, destructiveHint on anything irreversible (x_post_delete, x_list_delete, unlike, unrepost, unfollow, member removal). Each returns a structured JSON payload matching its output schema; the SDK mirrors the same JSON into the text content block for clients that do not read structuredContent.
Every tool accepts an optional timeout_ms, clamped into the group's [MIN, MAX] window (see Limits).
| Tool | Description |
|---|---|
| `x_posts_search` | Searches recent posts for several queries in parallel. Recent search reaches back 7 days only. |
| `x_posts_count` | Counts matches per query bucketed by minute/hour/day. Does not spend post reads — use it to size a topic before searching. |
| `x_posts_lookup` | Fetches up to 100 posts by id in one call. |
| `x_posts_by_user` | Recent posts for several usernames, fetched in parallel. |
| `x_posts_mentions` | Posts mentioning the key owner. |
| `x_posts_home` | The key owner's home timeline. |
| `x_posts_quotes` | Posts quoting a given post. |
| `x_posts_liked` | Posts the key owner liked. |
| `x_bookmarks_list` | The key owner's bookmarks. |
| `x_post_liked_by` | Users who liked a given post. |
| `x_post_reposted_by` | Users who reposted a given post. |
x_posts_search| Parameter | Type | Default | Notes |
|---|---|---|---|
queries | []string | — | Required. Run in parallel, capped at POSTS_MAX_QUERIES (5). ≤ 512 chars each. |
max_results | int | 10 | Posts per query, 1..100. Every one is billed. |
sort_order | string | — | recency (newest first) or relevancy (best match). |
days | int | 7 | How far back, 1..7. The API cannot go further. |
include_retweets | bool | false | When false the server appends -is:retweet to every query. |
timeout_ms | int64 | 15000 | Whole-call timeout, clamped to [2000, 60000]. |
Query operators go inside the query string:
| Operator | Meaning |
|---|---|
| *space* | AND |
OR | explicit OR |
-term | NOT |
( ) | grouping |
from:user / to:user | by author / by recipient |
@user / #tag | mentions / hashtags |
"exact phrase" | exact phrase |
lang:en | language |
is:retweet is:reply is:quote is:verified | post kind |
has:media has:images has:videos has:links | attachments |
url:example.com | linked domain |
conversation_id:123 | one thread |
x_posts_count| Parameter | Type | Default | Notes |
|---|---|---|---|
queries | []string | — | Required. Same operators as x_posts_search. |
granularity | string | hour | minute, hour or day. |
days | int | 7 | 1..7, same window. |
timeout_ms | int64 | 15000 | Clamped to [2000, 60000]. |
x_posts_lookup| Parameter | Type | Default | Notes |
|---|---|---|---|
ids | []string | — | Required. 1..100 post ids. Batch them; do not call once per id. |
x_posts_by_user| Parameter | Type | Default | Notes |
|---|---|---|---|
usernames | []string | — | Required. Without the @. Capped at POSTS_MAX_USERNAMES (5), fetched in parallel. |
max_results | int | 10 | Posts per user, 1..100. |
exclude | []string | — | replies and/or retweets. |
days | int | 7 | 1..7. |
timeout_ms | int64 | 15000 | Clamped to [2000, 60000]. |
x_posts_mentions, x_posts_home, x_posts_liked and x_bookmarks_list share one shape: max_results (1..100), pagination_token, timeout_ms. x_posts_quotes, x_post_liked_by and x_post_reposted_by add a required id.
Pagination is explicit and manual: a response carries next_token, and you pass it back as pagination_token for the next page. The server never walks pages on its own — each page is billed, so that decision stays with the caller.
| Tool | Annotation | Description |
|---|---|---|
| `x_post_create` | write | Publishes a post. Public and billed ($0.015, or $0.20 with a link). |
| `x_post_delete` | de
冒頭だけを表示しています。続きはリポジトリで読めます