Twitter Signal Mcp

io.github.ciinkwia由 GitHub 账号 ciinkwia 发布v0.5.0更新于 Oct 24, 2026

Live X/Twitter search, profiles, leads, pain points, bot checks, AI digests. Paid per call, x402.

概览

AI 生成的概览

本地 MCP 服务器,让助手通过 x402 按次以 USDC 付费,获得 X/Twitter 实时搜索、账号资料、线索与趋势摘要能力。

可以做什么
用 X 高级搜索语法检索帖子,可翻页获取更早结果,并生成由结果撰写的 AI 趋势摘要。获取单个账号的时间线、资料、关注者、关注列表、提及、回复串与互动者,或按 ID 查询单条推文。按主题查找账号,获取某账号是否值得互动的 AI 判断,并轮询查询只取新帖。挖掘某产品的抱怨、功能请求与好评,或生成含简介、网站与已找到邮箱的丰富线索列表。一次调用查看多个账号的观察列表,或获取某美股代码的事实性活跃度统计与关键词标记。
适用场景
适合在无需官方 X API 密钥或订阅的情况下让助手了解当前 X/Twitter 讨论:品牌与口碑监测、竞品与产品调研、线索或达人挖掘、定时观察列表轮询。也适合只想要事实性代码活跃度统计而非情绪判断的交易类助手。
运行要求
通过 npx 在本地运行(需 Node.js)。需要一个在 Base 上存有 USDC 的 Coinbase CDP 钱包,通过 CDP_API_KEY_ID、CDP_API_KEY_SECRET 和 CDP_WALLET_SECRET 配置;CDP_ACCOUNT_NAME 与 X402_MAX_PRICE 可选。需要访问付费端点的网络。两个高级工具需将 X402_MAX_PRICE 至少提高到 0.15 和 0.20。
安装前请注意
每次调用都会从 CDP 钱包实际支出 USDC,费用按请求累积;默认 X402_MAX_PRICE 为 0.05,不提高则无法使用高级工具。三个钱包凭据会存放在客户端配置中。查询词与账号名会发送到第三方付费端点,线索类工具会返回简介和网站中找到的邮箱等个人数据。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Twitter Signal Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

twitter-signal-mcp

Live X/Twitter search and AI trend digests inside Claude, Cursor, or any MCP client — no Twitter/X API key, no subscription, no monthly minimum. Your agent pays a fraction of a cent per call in USDC on Base using x402.

x_search           $0.02/call    up to 20 newest matching tweets + engagementx_digest           $0.05/call    the same tweets + an AI-written trend summaryx_leads            $0.05/call    the people behind matching posts, enriched (bio, website, emails, followers)x_pain_points      $0.05/call    clustered complaints / feature requests / praise for a product, with quotesx_user_timeline    $0.02/call    one account's own recent postsx_profile          $0.02/call    one account's bio, stats, and linksx_tweet            $0.01/call    one tweet by ID, full text + engagementx_replies          $0.02/call    the reply thread under one tweetx_find_accounts    $0.02/call    accounts matching a name/topic, not postsx_account_verdict  $0.02/call    AI read on whether an account is worth engagingx_watch            $0.05/call    only the posts newer than your last checkx_ticker_pulse     $0.02/call    facts about a US stock ticker's X activity — no sentiment/advicex_list             $0.05/call    2-50 handles' combined recent posts, one call, no OR-splittingx_followers        $0.02/call    one page of an account's followersx_following        $0.02/call    one page of who an account followsx_mentions         $0.02/call    one page of posts mentioning a handlex_engagers         $0.05/call    who quoted / who retweeted one postx_person           $0.15/call    one handle's enriched person card (role, company, contact routes)x_leads_deep       $0.20/call    the whole search-to-contact leads chain in one call, people enriched + clustered

Why this exists

The official X API starts at a monthly subscription and a developer-account approval. If an agent just needs to know what people are saying right now, that's a lot of setup for a handful of queries. This server charges per request instead — a hundred searches costs about sixty cents, and there is nothing to cancel.

Tools

x_search — $0.02

Full advanced-search syntax. Returns up to 20 newest matches with author handle, follower count, text, timestamp, permalink, likes, retweets, replies, and views. Need more than 20? A full answer ends with next.older — pass its cursor value back (same query) for the next 20 older matches, $0.02 a page. No slicing dates by hand.

x_digest — $0.05

Everything above plus an AI-written digest generated only from the returned tweets:

json
{  "summary": "3-5 sentences on what's actually being said",  "sentiment": "positive | negative | mixed | neutral",  "sentiment_note": "why it leans that way",  "key_themes": ["..."],  "driving_accounts": ["@handle", "..."],  "notable_post_urls": ["https://x.com/..."]}

