Skip to main content
Glama
pascalporedda

Typefully MCP Server

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

Related MCP server: X (Twitter) MCP

Prerequisites

  • Node.js 18.x or higher

  • A Typefully account with API access

  • Typefully API key (get it from Settings > Integrations in Typefully)

Installation

Run directly without installation:

npx typefully-mcp-server

Option 2: Global Installation

npm install -g typefully-mcp-server
typefully-mcp-server

Option 3: From Source

  1. Clone the repository:

git clone https://github.com/yourusername/typefully-mcp-server.git
cd typefully-mcp-server
  1. Install dependencies:

npm install
  1. Build the project:

npm run build

Configuration

Set your Typefully API key as an environment variable:

export TYPEFULLY_API_KEY="your_api_key_here"

Or create a .env file:

TYPEFULLY_API_KEY=your_api_key_here

Usage

Running the Server

npm start

Or for development:

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

{
  "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

{
  "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.

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:

{
  "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

Available Tools

3 tools
create_draftA

Create a new draft on Typefully. Supports single tweets and threads.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe content of the tweet or thread. Use 4 consecutive newlines (\n\n\n\n) to separate tweets in a thread.
threadifyNoAutomatically split content into tweets if it exceeds character limits.
schedule_dateNoISO date string for scheduling the tweet (e.g., "2024-12-25T10:00:00Z").
auto_retweet_enabledNoEnable automatic retweet.
auto_plug_enabledNoEnable automatic plug.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, description clearly indicates it creates a draft (non-destructive), but could mention that it does not publish directly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with key action, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity and no output schema, description is mostly adequate but lacks information on return value or post-creation behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema fully describes all 5 parameters (100% coverage); description adds minimal value beyond mentioning thread support, which is already in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Create' and resource 'a new draft on Typefully', and specifies support for single tweets and threads, distinguishing it from sibling tools which get drafts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use vs alternatives; it implies creation of drafts but does not mention when not to use or contrast with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_published_draftsA

Get recently published drafts from Typefully.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states 'recently' without specifying time window, ordering, or pagination. Does not disclose if it's a read-only operation or any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, very concise. Could be slightly expanded (e.g., mention no parameters needed) without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple parameterless tool, but lacks details on output structure or behavior. With siblings, operation is clear but incomplete for full agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so schema coverage is 100%. Description adds no extra parameter info, but baseline for 0 params is 4. However, it could mention output format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('recently published drafts from Typefully'), distinguishing it from siblings: create_draft (creation) and get_scheduled_drafts (scheduled, not published).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives are mentioned, but the context implies use when needing published drafts. Lacks guidance on when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scheduled_draftsA

Get recently scheduled drafts from Typefully.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must disclose behavioral traits. It does not specify that this is a read-only operation, what 'recently' means (e.g., time window), or any edge cases like empty results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is front-loaded with the action and resource, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of parameters or output schema, the description is minimally sufficient. However, it omits details like the time range or sort order for 'recently', leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters (zero params, baseline 4). The description adds the qualifier 'recently' which provides some semantic context beyond the empty schema, indicating a time-based filter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'scheduled drafts' with the source 'Typefully'. It distinguishes from siblings like 'create_draft' (creation) and 'get_published_drafts' (published vs scheduled).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. No mention of when not to use it or any context-dependent conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
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
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables creating, managing, and publishing X/Twitter posts, threads, and replies directly through Claude chat. Supports draft management with the ability to create, list, publish, and delete tweet drafts.
    10
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with X (Twitter) to post tweets, threads, and replies while retrieving tweet metrics and account information. It supports core management tasks like deleting tweets and verifying authentication through the Twitter API.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with X (Twitter) API v2 for posting tweets, searching, liking, retweeting, and more through natural language.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pascalporedda/typefully-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server