MCP server exposing the X (Twitter) API v2 to LLM agents: 42 tools for posts, users, lists and media, over OAuth 1.0a. Written in Go.
接入配置
选择客户端,复制配置,再按项目文档补齐环境变量。
claude mcp add x-twitter --env X_API_KEY='<X_API_KEY>' --env X_API_KEY_SECRET='<X_API_KEY_SECRET>' --env X_ACCESS_TOKEN='<X_ACCESS_TOKEN>' --env X_ACCESS_TOKEN_SECRET='<X_ACCESS_TOKEN_SECRET>' --env MEDIA_ROOT='<MEDIA_ROOT>' -- 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 ghcr.io/role1776/mcp-x:0.1.1~/.codex/config.toml
[mcp_servers.x-twitter]
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", "ghcr.io/role1776/mcp-x:0.1.1"]
env = { X_API_KEY = "<X_API_KEY>", X_API_KEY_SECRET = "<X_API_KEY_SECRET>", X_ACCESS_TOKEN = "<X_ACCESS_TOKEN>", X_ACCESS_TOKEN_SECRET = "<X_ACCESS_TOKEN_SECRET>", MEDIA_ROOT = "<MEDIA_ROOT>" }
# codex mcp add x-twitter --env X_API_KEY='<X_API_KEY>' --env X_API_KEY_SECRET='<X_API_KEY_SECRET>' --env X_ACCESS_TOKEN='<X_ACCESS_TOKEN>' --env X_ACCESS_TOKEN_SECRET='<X_ACCESS_TOKEN_SECRET>' --env MEDIA_ROOT='<MEDIA_ROOT>' -- 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 ghcr.io/role1776/mcp-x:0.1.1~/.cursor/mcp.json
{
"mcpServers": {
"x-twitter": {
"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",
"ghcr.io/role1776/mcp-x:0.1.1"
],
"env": {
"X_API_KEY": "<X_API_KEY>",
"X_API_KEY_SECRET": "<X_API_KEY_SECRET>",
"X_ACCESS_TOKEN": "<X_ACCESS_TOKEN>",
"X_ACCESS_TOKEN_SECRET": "<X_ACCESS_TOKEN_SECRET>",
"MEDIA_ROOT": "<MEDIA_ROOT>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"x-twitter": {
"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",
"ghcr.io/role1776/mcp-x:0.1.1"
],
"env": {
"X_API_KEY": "<X_API_KEY>",
"X_API_KEY_SECRET": "<X_API_KEY_SECRET>",
"X_ACCESS_TOKEN": "<X_ACCESS_TOKEN>",
"X_ACCESS_TOKEN_SECRET": "<X_ACCESS_TOKEN_SECRET>",
"MEDIA_ROOT": "<MEDIA_ROOT>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"x-twitter": {
"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",
"ghcr.io/role1776/mcp-x:0.1.1"
],
"env": {
"X_API_KEY": "<X_API_KEY>",
"X_API_KEY_SECRET": "<X_API_KEY_SECRET>",
"X_ACCESS_TOKEN": "<X_ACCESS_TOKEN>",
"X_ACCESS_TOKEN_SECRET": "<X_ACCESS_TOKEN_SECRET>",
"MEDIA_ROOT": "<MEDIA_ROOT>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"x-twitter": {
"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",
"ghcr.io/role1776/mcp-x:0.1.1"
],
"env": {
"X_API_KEY": "<X_API_KEY>",
"X_API_KEY_SECRET": "<X_API_KEY_SECRET>",
"X_ACCESS_TOKEN": "<X_ACCESS_TOKEN>",
"X_ACCESS_TOKEN_SECRET": "<X_ACCESS_TOKEN_SECRET>",
"MEDIA_ROOT": "<MEDIA_ROOT>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"x-twitter": {
"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",
"ghcr.io/role1776/mcp-x:0.1.1"
],
"env": {
"X_API_KEY": "<X_API_KEY>",
"X_API_KEY_SECRET": "<X_API_KEY_SECRET>",
"X_ACCESS_TOKEN": "<X_ACCESS_TOKEN>",
"X_ACCESS_TOKEN_SECRET": "<X_ACCESS_TOKEN_SECRET>",
"MEDIA_ROOT": "<MEDIA_ROOT>"
}
}
}
}需要的环境变量
X_API_KEYX_API_KEY_SECRETX_ACCESS_TOKENX_ACCESS_TOKEN_SECRETMEDIA_ROOT
把占位值换成你自己的密钥;不要把密钥提交到代码仓库。