Use x_digest when you want the takeaway; x_search when you want the raw posts.

x_leads — $0.05

Same advanced-search syntax as x_search, but returns the PEOPLE behind the matching posts instead of the posts themselves — enriched with bio, website, emails found in the bio, follower count, location, a DM-open flag, and every matching post per person:

json
{  "result_count": 20,  "lead_count": 8,  "leads": [{ "username": "someone", "followers": 5000, "emails": [], "matched_posts": [] }]}

Inputs: query (required, same syntax as x_search), max (optional, "20" or "40" — default 20). Use for recruiting, cofounder search, B2B lead generation, influencer discovery, community sourcing.

x_pain_points — $0.05

Pass a product or brand name/handle, get clustered complaints, feature requests, and praise mined from live X posts, with verbatim quotes and URLs:

json
{  "product": "Cursor",  "analysis": { "summary": "...", "pain_points": [{ "theme": "...", "count": 4, "severity": "medium" }] }}

Input: product (required — a name or an X handle). Use for product research, competitor research, churn signals, roadmap input.

x_user_timeline — $0.02

An account's own recent posts (originals, replies, retweets), newest first. Input: username (required). Use: x_user_timeline username="elonmusk" to track a competitor's or founder's own feed.

x_profile — $0.02

One account's bio, website, location, join date, follower/following counts, and verified status. Input: username (required). Use: x_profile username="cursor_ai" to qualify a lead before you reach out.

x_tweet — $0.01

One tweet by numeric ID: full text, author, timestamp, permalink, engagement. Input: id (required). Use: x_tweet id="1859012345678901234" to re-check a specific post you already found.

x_replies — $0.02

The reply thread under one tweet, newest first. Input: id (required, same as x_tweet). Use: x_replies id="1859012345678901234" to see how people reacted to a specific post.

x_find_accounts — $0.02

Search for ACCOUNTS matching a name, keyword, or topic — not posts. Input: query (required, same syntax as x_search). Use: x_find_accounts query="solar installer hawaii" to build a shortlist of accounts to follow up on.

x_account_verdict — $0.02

A short AI-written read on one account: what it's about, how active/engaged it is, and whether it's worth following up with. Input: username (required). Use: x_account_verdict username="someone" to triage a lead fast without reading the profile yourself.

x_watch — $0.05

Same search as x_search, but only returns posts newer than a cursor you supply. Inputs: query (required), since (optional — an ISO timestamp or the cursor.newest_id from your last x_watch call). Use: poll a brand/ticker/hashtag on a schedule without re-paying for posts you've already seen. A check that finds nothing new is not charged — you only pay when there is news.

x_ticker_pulse — $0.02

Facts about one US stock ticker's X/Twitter activity, built for trading agents: post volume vs the prior window, top posts by likes, most active accounts, and keyword topic flags (earnings, guidance, lawsuit, SEC investigation, recall, M&A, layoffs, upgrade/downgrade, short report, dividend, buyback, CEO). Inputs: ticker (required, 1-6 letters, with or without a leading $), window (optional, 24h default or 7d). Use: x_ticker_pulse ticker="TSLA" window="24h". FACTS ONLY — counts and keyword matches, never a sentiment verdict, price target, or buy/sell/hold signal.

x_list — $0.05

A watchlist of 2-50 handles' combined recent posts in ONE call, newest first, deduped, with a per-handle post count and a since-cursor for only-what's-new next time — instead of splitting a watchlist into several from:a OR from:b x_search calls (X caps how many OR terms one search can carry):

json
{  "handle_count": 3, "result_count": 40, "truncated": true,  "per_handle_counts": { "elonmusk": 20, "naval": 12, "balajis": 8 },  "cursor": { "newest_id": "1967000000000000001" },  "tweets": [{ "author": "elonmusk", "text": "...", "likes": 1234 }]}

Inputs: handles (required — comma or space separated, @ optional, 2-50 handles), since (optional — ISO timestamp or a tweet ID from cursor.newest_id), limit (optional, 1-100, default 40). Use: x_list handles="elonmusk,naval,balajis" to check a watchlist in one call.

x_followers — $0.02

One page (up to 20 shown) of an account's followers: handle, name, bio, follower/following counts, verified status, DM-open flag. Inputs: username (required), cursor (optional, from a prior call's next.older). Use: x_followers username="elonmusk" for audience research or lead sourcing.

x_following — $0.02

