Twitter Client MCP
by mzkrasner
README.md
# Twitter Client MCP
A Model Context Protocol (MCP) server that provides secure access to Twitter functionality through the `agent-twitter-client` library.
## Features
The Twitter Client MCP provides the following capabilities:
- **Profile Operations**
- Get profile information by username
- Get the authenticated user's profile
- **Tweet Operations**
- Get a specific tweet by ID
- Get tweets from a user
- Send new tweets
- Like tweets
- Retweet tweets
- **Search Operations**
- Search for tweets
- Search for profiles
- **Relationship Operations**
- Get followers of a user
- Get users that a user is following
- Follow a user
## Security ⚠️
> **IMPORTANT: TWITTER CREDENTIAL PROTECTION**
This MCP server requires Twitter credentials to operate. To protect these sensitive credentials:
1. **NEVER share your credentials**
2. **NEVER run commands that display your credentials**
3. **NEVER allow the LLM to execute shell commands directly** without your approval
### Multiple Layers of Protection
This server implements several layers of security to keep your credentials safe:
#### 1. Credential Isolation
- Your credentials are only loaded during initialization
- After loading, credentials are immediately removed from environment variables
- Credentials are never logged or transmitted to the LLM
#### 2. Memory Protection
- Secure memory allocation using sodium-native
- Memory locking to prevent swapping to disk
- Zero-out memory buffers after use
#### 3. Access Prevention
- Secure environment variable handling
- Strict validation of required environment variables
- Console output sanitization to prevent leaking secrets
## Setup
1. Clone the repository
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
## Required Environment Variables
The Twitter Client MCP requires the following environment variables:
```
TWITTER_USERNAME=your_username
TWITTER_PASSWORD=your_password
TWITTER_EMAIL=your_email@example.com
```
Optionally, you can add Twitter API v2 credentials for advanced functionality:
```
TWITTER_API_KEY=your_api_key
TWITTER_API_SECRET_KEY=your_api_secret
TWITTER_ACCESS_TOKEN=your_access_token
TWITTER_ACCESS_TOKEN_SECRET=your_access_secret
```
## Tools
The server exposes the following MCP tools:
| Tool Name | Description | Parameters |
|-----------|-------------|------------|
| `profileByUsername` | Get a Twitter profile by username | `username`: String |
| `myProfile` | Get the authenticated user's profile | `check`: Boolean |
| `getTweet` | Get a specific tweet by ID | `tweetId`: String |
| `getUserTweets` | Get tweets from a Twitter user | `username`: String, `count?`: Number |
| `sendTweet` | Post a new tweet | `text`: String, `inReplyToId?`: String |
| `likeTweet` | Like a tweet | `tweetId`: String |
| `retweet` | Retweet a tweet | `tweetId`: String |
| `searchTweets` | Search for tweets | `query`: String, `count?`: Number, `searchMode?`: String ('top', 'latest', 'photos', 'videos') |
| `searchProfiles` | Search for Twitter profiles | `query`: String, `count?`: Number |
| `getFollowers` | Get a list of users following a Twitter user | `username`: String, `count?`: Number |
| `getFollowing` | Get a list of users that a Twitter user is following | `username`: String, `count?`: Number |
| `followUser` | Follow a Twitter user | `username`: String |
## Usage
### Running Locally
```bash
# Start the server with environment variables
TWITTER_USERNAME=your_username TWITTER_PASSWORD=your_password TWITTER_EMAIL=your_email@example.com npm start
```
### Adding to Cursor
To add this MCP server to Cursor:
1. In Cursor, go to Settings > MCP Servers
2. Click "Add Server"
3. Configure the server with the following settings:
- **Name**: `Twitter Client MCP` (or any name you prefer)
- **Type**: `command`
- **Command**: `node`
- **Arguments**: `/path/to/twitter-client-mcp/dist/index.js` (replace with your actual path)
- **Environment Variables**:
- `TWITTER_USERNAME`: Your Twitter username
- `TWITTER_PASSWORD`: Your Twitter password
- `TWITTER_EMAIL`: Your Twitter email
- Any other variables you want to set
4. Click "Save"
### Using NPX (Recommended)
You can also use npx to run the MCP server directly from GitHub:
```bash
TWITTER_USERNAME=your_username TWITTER_PASSWORD=your_password TWITTER_EMAIL=your_email@example.com npx -y github:mzkrasner/twitter-client-mcp
```
### Using Environment Variables in Cursor Configuration
For more security and ease of use, configure Cursor via the `.cursor/mcp.json` file in your home directory:
```json
{
"mcpServers": {
"twitter-client-mcp": {
"command": "npx",
"args": [
"-y",
"github:mzkrasner/twitter-client-mcp"
],
"env": {
"TWITTER_USERNAME": "your_username",
"TWITTER_PASSWORD": "your_password",
"TWITTER_EMAIL": "your_email@example.com"
}
}
}
}
```
## Development
### Important Note for Development
When developing the MCP server, use `console.error()` instead of `console.log()` for all debugging and logging statements. The MCP protocol communicates with the client via stdout, so any `console.log()` statements will interfere with this communication.
## License
MIT This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues