loading…
Search for a command to run...
loading…
An MCP server that retrieves and ranks humorous roasts, jokes, and memes about real or fictional characters from Twitter/X. It leverages LLMs for intelligent qu
An MCP server that retrieves and ranks humorous roasts, jokes, and memes about real or fictional characters from Twitter/X. It leverages LLMs for intelligent query generation and uses social engagement metrics to identify and rank high-quality content.
An MCP server that finds humorous roasts, jokes, and memes about any character (real or fictional) by searching Twitter/X. Uses social proof (engagement metrics) to rank content, with targeted LLM involvement for query generation, batch quality assessment, and nickname extraction.
npm install
npm run build
Create a .env file with:
# Twitter/X API credentials (required)
TWITTER_BEARER_TOKEN=your_twitter_bearer_token_here
# LLM API key (at least one required)
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# or
OPENAI_API_KEY=your_openai_api_key_here
Add to your Claude Desktop MCP configuration:
{
"mcpServers": {
"slander": {
"command": "node",
"args": ["/path/to/slander_mcp/dist/index.js"],
"env": {
"TWITTER_BEARER_TOKEN": "your_token",
"ANTHROPIC_API_KEY": "your_key"
}
}
}
}
generate_search_queryGenerate effective Twitter search queries for finding slander about a target.
Input:
target (string, required): Name of character to search forOutput:
queries: Array of search query stringsExample:
Input: { "target": "LeBron James" }
Output: { "queries": ["LeBron James ratio", "LeChoke", "LeBron hairline", ...] }
fetch_postsFetch posts from Twitter for a given query, looping until quality threshold is met.
Input:
query (string, required): Search queryloop_limit (number, optional): Max fetch iterations (default: 5)count (number, optional): Posts per fetch (default: 10)target (string, optional): Target name for quality evaluationOutput:
posts: Array of post objects with engagement metricsiterations: Number of fetch loopsstopped_reason: "quality_threshold" or "loop_limit"rank_postsRank fetched posts by engagement, separate text from media, extract nicknames.
Input:
posts (array, required): Posts from fetch_poststop_n (number, optional): Results per category (default: 3)target (string, optional): Target name for nickname extractionOutput:
text_posts: Top text posts ranked by engagementmedia_posts: Top media posts ranked by engagementnicknames: Extracted nicknames/slang for the targetEngagement Score Formula:
score = (likes * 1.0) + (retweets * 2.0) + (replies * 0.5)
Generate search queries:
generate_search_query({ target: "LeBron James" })
Fetch posts for each query:
fetch_posts({ query: "LeChoke", target: "LeBron James" })
Combine and rank results:
rank_posts({ posts: [...all_posts], top_n: 5, target: "LeBron James" })
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"slander-mcp": {
"command": "npx",
"args": []
}
}
}