x mcp

Local 2025-08-31 23:52:34 0
Social Media @vidhupv/x-mcp

An MCP server that allows Claude to create, manage and publish X/Twitter posts directly through the chat interface.


smithery badge

An MCP server to create, manage and publish X/Twitter posts directly through Claude chat.

X(Twitter) Server MCP server

Quick Setup

Installing via Smithery

To install X(Twitter) MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install x-mcp --client claude

Manual Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/x-mcp.git

  2. Install UV globally using Homebrew in Terminal:

    brew install uv

  3. Create claude_desktop_config.json:

  4. For MacOS: Open directory ~/Library/Application Support/Claude/ and create the file inside it
  5. For Windows: Open directory %APPDATA%/Claude/ and create the file inside it

  6. Add this configuration to claude_desktop_config.json:

    {
      "mcpServers": {
        "x_mcp": {
          "command": "uv",
          "args": [
            "--directory",
            "/path/to/x-mcp",
            "run",
            "x-mcp"
          ],
          "env": {
            "TWITTER_API_KEY": "your_api_key",
            "TWITTER_API_SECRET": "your_api_secret",
            "TWITTER_ACCESS_TOKEN": "your_access_token",
            "TWITTER_ACCESS_TOKEN_SECRET": "your_access_token_secret"
          }
        }
      }
    }

  7. Get your X/Twitter API credentials:

  8. Go to X API Developer Portal
  9. Create a project
  10. In User Authentication Settings: Set up with Read and Write permissions, Web App type
  11. Set Callback URL to http://localhost/ and Website URL to http://example.com/
  12. Generate and copy all keys and tokens from Keys and Tokens section

  13. Update the config file:

  14. Replace /path/to/x-mcp with your actual repository path
  15. Add your X/Twitter API credentials

  16. Quit Claude completely and reopen it

Usage Examples

  • "Tweet 'Just learned how to tweet through AI - mind blown! ?✨'"
  • "Create a thread about the history of pizza"
  • "Show me my draft tweets"
  • "Publish this draft!"
  • "Delete that draft"

Troubleshooting

If not working: - Make sure UV is installed globally (if not, uninstall with pip uninstall uv and reinstall with brew install uv) - Or find UV path with which uv and replace "command": "uv" with the full path - Verify all X/Twitter credentials are correct - Check if the x-mcp path in config matches your actual repository location

[
  {
    "description": "Create a draft tweet",
    "inputSchema": {
      "properties": {
        "content": {
          "description": "The content of the tweet",
          "type": "string"
        }
      },
      "required": [
        "content"
      ],
      "type": "object"
    },
    "name": "create_draft_tweet"
  },
  {
    "description": "Create a draft tweet thread",
    "inputSchema": {
      "properties": {
        "contents": {
          "description": "An array of tweet contents for the thread",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "contents"
      ],
      "type": "object"
    },
    "name": "create_draft_thread"
  },
  {
    "description": "List all draft tweets and threads",
    "inputSchema": {
      "properties": {},
      "required": [],
      "type": "object"
    },
    "name": "list_drafts"
  },
  {
    "description": "Publish a draft tweet or thread",
    "inputSchema": {
      "properties": {
        "draft_id": {
          "description": "ID of the draft to publish",
          "type": "string"
        }
      },
      "required": [
        "draft_id"
      ],
      "type": "object"
    },
    "name": "publish_draft"
  },
  {
    "description": "Delete a draft tweet or thread",
    "inputSchema": {
      "properties": {
        "draft_id": {
          "description": "ID of the draft to delete",
          "type": "string"
        }
      },
      "required": [
        "draft_id"
      ],
      "type": "object"
    },
    "name": "delete_draft"
  }
]