One page (up to 20 shown) of who an account follows — same shape as x_followers. Inputs: username (required), cursor (optional). Use: x_following username="elonmusk" to map an account's network.

x_mentions — $0.02

One page (up to 20 shown) of posts mentioning a handle: author, follower count, text, timestamp, permalink, engagement. Inputs: username (required), cursor (optional). Use: x_mentions username="cursor_ai" for brand monitoring or reputation tracking.

x_engagers — $0.05

Who quoted and who retweeted one post (up to 20 each): handle, name, bio, follower count, verified status:

json
{ "id": "1878000000000000000", "quote_count": 5, "retweeter_count": 40, "quotes": [], "retweeters": [] }

Input: id (required, same as x_tweet). Use: x_engagers id="1878000000000000000" to find amplifiers or source leads from a viral post's audience.

x_person — $0.15

Send a handle, get an enriched person card: name, role, company, what they work on, topics, seniority guess, and contact routes (emails found on their own site or bio, LinkedIn, GitHub, DM-open flag), plus facts (followers, account age, posts/week, website). An email is only reported if it was actually found, never guessed. Input: username (required). Use: x_person username="naval". Needs X402_MAX_PRICE of at least 0.15 (see Setup).

x_leads_deep — $0.20

The whole search → profile → contact chain in one call. Searches up to 4 pages, groups the posts by author, enriches the top 10-15 people with their own website (emails, LinkedIn, GitHub), and clusters them with a one-line why-they-match each:

json
{  "pages_fetched": 4, "lead_count": 10, "enriched_count": 7,  "clusters": [{ "theme": "Solidity engineers", "lead_usernames": ["someone"] }],  "leads": [{ "username": "someone", "emails": [], "web": { "emails": [], "links": {}, "title": "..." }, "card": { "why_they_match": "..." } }]}

Inputs: query (required, same syntax as x_search), max (optional, "1" to "15", default "10"). Nothing found = nothing charged. Needs X402_MAX_PRICE of at least 0.20 (see Setup). Cheaper first look: x_leads.

Query syntax (x_search, x_digest, x_leads, x_find_accounts, x_watch)

Both tools take one query string:

PatternExample
Keywords / phrases"rate cut" inflation
Accountfrom:elonmusk starship
Hashtag / cashtag#bitcoin · $NVDA
Engagement floormin_faves:100 · min_retweets:50
Language / dateslang:en since:2026-08-01 until:2026-08-09
Exclusionsairdrop -giveaway

Quick start (copy-paste)

Four ready-made files in examples/:

Setup

You need a Coinbase CDP wallet funded with a little USDC on Base — that wallet pays per call. Create one at portal.cdp.coinbase.com (API key + wallet secret).

Claude Desktop — add to claude_desktop_config.json:

json
{  "mcpServers": {    "twitter-signal": {      "command": "npx",      "args": ["-y", "twitter-signal-mcp"],      "env": {        "CDP_API_KEY_ID": "your-key-id",        "CDP_API_KEY_SECRET": "your-key-secret",        "CDP_WALLET_SECRET": "your-wallet-secret",        "X402_MAX_PRICE": "0.05"      }    }  }}

X402_MAX_PRICE is a hard per-call ceiling in USD. If the endpoint ever quotes more than this, the request is refused before anything is signed — no charge. The default 0.05 covers every tool except the two premium ones: x_person ($0.15) and x_leads_deep ($0.20). Set X402_MAX_PRICE to 0.25 to unlock them (the default stays 0.05 on purpose, so an agent can't spend more than you expect).

Cost & safety

  • You are only ever charged for a successful response. Invalid queries are rejected before payment (HTTP 400, no settlement).
  • Nothing found = nothing charged. An empty x_search / x_digest / x_leads / x_pain_points / x_watch comes back as no_results with charged: false — the payment is never settled.
  • Same call within 10 minutes = free. Repeat the exact call from the same wallet and you get the saved answer (meta.charged: false) at no cost.
  • If the upstream tweet source fails after payment, the API returns an explicit error and logs the call for refund rather than pretending it worked.
  • Gas is covered by the facilitator — you spend USDC only.
  • Identical queries within 60 seconds are served from cache.

How it works

MCP client → twitter-signal-mcp → 402 challenge → sign USDC authorization           → facilitator settles on Base → data returned

Protocol: x402 v2 (CAIP-2 networks, PAYMENT-REQUIRED challenge header). A v1 client cannot talk to this API.

License

MIT

来源:README.md,提交 3bc19d6

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

3
  1. v0.5.0最新Sep 26, 2026
  2. v0.4.0Sep 20, 2026
  3. v0.1.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分