PostHog MCP Server
Official PostHog MCP Server for product analytics, feature flags, experiments, and more.
作者による説明(英語の原文)
Post, delete & read on X (Twitter) using your own logged-in web session — no paid API.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
TWEETKIT_COOKIE_KEYCHAIN, TWEETKIT_COOKIE「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"tweetkit-x": {
"command": "uvx",
"args": [
"tweetkit-x"
],
"env": {
"TWEETKIT_COOKIE_KEYCHAIN": "your-value",
"TWEETKIT_COOKIE": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add tweetkit-x --env TWEETKIT_COOKIE_KEYCHAIN=your-value --env TWEETKIT_COOKIE=your-value -- uvx tweetkit-x動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"tweetkit-x": {
"command": "uvx",
"args": [
"tweetkit-x"
],
"env": {
"TWEETKIT_COOKIE_KEYCHAIN": "your-value",
"TWEETKIT_COOKIE": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"tweetkit-x": {
"type": "stdio",
"command": "uvx",
"args": [
"tweetkit-x"
],
"env": {
"TWEETKIT_COOKIE_KEYCHAIN": "your-value",
"TWEETKIT_COOKIE": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
TWEETKIT_COOKIE_KEYCHAIN envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月11日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント nsozturk で確認済みです
コードの最終更新:41 日前
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック2項目のうち2項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:TWEETKIT_COOKIE
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は41 日前、最新バージョン(0.3.0)がレジストリに届いたのは4 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:PostHog MCP Server, Agent-Native Analytics, Openshorts
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Official PostHog MCP Server for product analytics, feature flags, experiments, and more.
Agent-Native Amplitude/Mixpanel - connect data sources, prompt for charts
Turn long videos into viral vertical shorts and publish them to TikTok, Instagram and YouTube.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
tweetkit-x
Post, delete & read on X (Twitter) — from Python and as an MCP server — using your own logged-in browser session.
No paid API. No developer app. No OAuth dance. Just your session cookie.
Quick start · Get your cookie · Python · CLI · MCP server · How it works · Disclaimer
Since February 6, 2026, X's official API has no free tier for new developers — it's pay-per-use: ~$0.015 per post, ~$0.20 per post with a link, plus per-read charges. For publishing *your own* tweets (a bot posting your content, a scheduled thread, a cleanup script that deletes old posts), that's a recurring bill for something your browser already does for free.
tweetkit-x skips the API entirely. It replays the exact internal HTTP calls your browser makes when you click Post, Delete, or scroll your profile — authenticated with the session cookie you already have. Post, delete, and read the full timeline, at zero API cost.
⚠️ Automating your web session is against X's Terms of Service. This is a grey-area tool for personal automation. Account risk is entirely yours. See the Disclaimer.
SearchTimeline (operators like from:, min_faves:, filter:media), plus local regex over your own tweetsCookie: header, drop a HAR file, or a storage-dump zip; store in a file or the macOS Keychaintweetkit …)pip install "tweetkit-x[mcp]" # or: pip install tweetkit-x (library + CLI only)
tweetkit import --paste # paste the Cookie: header, Ctrl-D
tweetkit whoami
tweetkit post "hello world 👋" tweetkit search "xmr|monero" --regex # your tweets that match tweetkit delete 2063240404980445603
The only secret tweetkit needs is your X session cookie — the same Cookie: header your logged-in browser sends. It must contain at least two values:
| Cookie | What it is | Required | HttpOnly? |
|---|---|---|---|
auth_token | your login/session token | yes | yes (hidden from document.cookie) |
ct0 | CSRF token (sent back as x-csrf-token) | yes | no |
twid | your user id (u= ) — lets tweetkit read *your* timeline with no extra lookup | recommended | no |
guest_id, kdt, att, personalization_id | misc session state | optional | mixed |
❗
auth_tokenis HttpOnly, so adocument.cookiecopy in the JS console will NOT include it. Use one of the reliable methods below.
Cookie: header (most reliable, one paste)x.com (e.g. HomeTimeline).tweetkit import --paste
tweetkit import --file ~/Downloads/x.com.har
Modern Chrome can redact cookies from exported HARs. If tweetkit reports
auth_tokenmissing, either enable "Allow to generate HAR with sensitive data" in the Network settings, or fall back to Method A / Method C.
The easiest no-DevTools route. [storagedump](https://chromewebstore.google.com/detail/storagedump/kihoghfekemdccfnpjefmggehpgnjnab) (a Chrome extension built by this project's author) exports a tab's browser storage — including the HttpOnly auth_token, which document.cookie can't reach — as a .zip containing cookies.json. On x.com (logged in), click the extension → export, then:
tweetkit import --file storagedump_x.com_2026-07-05.zip
tweetkit reads the extension's native format, { "data": [ { "key": "...", "value": "..." }, ... ] }, and also accepts a plain list or a {name: value} map. Cookie-Editor / EditThisCookie JSON exports (--file export.json) work too.
Install: [storagedump on the Chrome Web Store](https://chromewebstore.google.com/detail/storagedump/kihoghfekemdccfnpjefmggehpgnjnab).
By default tweetkit import writes `~/.config/tweetkit/cookie.txt` (chmod 600; also git-ignored). Prefer the macOS Keychain? Add --keychain :
tweetkit import --paste --keychain tweetkit
export TWEETKIT_COOKIE_KEYCHAIN=tweetkit
Resolution order at runtime (first hit wins): explicit arg → TWEETKIT_COOKIE → TWEETKIT_COOKIE_FILE → ./cookie.txt → ~/.config/tweetkit/cookie.txt → Keychain (TWEETKIT_COOKIE_KEYCHAIN).
from tweetkit_x import TweetKit
tk = TweetKit(keychain_slug="tweetkit") # or cookie="auth_token=...; ct0=..."
tk.whoami() # {'ready': True, 'user_id': '...', 'ct0_len': 160}
tk.post("hello world") tk.post("with a picture", image_path="chart.png") tk.post("a reply", reply_to="1800000000000000000")
tk.post_thread(["1/ intro", ("2/ chart", "chart.png"), "3/ outro"])
mine = tk.get_tweets(limit=100) # your tweets, newest first theirs = tk.get_tweets(username="jack", limit=50) # anyone's
hits = tk.search("monero") # substring hits = tk.search(r"xmr|monero", regex=True) # regex
tk.delete("1800000000000000000") tk.delete_many([t["id"] for t in hits])
tk.quote("this is great", quote_tweet_id="1800000000000000000")
tk.like("1800000000000000000"); tk.unlike("1800000000000000000") tk.retweet("1800000000000000000"); tk.unretweet("1800000000000000000") tk.bookmark("1800000000000000000"); tk.unbookmark("1800000000000000000")
tk.get_tweet("1800000000000000000") tk.search_x("mcp server", latest=True, limit=40) tk.search_x("from:jack min_faves:1000") # X search operators work
Every write returns {'ok': True, 'id': '...', 'url': '...'} on success, or {'ok': False, 'status': ..., 'error': '...'} on failure — easy to log or retry.
See examples/ for a full "find my $XMR tweets and delete them" cleanup loop.
tweetkit whoami
tweetkit post "just some text" tweetkit post "text + media" --image pic.png tweetkit post "a reply" --reply-to 1800000000000000000 tweetkit thread thread.txt # tweets separated by blank lines tweetkit delete 1800000000000000000 1800000000000000001 tweetkit tweets --limit 100 # your tweets tweetkit tweets @jack --limit 50 # someone else's tweetkit search monero # your tweets containing "monero" tweetkit search "xmr|monero" --regex tweetkit searchx "mcp server" --latest # search ALL of X (real search + operators) tweetkit get 1800000000000000000 # one tweet by id tweetkit quote "great thread" 1800000000000000000 tweetkit like 1800000000000000000 # also: unlike / retweet / unretweet / bookmark / unbookmark
A thread.txt is just tweets separated by blank lines.
tweetkit ships a first-class MCP server so an AI client can post/delete/read for you — and it walks the user through auth, explaining what the cookie is and setting it up with a single paste.
Claude Desktop / Claude Code / Cursor — add to your MCP config (claude_desktop_config.json, .mcp.json, …):
{
"mcpServers": { "tweetkit": { "command": "uvx", "args": ["--from", "tweetkit-x[mcp]", "tweetkit-mcp"], "env": { "TWEETKIT_COOKIE_KEYCHAIN": "tweetkit" } } } }
Already pip installed? Use the console script directly:
{ "mcpServers": { "tweetkit": { "command": "tweetkit-mcp",
"env": { "TWEETKIT_COOKIE_KEYCHAIN": "tweetkit" } } } }
If you don't set any cookie env var, that's fine — the server starts unauthenticated and asks the user to set the cookie from inside the chat (below).
The server describes each value and offers the lowest-effort path. A typical first run:
Cookie: header once → `set_session_cookie(" ")` → stored (Keychain or file) and activated. Or point `import_cookie_from_file("~/Downloads/x.com.har")` at a HAR / storage-dump zip.The raw cookie is never echoed back.
| Tool | What it does |
|---|---|
auth_status | Is a valid session loaded? (call first) |
set_session_cookie(cookie_header) | Set auth from a pasted Cookie: header — explains exactly what to copy |
import_cookie_from_file(path) | Set auth from a HAR / storage-dump .zip / cookie JSON |
post_tweet(text, image_path?, reply_to?) | Post a tweet (optional image / reply) |
post_thread(tweets[]) | Post a thread |
quote_tweet(text, quote_tweet_id, image_path?) | Quote-tweet an existing tweet |
| delete_tweet(tweet_id) / delete_tweets(ids[])