Skip to main content
Glama
pascalporedda

Typefully MCP Server

README.md
# Typefully MCP Server

A Model Context Protocol (MCP) server for Typefully API integration, built with TypeScript and Node.js. This server allows AI assistants (like Claude) to create and manage Twitter drafts through Typefully.

## Features

- **Create Drafts**: Create single tweets or multi-tweet threads
- **Schedule Posts**: Schedule tweets for specific times
- **Auto Features**: Enable auto-retweet and auto-plug
- **Retrieve Drafts**: Get scheduled and published drafts
- **Thread Support**: Automatic thread creation using newline separators

## Prerequisites

- Node.js 18.x or higher
- A Typefully account with API access
- Typefully API key (get it from Settings > Integrations in Typefully)

## Installation

### Option 1: NPX (Recommended)

Run directly without installation:

```bash
npx typefully-mcp-server
```

### Option 2: Global Installation

```bash
npm install -g typefully-mcp-server
typefully-mcp-server
```

### Option 3: From Source

1. Clone the repository:

```bash
git clone https://github.com/yourusername/typefully-mcp-server.git
cd typefully-mcp-server
```

2. Install dependencies:

```bash
npm install
```

3. Build the project:

```bash
npm run build
```

## Configuration

Set your Typefully API key as an environment variable:

```bash
export TYPEFULLY_API_KEY="your_api_key_here"
```

Or create a `.env` file:

```
TYPEFULLY_API_KEY=your_api_key_here
```

## Usage

### Running the Server

```bash
npm start
```

Or for development:

```bash
npm run dev
```

### Claude Desktop Integration

Add this server to your Claude Desktop configuration file:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`

#### Option 1: Using NPX (Recommended):

```json
{
  "mcpServers": {
    "typefully": {
      "command": "npx",
      "args": ["-y", "typefully-mcp-server"],
      "env": {
        "TYPEFULLY_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

#### Option 2: Using Absolute Node Path (For Local Development):

**Note**: If you get a "spawn node ENOENT" error, Claude Desktop can't find the `node` command. Use the absolute path to node instead:

First, find your node path: `which node`

```json
{
  "mcpServers": {
    "typefully": {
      "command": "/opt/homebrew/opt/nvm/versions/node/v22.16.0/bin/node",
      "args": ["/path/to/your/project/dist/index.js"],
      "env": {
        "TYPEFULLY_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

## Available Tools

### create_draft

Create a new draft on Typefully.

**Parameters:**

- `content` (required): The tweet content or thread
- `threadify` (optional): Auto-split content into tweets
- `schedule_date` (optional): ISO date string for scheduling
- `auto_retweet_enabled` (optional): Enable auto-retweet
- `auto_plug_enabled` (optional): Enable auto-plug

**Example:**

```
Create a tweet: "Hello world! This is my first tweet via MCP."
```

**Thread Example:**

```
Create a thread about AI:

"AI is transforming how we work and live.

\n\n\n\n

From automating routine tasks to enabling creative breakthroughs, AI tools are becoming essential.

\n\n\n\n

The key is learning to collaborate with AI rather than compete against it."
```

**Note**: After installation via NPX, you can simply tell Claude: "Create a tweet saying 'Hello from Typefully MCP!'" and it will work automatically.

### get_scheduled_drafts

Retrieve your recently scheduled drafts.

**Example:**

```
Show me my scheduled tweets.
```

### get_published_drafts

Retrieve your recently published drafts.

**Example:**

```
Show me my recent published tweets.
```

## Thread Creation

To create multi-tweet threads, separate individual tweets with four consecutive newlines (`\n\n\n\n`) in your content.

## Development

### Scripts

- `npm run build` - Build the TypeScript project
- `npm run dev` - Run in development mode with auto-reload
- `npm run lint` - Run ESLint
- `npm run typecheck` - Run TypeScript type checking

### Project Structure

```
src/
├── index.ts        # Entry point
├── server.ts       # MCP server implementation
├── client.ts       # Typefully API client
└── types.ts        # Type definitions
```

## API Reference

This server integrates with the Typefully API v1. For more information about the API, visit the [official documentation](https://support.typefully.com/en/articles/8718287-typefully-api).

## Error Handling

The server includes comprehensive error handling for:

- Invalid API keys
- Network failures
- Malformed requests
- API rate limiting

## Common Issues

### "spawn node ENOENT" Error in Claude Desktop

This error occurs when Claude Desktop can't find the `node` command because GUI applications don't inherit the same PATH as your terminal.

**Solution**: Use the absolute path to node in your Claude Desktop configuration:

1. Find your node path: `which node`
2. Use the full path in your config instead of just "node"

Example:

```json
{
  "mcpServers": {
    "typefully": {
      "command": "/opt/homebrew/opt/nvm/versions/node/v22.16.0/bin/node",
      "args": ["/path/to/dist/index.js"],
      "env": {
        "TYPEFULLY_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Run tests and linting
5. Submit a pull request

## License

MIT License - see LICENSE file for details.

## Acknowledgments

- Inspired by the [Python Typefully MCP Server](https://github.com/pepuscz/typefully-mcp-server)
- Built with the [Model Context Protocol SDK](https://github.com/modelcontextprotocol/typescript-sdk)

TDQS

A3.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct operation: creating drafts, retrieving published drafts, and retrieving scheduled drafts. There is no overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent 'verb_noun' pattern in snake_case: create_draft, get_published_drafts, get_scheduled_drafts.

Tool Count4/5

With 3 tools, the server is minimal but covers core draft creation and retrieval. It is slightly under but reasonable for a focused MCP server.

Completeness2/5

Missing essential operations like update and delete drafts, which are typical for a content management server. Agents cannot modify or remove drafts once created.

Maintenance

ActivityInactive
ResponsivenessNo issues