LABSCO SUMMARY
Drafts first, publishing on purpose.
The thing that makes this safe to leave connected is that writing and posting are separate steps — the model can compose a whole thread and nothing goes out until you tell it to publish.
What it is
A small local MCP server that creates, manages and publishes X posts through chat. Drafts live on your side until you say to publish, so composing and posting are two separate decisions.
What you get
- Posts written from the conversation, single or as a thread on one topic
- Drafts kept rather than posted — list them, publish the one you meant, delete the ones you did not
- Installation by cloning and pointing the client at the directory
Requirements
uv installed globally, and four X credentials in the client config: TWITTER_API_KEY, TWITTER_API_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET. Create a project in the X developer portal, set User Authentication to Read and Write with the Web App type, callback http://localhost/, then generate the keys and tokens.
Setup effort
Build from source
USE CASES
01
Turning a finished piece of work into a post
Ask for the post in the same session that produced the thing you are posting about.
02
Writing a thread without counting characters
Describe the topic and it comes back split into a thread rather than one over-long post.
03
Reviewing before anything is public
Everything lands as a draft; list them, read them back, and publish only what you approve.
04
Clearing out what you decided against
Delete the draft from the chat instead of opening the app to tidy up.
BEFORE YOU INSTALL
What to know first
Requires
- uv on PATH
- TWITTER_API_KEY in your environment
- TWITTER_API_SECRET in your environment
- TWITTER_ACCESS_TOKEN in your environment
- TWITTER_ACCESS_TOKEN_SECRET in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
MCP Clients
Claude Desktop
CLAUDE DESKTOP · JSON
{
"mcpServers": {
"x_mcp": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_X_MCP>",
"run",
"x-mcp"
],
"env": {
"TWITTER_API_KEY": "<YOUR_TWITTER_API_KEY>",
"TWITTER_API_SECRET": "<YOUR_TWITTER_API_SECRET>",
"TWITTER_ACCESS_TOKEN": "<YOUR_TWITTER_ACCESS_TOKEN>",
"TWITTER_ACCESS_TOKEN_SECRET": "<YOUR_TWITTER_ACCESS_TOKEN_SECRET>"
}
}
}
}