MCP Telegram Server
An MCP server for interacting with Telegram. It allows searching, sending messages, and managing chats using the Telegram API.
π Demo
- Open https://tg-mcp.redevest.ru/setup to begin the authentication flow.
- After finishing, youβll receive a ready-to-use
mcp.json
with your Bearer token. - Use the config with your MCP client to check out this MCP server capabilities.
π Table of Contents
- β¨ Features
- π Prerequisites
- π Choose Your Installation Path
- ποΈ Server Modes
- π¦ PyPI Installation
- π³ Docker Deployment (Production)
- π§ Available Tools
- π Health & Session Monitoring
- π Project Structure
- π¦ Dependencies
- π Security & Authentication
- π€ Contributing
- π License
- π Acknowledgments
β¨ Features
Feature | Description |
---|---|
π Smart Search | Global & per-chat message search with filters |
π¬ Messaging | Send, edit, reply with formatting support |
π₯ Contacts | Search users, get profiles, manage contacts |
π± Phone Integration | Message by phone number, auto-contact management |
π§ Low-level API | Direct MTProto access for advanced operations |
π Multi-User Auth | Bearer token authentication with session isolation |
ποΈ Dual Transport | HTTP (multi-user) and stdio (single-user) support |
π Session Management | LRU cache, automatic cleanup, health monitoring |
β‘ Performance | Async operations, parallel queries, connection pooling |
π‘οΈ Reliability | Auto-reconnect, structured logging, error handling |
π― AI Optimization | Literal parameter constraints guide AI model choices |
π Prerequisites
- Python 3.10+
- Telegram API credentials (get them here)
- MCP-compatible client (Cursor, Claude Desktop, etc.)
π Choose Your Installation Path
Path | Best For | Complexity | Maintenance |
---|---|---|---|
π¦ PyPI | Most users, quick setup | βββββ Easy | π§ Manual updates |
π³ Docker (Production) | Production deployment | ββββ Easy | π³ Container updates |
π» Local Development | Developers, contributors | βββ Medium | π§ Manual updates |
Choose your path below:
ποΈ Server Modes
The MCP server supports three distinct operation modes:
Mode | Transport | Authentication | Use Case |
---|---|---|---|
STDIO | stdio | Disabled | Development with Cursor IDE |
HTTP_NO_AUTH | HTTP | Disabled | Development HTTP server |
HTTP_AUTH | HTTP | Required (Bearer token) | Production deployment |
π¦ PyPI Installation
1. Install from PyPI
pip install fast-mcp-telegram
2. Telegram Authentication & Token Generation
The setup process creates an authenticated session and generates a unique Bearer token for your use:
fast-mcp-telegram-setup --api-id="your_api_id" --api-hash="your_api_hash" --phone-number="+123456789"
# Additional options available:
# --overwrite # Auto-overwrite existing session
# --session-name NAME # Use custom session name (advanced users)
π Note: The setup script automatically loads .env
files from the current directory if they exist, making authentication seamless. You can create a .env
file by copying .env.example
and filling in your values.
π Prefer a browser? Run the server and open /setup
to authenticate and download a readyβtoβuse mcp.json
without running the CLI setup.
π Bearer Token Output: After successful authentication, you'll receive a Bearer token:
β
Setup complete!
π Session saved to: ~/.config/fast-mcp-telegram/AbCdEfGh123456789.session
π Bearer Token: AbCdEfGh123456789KLmnOpQr...
π‘ Use this Bearer token for authentication when using the MCP server:
Authorization: Bearer AbCdEfGh123456789KLmnOpQr...
3. Configure Your MCP Client
For STDIO mode (development with Cursor IDE):
{
"mcpServers": {
"telegram": {
"command": "fast-mcp-telegram",
"env": {
"API_ID": "your_api_id",
"API_HASH": "your_api_hash",
"PHONE_NUMBER": "+123456789"
}
}
}
}
For HTTP_NO_AUTH mode (development HTTP server):
{
"mcpServers": {
"telegram": {
"url": "http://localhost:8000"
}
}
}
For HTTP_AUTH mode (production with Bearer token):
{
"mcpServers": {
"telegram": {
"url": "https://your-server.com",
"headers": {
"Authorization": "Bearer AbCdEfGh123456789KLmnOpQr..."
}
}
}
}
4. Start Using!
{"tool": "search_messages_globally", "params": {"query": "hello", "limit": 5}}
{"tool": "send_message", "params": {"chat_id": "me", "message": "Hello from AI!"}}
βΉοΈ Session Info:
- STDIO mode: Session saved to
~/.config/fast-mcp-telegram/telegram.session
- HTTP_NO_AUTH mode: Session saved to
~/.config/fast-mcp-telegram/telegram.session
- HTTP_AUTH mode: Sessions saved as
~/.config/fast-mcp-telegram/{token}.session
- Session Monitoring: Use
/health
HTTP endpoint to monitor active sessions and server statistics
β You're all set! Jump to Available Tools to explore features.
π Web Setup (Browser Alternative to CLI)
In addition to the CLI setup, the server now includes a built-in browser setup flow as a first-class alternative:
- Open your serverβs
/setup
route (for the demo, go tohttps://tg-mcp.redevest.ru/setup
). - Enter your phone number, then the code (and 2FA if enabled).
- The server immediately generates and displays a ready-to-use
mcp.json
with your Bearer token and a one-click download.
This is ideal if you prefer a guided flow without running the CLI. The CLI setup remains fully supported.
π³ Docker Deployment (Production)
Prerequisites
- Docker & Docker Compose installed
- Telegram API credentials (get them here)
- Domain name (for Traefik reverse proxy setup)
1. Environment Setup
Create a .env
file in your project directory. You can copy from the example:
cp .env.example .env
Then edit .env
with your actual values:
# Telegram API Credentials
API_ID=your_api_id
API_HASH=your_api_hash
# Domain Configuration (for remote docker deployment)
DOMAIN=your-domain.com
# Server Configuration
SERVER_MODE=http-auth # stdio, http-no-auth, or http-auth
HOST=0.0.0.0 # Bind address (auto-adjusts based on server mode)
PORT=8000 # Service port
# Optional: Session Management
MAX_ACTIVE_SESSIONS=10 # LRU cache limit for concurrent sessions
# Optional: Logging
LOG_LEVEL=INFO
Note: Phone numbers are specified during setup via CLI options rather than environment variables for better security and flexibility.
2. Telegram Authentication & Token Generation
Important: The setup process creates an authenticated Telegram session file and generates a Bearer token for HTTP authentication.
# 1. Run authentication setup with your phone number
docker compose --profile setup run --rm setup --phone-number="+1234567890"
# Alternative: Use all CLI options (bypasses .env file reading)
docker compose --profile setup run --rm setup \
--api-id="your_api_id" \
--api-hash="your_api_hash" \
--phone-number="+1234567890"
# 2. Note the Bearer token output after successful setup
# π Bearer Token: AbCdEfGh123456789KLmnOpQr...
# 3. Start the main MCP server (if not already running)
docker compose --profile server up -d
Setup Options:
- Default: Use
--phone-number
with .env file for API credentials - Full CLI: Specify all credentials via command line options
- Additional options:
--overwrite
,--session-name
available
π Browser alternative: After the server is reachable, open https://<DOMAIN>/setup
to authenticate via web and download mcp.json
(no CLI needed). For local testing, use http://localhost:8000/setup
.
Profile System:
--profile setup
: Runs only the Telegram authentication setup--profile server
: Runs only the MCP server (after authentication)- No profile: No services start (prevents accidental startup)
Authentication Output:
- Session file:
~/.config/fast-mcp-telegram/{token}.session
- Bearer token: Unique token for HTTP authentication
- Multi-user support: Each setup creates isolated session
3. Domain Configuration (Optional)
The default domain is your-domain.com
. To use your own domain:
- Set up DNS: Point your domain to your server
- Configure environment: Add
DOMAIN=your-domain.com
to your.env
file - Traefik network: Ensure
traefik-public
network exists on your host
Example:
# In your .env file
DOMAIN=my-telegram-bot.example.com
4. Local Docker Deployment
# After completing setup, start the MCP server (if not already running)
docker compose --profile server up --build -d
# Check logs
docker compose logs -f fast-mcp-telegram
# Check health
docker compose ps
Note: Run setup with docker compose --profile setup run --rm setup --phone-number="+1234567890"
to authenticate and generate a Bearer token. No server shutdown or restart required.
The service will be available at http://localhost:8000
(internal) and through Traefik if configured.
5. Remote Server Deployment
For production deployment on a remote server:
# Set up environment variables for remote deployment
export VDS_USER=your_server_user
export VDS_HOST=your.server.com
export VDS_PROJECT_PATH=/path/to/deployment
# Run the deployment script
./scripts/deploy-mcp.sh
Post-deployment setup:
- SSH to your server and run the Telegram authentication setup:
ssh your_server_user@your.server.com cd /path/to/deployment docker compose --profile setup run --rm setup --phone-number="+1234567890"
- After setup completes, start the MCP server (if not already running):
docker compose --profile server up -d
The deployment script will:
- Transfer project files to your server
- Copy environment file
- Build the Docker containers (but won't start services automatically)
6. Configure Your MCP Client
For HTTP_AUTH mode (production with Bearer token):
{
"mcpServers": {
"telegram": {
"url": "https://your-domain.com",
"headers": {
"Authorization": "Bearer AbCdEfGh123456789KLmnOpQr..."
}
}
}
}
For HTTP_NO_AUTH mode (development HTTP server):
{
"mcpServers": {
"telegram": {
"url": "http://localhost:8000"
}
}
}
β οΈ Important: Replace AbCdEfGh123456789KLmnOpQr...
with your actual Bearer token from the setup process.
7. Verify Deployment
# Check container status
docker compose ps
# View logs
docker compose logs fast-mcp-telegram
# Test health endpoint (includes session statistics)
curl -s https://your-domain.com/health
Environment Variables:
SERVER_MODE=http-auth
- Server mode (stdio, http-no-auth, http-auth)HOST=0.0.0.0
- Bind to all interfaces (auto-adjusts based on server mode)PORT=8000
- Service portDOMAIN
- Domain for Traefik routing and web setupAPI_ID
/API_HASH
- Telegram API credentials (used by setup)- Phone number provided via CLI
--phone-number
option during setup
Docker Compose Configuration:
The docker-compose.yml
automatically sets the server to http-auth
mode for production deployment with Bearer token authentication.
π§ Available Tools
π― AI-Optimized Parameter Constraints
This MCP server uses Literal
parameter types to guide AI model choices and ensure valid inputs:
parse_mode
: Constrained to"markdown"
or"html"
(no invalid values)chat_type
: Limited to"private"
,"group"
, or"channel"
for search filters- Enhanced Validation: FastMCP automatically validates these constraints
- Better AI Guidance: AI models see only valid options, reducing errors
π Supported Chat ID Formats
All tools that accept a chat_id
parameter support these formats:
'me'
- Saved Messages (your own messages)@username
- Username (without @ symbol)123456789
- Numeric user ID-1001234567890
- Channel ID (always starts with -100)
π Search Query Guidelines
Important: Telegram search has specific limitations that AI models should understand:
β What Works:
- Exact words:
"deadline"
,"meeting"
,"project"
- Multiple terms:
"deadline, meeting, project"
(comma-separated) - Partial words:
"proj"
(finds "project", "projects", etc.) - Case insensitive:
"DEADLINE"
finds "deadline", "Deadline", etc.
β What Doesn't Work:
- Wildcards:
"proj*"
,"meet%"
,"dead*line"
- Regex patterns:
"^project"
,"deadline$"
,"proj.*"
- Boolean operators:
"project AND deadline"
,"meeting OR call"
- Quotes for exact phrases:
"exact phrase"
(treated as separate words)
π‘ Best Practices:
- Use simple, common words that are likely to appear in messages
- Try multiple related terms:
"deadline, due, urgent"
- Use partial words for broader matches:
"proj"
instead of"project*"
Tool | Purpose | Key Features |
---|---|---|
search_messages_globally | Search messages across all chats | Global search, filters by date/chat type |
search_messages_in_chat | Search messages within specific chat | Per-chat search, total count support |
send_message | Send new messages | Markdown/HTML formatting, replies |
edit_message | Edit existing messages | Update message content with formatting |
read_messages | Read specific messages by ID | Bulk reading, full metadata |
find_chats | Find users/groups/channels (uniform entity schema) | Name/username/phone; multi-term supported |
get_chat_info | Get user/chat profile information | Bio, status, online state |
send_message_to_phone | Message by phone number | Auto-contact management |
invoke_mtproto | Direct Telegram API access | Advanced operations |
π search_messages_globally
Search messages across all Telegram chats
search_messages_globally(
query: str, // Search terms (comma-separated, required)
limit?: number = 50, // Max results
chat_type?: 'private'|'group'|'channel', // Filter by chat type
min_date?: string, // ISO date format
max_date?: string // ISO date format
)
Examples:
// Global search across all chats
{"tool": "search_messages_globally", "params": {"query": "deadline", "limit": 20}}
// Multi-term global search (comma-separated)
{"tool": "search_messages_globally", "params": {"query": "project, launch", "limit": 30}}
// Partial word search (finds "project", "projects", etc.)
{"tool": "search_messages_globally", "params": {"query": "proj", "limit": 20}}
// Filtered by date and type
{"tool": "search_messages_globally", "params": {
"query": "meeting",
"chat_type": "private",
"min_date": "2024-01-01"
}}
β Common AI Model Mistakes to Avoid:
// DON'T use wildcards - these won't work:
{"tool": "search_messages_globally", "params": {"query": "proj*"}} // β
{"tool": "search_messages_globally", "params": {"query": "meet%"}} // β
// DON'T use regex - these won't work:
{"tool": "search_messages_globally", "params": {"query": "^project"}} // β
{"tool": "search_messages_globally", "params": {"query": "deadline$"}} // β
// DO use simple terms instead:
{"tool": "search_messages_globally", "params": {"query": "proj"}} // β
{"tool": "search_messages_globally", "params": {"query": "meet"}} // β
{"tool": "search_messages_globally", "params": {"query": "project"}} // β
{"tool": "search_messages_globally", "params": {"query": "deadline"}} // β
π search_messages_in_chat
Search messages within a specific Telegram chat
search_messages_in_chat(
chat_id: str, // Target chat ID (see Supported Chat ID Formats above)
query?: str, // Search terms (optional, returns latest if omitted)
limit?: number = 50, // Max results
min_date?: string, // ISO date format
max_date?: string // ISO date format
)
Examples:
// Search in specific chat
{"tool": "search_messages_in_chat", "params": {"chat_id": "-1001234567890", "query": "launch"}}
// Get latest messages from Saved Messages (no query = latest messages)
{"tool": "search_messages_in_chat", "params": {"chat_id": "me", "limit": 10}}
// Multi-term search in chat (comma-separated)
{"tool": "search_messages_in_chat", "params": {"chat_id": "telegram", "query": "update, news"}}
// Partial word search in chat
{"tool": "search_messages_in_chat", "params": {"chat_id": "me", "query": "proj"}}
π‘ Search Tips:
- No query: Returns latest messages from the chat
- Simple terms: Use common words that appear in messages
- Multiple terms: Use comma-separated words for broader results
- Partial words: Use shorter forms to catch variations (e.g., "proj" finds "project", "projects")
π¬ send_message
Send new messages with formatting
send_message(
chat_id: str, // Target chat ID (see Supported Chat ID Formats above)
message: str, // Message content
reply_to_msg_id?: number, // Reply to specific message
parse_mode?: 'markdown'|'html' // Text formatting
)
Examples:
// Send new message
{"tool": "send_message", "params": {
"chat_id": "me",
"message": "Hello from AI! π"
}}
// Reply with formatting
{"tool": "send_message", "params": {
"chat_id": "@username",
"message": "*Important:* Meeting at 3 PM",
"parse_mode": "markdown",
"reply_to_msg_id": 67890
}}
βοΈ edit_message
Edit existing messages with formatting
edit_message(
chat_id: str, // Target chat ID (see Supported Chat ID Formats above)
message_id: number, // Message ID to edit (required)
message: str, // New message content
parse_mode?: 'markdown'|'html' // Text formatting
)
Examples:
// Edit existing message
{"tool": "edit_message", "params": {
"chat_id": "-1001234567890",
"message_id": 12345,
"message": "Updated: Project deadline extended"
}}
// Edit with formatting
{"tool": "edit_message", "params": {
"chat_id": "me",
"message_id": 67890,
"message": "*Updated:* Meeting rescheduled to 4 PM",
"parse_mode": "markdown"
}}
π read_messages
Read specific messages by ID
read_messages(
chat_id: str, // Chat identifier (see Supported Chat ID Formats above)
message_ids: number[] // Array of message IDs to retrieve
)
Examples:
// Read multiple messages from Saved Messages
{"tool": "read_messages", "params": {
"chat_id": "me",
"message_ids": [680204, 680205, 680206]
}}
// Read from a channel
{"tool": "read_messages", "params": {
"chat_id": "-1001234567890",
"message_ids": [123, 124, 125]
}}
π₯ find_chats
Find users, groups, and channels (uniform entity schema)
find_chats(
query: str, // Search term(s); comma-separated for multi-term
limit?: number = 20, // Max results to return
chat_type?: 'private'|'group'|'channel' // Optional filter
)
Search capabilities:
- Saved contacts - Your Telegram contacts
- Global users - Public Telegram users
- Channels & groups - Public channels and groups
- Multi-term - "term1, term2" runs parallel searches and merges/dedupes
Query formats:
- Name:
"John Doe"
- Username:
"telegram"
(without @) - Phone:
"+1234567890"
Examples:
// Find by username
{"tool": "find_chats", "params": {"query": "telegram"}}
// Find by name
{"tool": "find_chats", "params": {"query": "John Smith"}}
// Find by phone
{"tool": "find_chats", "params": {"query": "+1234567890"}}
// Find only channels matching a term
{"tool": "find_chats", "params": {"query": "news", "chat_type": "channel"}}
βΉοΈ get_chat_info
Get user/chat profile information (enriched with member/subscriber counts)
get_chat_info(
chat_id: str // User/channel identifier (see Supported Chat ID Formats above)
)
Returns: Bio, status, online state, profile photos, and more.
Also includes, when applicable:
members_count
for groups (regular groups and megagroups)subscribers_count
for channels (broadcast)
Counts are fetched via Telethon full-info requests and reflect current values.
π§ Uniform Entity Schema
All tools return chat/user objects in the same schema via build_entity_dict
:
{
"id": 133526395,
"title": "John Doe", // falls back to full name or @username
"type": "private", // one of: private | group | channel
"username": "johndoe", // if available
"first_name": "John", // users
"last_name": "Doe", // users
"members_count": 1234, // groups (when available)
"subscribers_count": 56789 // channels (when available)
}
find_chats
returns a list of these entities. Message search results include a chat
field in the same format.
Examples:
// Get user details by ID
{"tool": "get_chat_info", "params": {"chat_id": "133526395"}}
// Get details by username
{"tool": "get_chat_info", "params": {"chat_id": "telegram"}}
// Get channel information
{"tool": "get_chat_info", "params": {"chat_id": "-1001234567890"}}
π± send_message_to_phone
Message by phone number (auto-contact management)
send_message_to_phone(
phone_number: str, // Phone with country code (+1234567890)
message: str, // Message content
first_name?: str = "Contact", // For new contacts
last_name?: str = "Name", // For new contacts
remove_if_new?: boolean = false, // Remove temp contact after send
parse_mode?: 'markdown'|'html' // Text formatting
)
Features:
- Auto-creates contact if phone not in contacts
- Optional contact cleanup after sending
- Full formatting support
Examples:
// Basic message to new contact
{"tool": "send_message_to_phone", "params": {
"phone_number": "+1234567890",
"message": "Hello from AI! π€"
}}
// Message with formatting and cleanup
{"tool": "send_message_to_phone", "params": {
"phone_number": "+1234567890",
"message": "*Urgent:* Meeting rescheduled to 4 PM",
"parse_mode": "markdown",
"remove_if_new": true
}}
π§ invoke_mtproto
Direct Telegram API access
invoke_mtproto(
method_full_name: str, // Full API method name (e.g., "messages.GetHistory")
params_json: str // JSON string of method parameters
)
Use cases: Advanced operations not covered by standard tools
Examples:
// Get your own user information
{"tool": "invoke_mtproto", "params": {
"method_full_name": "users.GetFullUser",
"params_json": "{\"id\": {\"_\": \"inputUserSelf\"}}"
}}
// Get chat message history
{"tool": "invoke_mtproto", "params": {
"method_full_name": "messages.GetHistory",
"params_json": "{\"peer\": {\"_\": \"inputPeerChannel\", \"channel_id\": 123456, \"access_hash\": 0}, \"limit\": 10}"
}}
π Health & Session Monitoring
Monitor server health and session statistics
For HTTP deployments, the server provides a /health
endpoint for monitoring:
# Check server health and session statistics
curl -s https://your-domain.com/health
Response includes:
- Server status and transport mode
- Active session count and limits
- Per-session statistics (token prefix, last access time, connection status)
- Service metadata
Example response:
{
"status": "healthy",
"service": "telegram-mcp-server",
"transport": "http",
"active_sessions": 3,
"max_sessions": 10,
"sessions": [
{
"token_prefix": "AbCdEfGh...",
"hours_since_access": 0.25,
"is_connected": true,
"last_access": "Thu Jan 4 16:30:15 2025"
}
]
}
π Project Structure
fast-mcp-telegram/
βββ src/ # Source code
β βββ client/ # Telegram client management
β βββ config/ # Configuration and logging
β βββ server_components/ # Server modules (auth, health, tools, web setup)
β βββ templates/ # Web setup interface templates
β βββ tools/ # MCP tool implementations
β βββ utils/ # Utility functions
β βββ cli_setup.py # CLI setup with pydantic-settings
β βββ server.py # Main server entry point
βββ tests/ # Test suite
βββ memory-bank/ # Project documentation
βββ scripts/ # Deployment scripts
βββ .env.example # Environment template
βββ docker-compose.yml # Docker configuration
βββ Dockerfile # Container build
βββ pyproject.toml # Project configuration
βββ README.md # This file
Session Management: Session files are stored in the standard user config directory:
- All installations:
~/.config/fast-mcp-telegram/telegram.session
(persistent storage) - Multi-user deployments:
~/.config/fast-mcp-telegram/{token}.session
(token-based isolation)
Security Note: Session files contain sensitive authentication data and are never committed to version control. Each environment (local, Docker, remote server) maintains its own authenticated session.
π¦ Dependencies
Package | Purpose |
---|---|
fastmcp | MCP server framework |
telethon | Telegram API client |
loguru | Structured logging |
aiohttp | Async HTTP client |
pydantic-settings | Configuration management |
Version Management: Single source of truth in src/_version.py
with automatic synchronization across build system, runtime, and Docker deployments.
π Security & Authentication
π¨ CRITICAL SECURITY WARNING: This MCP server supports both single-user and multi-user deployments with Bearer token authentication.
Bearer Token Authentication System
- Per-Session Authentication: Each session requires a unique Bearer token
- Session Isolation: Each token creates an isolated Telegram session
- Token Generation: Cryptographically secure 256-bit tokens via setup script
- HTTP Authentication: Mandatory Bearer tokens for HTTP transport (
Authorization: Bearer <token>
) - Development Mode:
DISABLE_AUTH=true
bypasses authentication for development
Multi-User Security Model
- Session Separation: Each user gets their own authenticated session file
- Token Privacy: Bearer tokens should be treated as passwords and kept secure
- Session Files: Contain complete Telegram access for the associated token
- Account Access: Anyone with a valid Bearer token can perform ANY action on that associated Telegram account
Production Security Recommendations
- Secure Token Distribution: Distribute Bearer tokens through secure channels only
- Token Rotation: Regularly generate new tokens and invalidate old ones
- Access Monitoring: Monitor session activity through
/health
HTTP endpoint - Network Security: Use HTTPS/TLS and consider IP restrictions
- Session Management: Regularly clean up unused sessions and tokens
π€ Contributing
We welcome contributions from the community! Please see our CONTRIBUTING.md for detailed development setup, testing guidelines, and contribution process.
Quick Start for Contributors
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit changes:
git commit -m 'Add amazing feature'
- Push to branch:
git push origin feature/amazing-feature
- Open a Pull Request
For detailed development setup and contribution guidelines, please refer to CONTRIBUTING.md.
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
- FastMCP - MCP server framework
- Telethon - Telegram API library
- Model Context Protocol - Protocol specification
Made with β€οΈ for the AI automation community
β Star us on GitHub β’ π¬ Join our community
mcp-name: io.github.leshchenko1979/fast-mcp-telegram
Related Servers
Human-in-the-Loop Slack MCP Server
Allows AI assistants to request information and receive responses from humans via Slack.
Twilio Manager MCP
Manage Twilio resources such as subaccounts, phone numbers, and regulatory bundles using the Twilio API.
MCP ChatGPT Proxy
A production-ready MCP server for ChatGPT and o3-pro, featuring caching, cost tracking, and rate limiting.
Perplexity Chat
A Python-based server for the Perplexity API that manages chat history and conversations.
Gmail MCP Server
Allows AI agents to search Gmail threads, learn your writing style, and draft emails.
NotifyMeMaybe
A server for sending multi-platform notifications and creating interactive AI workflows, with support for Telegram, webhooks, and synchronous user interactions.
Pushinator MCP
Send push notifications via the Pushinator service. Requires an API token from your Pushinator account.
X (Twitter)
Create and publish posts and threads on X (Twitter) directly from your chat using LLMs.
Deepseek R1
An MCP server for the Deepseek R1 model, using the Deepseek API.
Slack
Interact with Slack workspaces to read and send messages directly through your AI assistant.