x-mcp-server
X MCP Server
Сервер Model Context Protocol (MCP) на TypeScript для официального X API.
Этот проект позволяет MCP-совместимым агентам, включая агентов ChatGPT, безопасно читать из учетных записей X и публиковать в них через локальный сервер, работающий на вашем компьютере.
Сервер поддерживает:
Чтение аутентифицированной учетной записи X.
Поиск пользователей X по имени пользователя.
Чтение постов по идентификатору.
Список последних постов пользователя.
Поиск последних постов с использованием синтаксиса поиска X.
Создание постов и ответов, когда режим записи явно включен.
Выбор отдельной учетной записи X для каждой локальной установки на компьютере.
Работа через
stdioдля локальных MCP-хостов.Работа через локальный Streamable HTTP для ChatGPT через OpenAI Secure MCP Tunnels.
Статус проекта
Это функциональный MVP.
Реализовано:
MCP-сервер через
stdio.MCP-сервер через Streamable HTTP.
Клиент официального X API.
Локальная конфигурация с несколькими учетными записями.
Безопасный режим
read-onlyпо умолчанию.Явный режим
read-writeдля публикации и ответов.Локальный помощник OAuth 2.0 Authorization Code + PKCE для повторной авторизации учетной записи X.
Модульные тесты с использованием Vitest.
Руководство по подключению ChatGPT через OpenAI Secure MCP Tunnels.
Руководство по жизненному циклу локального сервера для ручного и автоматического запуска в Windows.
Related MCP server: X API FastMCP Server
Как это работает
Для локальных MCP-хостов:
MCP host
-> stdio
-> x-mcp-server
-> official X APIДля агентов ChatGPT:
ChatGPT agent
-> custom MCP app
-> OpenAI Secure MCP Tunnel
-> tunnel-client on your computer
-> http://127.0.0.1:3001/mcp
-> x-mcp-server
-> official X APIУчетные данные X остаются локальными. ChatGPT подключается к локальному MCP-серверу через туннель; он не получает ваши токены доступа X.
Доступные MCP-инструменты
Инструмент | Тип | Описание |
| Чтение | Возвращает выбранный локальный профиль, настроенные учетные записи, режим и аутентифицированного пользователя X. |
| Чтение | Возвращает аутентифицированного пользователя X. |
| Чтение | Ищет пользователя X по имени пользователя. |
| Чтение | Читает пост по идентификатору. |
| Чтение | Выводит список последних постов, автором которых является указанный идентификатор пользователя. |
| Чтение | Ищет последние посты с использованием официального синтаксиса запросов X. |
| Запись | Публикует новый пост. Требуется |
| Запись | Отвечает на пост. Требуется |
Инструменты записи блокируются, если не задано X_MCP_MODE=read-write.
Требования
Node.js 20 или новее.
Учетная запись X Developer.
Приложение X Developer с включенным OAuth 2.0.
Области чтения X:
tweet.read users.read.Область записи X для публикации и ответов:
tweet.write.Рекомендуемая область обновления X:
offline.access.Для ChatGPT: включенный режим разработчика.
Для локальных подключений ChatGPT: OpenAI Secure MCP Tunnel и
tunnel-client.
Пошаговая установка
1. Клонирование репозитория
git clone https://github.com/lluisfont/x-mcp-server.git
cd x-mcp-serverЕсли у вас уже есть репозиторий:
cd C:\Repos\x-mcp-server
git pull2. Установка зависимостей
npm install3. Создание локального файла окружения
Copy-Item .env.example .envОтредактируйте .env локально.
Не коммитьте .env. Он может содержать токены доступа, токены обновления, секреты клиента и закрытые ключи API.
4. Настройка активной учетной записи X
Для именованной локальной учетной записи:
X_MCP_ACCOUNT=fcbnews2026
X_MCP_MODE=read-only
X_API_BASE_URL=https://api.x.com
X_ACCOUNT_FCBNEWS2026_USER_ACCESS_TOKEN=
X_ACCOUNT_FCBNEWS2026_REFRESH_TOKEN=Для нескольких учетных записей на одном компьютере:
X_MCP_ACCOUNT=fcbnews2026
X_MCP_MODE=read-only
X_ACCOUNT_FCBNEWS2026_USER_ACCESS_TOKEN=
X_ACCOUNT_FCBNEWS2026_REFRESH_TOKEN=
X_ACCOUNT_LLUISFONT_USER_ACCESS_TOKEN=
X_ACCOUNT_LLUISFONT_REFRESH_TOKEN=X_MCP_ACCOUNT выбирает локальный профиль, используемый этой установкой. Разные компьютеры могут выбирать разные учетные записи без изменения кода.
Также поддерживается устаревший режим одной учетной записи:
X_MCP_ACCOUNT=default
X_USER_ACCESS_TOKEN=Новые установки должны использовать именованные учетные записи.
5. Выбор транспорта
Для локальных MCP-хостов, которые запускают процесс напрямую:
X_MCP_TRANSPORT=stdioДля ChatGPT через локальный туннель:
X_MCP_TRANSPORT=http
X_MCP_HTTP_PORT=3001
X_MCP_HTTP_PATH=/mcp6. Запуск проверки типов и тестов
npm run typecheck
npm test
npm run build7. Запуск MCP-сервера
Для stdio:
npm run devДля локального HTTP:
npm run dev:httpКонечная точка HTTP MCP по умолчанию:
http://127.0.0.1:3001/mcpПроверка работоспособности:
Invoke-RestMethod http://127.0.0.1:3001/healthz | ConvertTo-Json -CompressОжидаемый ответ:
{"ok":true,"transport":"http","activeAccount":"fcbnews2026","mode":"read-only"}Жизненный цикл локального MCP-сервера
Когда ChatGPT использует этот MCP через туннель, должны быть запущены два локальных процесса:
1. The MCP HTTP server
-> npm run dev:http
-> http://127.0.0.1:3001/mcp
2. tunnel-client
-> .\.tools\tunnel-client\tunnel-client.exe run --profile <profile>
-> OpenAI Secure MCP TunnelЕсли любой из процессов остановлен, ChatGPT не сможет использовать MCP-инструменты.
Запуск вручную
Терминал 1:
cd C:\Repos\x-mcp-server
npm run dev:httpТерминал 2:
cd C:\Repos\x-mcp-server
.\.tools\tunnel-client\tunnel-client.exe run --profile x-fcbnewsДержите оба терминала открытыми.
Проверка локальной доступности
Проверьте MCP-сервер:
Invoke-RestMethod http://127.0.0.1:3001/healthz | ConvertTo-Json -CompressПроверьте туннельный клиент:
Invoke-WebRequest http://127.0.0.1:8080/readyz -UseBasicParsingКонечная точка готовности туннеля должна возвращать HTTP 200.
Остановка вручную
Нажмите Ctrl+C в:
Терминале, в котором выполняется
npm run dev:http.Терминале, в котором выполняется
tunnel-client run.
Когда оба процесса остановлены, ChatGPT больше не имеет доступа к локальному MCP-серверу.
Смена учетной записи или режима безопасности
Отредактируйте .env.
Смените активную учетную запись:
X_MCP_ACCOUNT=fcbnews2026Включите режим записи:
X_MCP_MODE=read-writeВернитесь в безопасный режим только для чтения:
X_MCP_MODE=read-onlyПерезапустите MCP HTTP-сервер после изменения .env:
Ctrl+C
npm run dev:httpТуннель может оставаться запущенным, если локальный порт и путь MCP не изменились.
Автоматический запуск при входе в Windows
Для компьютера, который должен регулярно размещать этот MCP, используйте Планировщик заданий Windows.
Создайте локальный скрипт запуска, например:
C:\Users\<user>\mcp-start\x-fcbnews-start.ps1Скрипт:
$repo = "C:\Repos\x-mcp-server"
$profile = "x-fcbnews"
Set-Location $repo
Start-Process powershell.exe -ArgumentList @(
"-NoExit",
"-ExecutionPolicy", "Bypass",
"-Command", "cd `"$repo`"; npm run dev:http"
) -WindowStyle Minimized
Start-Sleep -Seconds 5
Start-Process powershell.exe -ArgumentList @(
"-NoExit",
"-ExecutionPolicy", "Bypass",
"-Command", "cd `"$repo`"; .\.tools\tunnel-client\tunnel-client.exe run --profile $profile"
) -WindowStyle MinimizedЗарегистрируйте запланированное задание:
$action = New-ScheduledTaskAction `
-Execute "powershell.exe" `
-Argument "-ExecutionPolicy Bypass -File `"C:\Users\<user>\mcp-start\x-fcbnews-start.ps1`""
$trigger = New-ScheduledTaskTrigger -AtLogOn
Register-ScheduledTask `
-TaskName "X MCP FCBNews2026" `
-Action $action `
-Trigger $trigger `
-Description "Starts the local X MCP server and OpenAI tunnel-client at Windows logon."Отключите автоматический запуск:
Disable-ScheduledTask -TaskName "X MCP FCBNews2026"Включите его снова:
Enable-ScheduledTask -TaskName "X MCP FCBNews2026"Удалите его:
Unregister-ScheduledTask -TaskName "X MCP FCBNews2026" -Confirm:$falseПолное руководство по жизненному циклу:
docs/local-server-lifecycle.md
Подключение к ChatGPT
Общая схема:
1. Run the MCP server over local HTTP.
2. Create a tunnel in OpenAI Platform.
3. Create a local tunnel-client profile pointing to http://127.0.0.1:3001/mcp.
4. Start tunnel-client.
5. Create a custom MCP app in the ChatGPT agent using Connection: Tunnel.
6. Test x_get_active_account or x_get_me before any write operation.Рекомендуемые настройки пользовательского MCP для ChatGPT:
Connection: Tunnel
Tunnel: <your OpenAI tunnel>
Authentication: No authenticationИспользуйте No authentication, когда MCP-сервер управляет конечными учетными данными сервиса локально, например через .env.
Полное руководство по настройке ChatGPT:
Повторная авторизация учетной записи X
В X Developer настройте приложение:
OAuth 2.0: Enabled
App permissions: Read and write
Callback URI: http://127.0.0.1:3002/callback
Website URL: http://127.0.0.1:3002Выполните:
$env:X_OAUTH_CLIENT_ID = "<OAuth 2.0 Client ID>"
$env:X_MCP_ACCOUNT = "fcbnews2026"
npm run x:oauthОткройте сгенерированный URL, будучи авторизованным в нужной учетной записи X. После авторизации помощник обновит .env, добавив токен выбранной учетной записи.
Перезапустите MCP-сервер после повторной авторизации:
npm run dev:httpЗатем проверьте с помощью:
x_get_active_accountПодробное руководство по OAuth:
Модель безопасности
Сервер по умолчанию запускается в режиме только для чтения:
X_MCP_MODE=read-onlyИнструменты записи требуют:
X_MCP_MODE=read-writeПеред публикацией:
Проверьте активную учетную запись с помощью
x_get_active_account.Подтвердите точный текст для публикации.
Убедитесь, что токен X имеет область
tweet.write.Попросите агента вернуть сгенерированный
post_id.Не считайте пост опубликованным, пока X не вернет идентификатор.
Скрипты
Скрипт | Назначение |
| Запускает MCP-сервер через |
| Запускает MCP-сервер через локальный HTTP. |
| Запускает локальный помощник авторизации X OAuth. |
| Компилирует TypeScript в |
| Запускает скомпилированный сервер через |
| Запускает скомпилированный сервер через HTTP. |
| Запускает TypeScript без создания файлов. |
| Запускает набор тестов Vitest. |
Документация
docs/project-architecture.md: архитектура проекта.
docs/configuration.md: переменные окружения и настройка нескольких учетных записей.
docs/local-server-lifecycle.md: запуск, остановка и автоматизация локального MCP-сервера.
docs/tools.md: MCP-инструменты и контракты использования.
docs/x-oauth.md: повторная авторизация X OAuth.
docs/development.md: рекомендации по разработке, тестированию и внесению изменений.
docs/chatgpt-mcp-setup.md: пошаговая настройка MCP для ChatGPT.
Операционная безопасность
Храните учетные данные вне Git.
Сохраняйте
read-onlyв качестве режима по умолчанию.Включайте
read-writeтолько для контролируемых рабочих процессов.Проверяйте активную учетную запись перед публикацией.
Не записывайте в журнал токены доступа или токены обновления.
Не вставляйте токены в чаты, issues, документацию или пул-реквесты.
Не используйте автоматический запуск в режиме
read-writeна компьютерах общего пользования.
Лицензия
Открытая лицензия еще не выбрана.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server that provides AI agents with full access to the X (Twitter) API for posting, searching, and managing engagement through natural language. It supports comprehensive tools for tweet management, media uploads, and account analytics across multiple MCP-compatible clients.1550

X API FastMCP Serverofficial
Flicense-qualityFmaintenanceA local MCP server that exposes the X API (formerly Twitter API) as tools, enabling operations like posting, searching, user management, and more via natural language commands.851- AlicenseAqualityDmaintenanceMCP server for Twitter/X enabling AI agents to search, post, reply, and engage with tweets.14131MIT
- AlicenseBqualityDmaintenanceMCP server for interacting with the X platform (Twitter) via MCP clients like Claude, Cursor AI, and Windsurf AI.20146MIT
Related MCP Connectors
X (formerly Twitter) posts, profiles, and search for AI agents. Free key, self-minted, no signup.
FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/lluisfont/x-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server