Skip to main content
Glama
lluisfont

x-mcp-server

by lluisfont

X MCP Server

TypeScript Model Context Protocol (MCP) server for the official X API.

이 프로젝트는 ChatGPT 에이전트를 포함한 MCP 호환 에이전트가 사용자 컴퓨터에서 실행되는 로컬 서버를 통해 X 계정을 안전하게 읽고 게시할 수 있게 해줍니다.

서버는 다음을 지원합니다:

  • 인증된 X 계정 읽기.

  • 사용자 이름으로 X 사용자 조회.

  • ID로 게시물 읽기.

  • 사용자의 최근 게시물 나열.

  • X 검색 구문으로 최근 게시물 검색.

  • 쓰기 모드가 명시적으로 활성화된 경우 게시물 및 답글 작성.

  • 로컬 컴퓨터 설치마다 다른 X 계정 선택.

  • 로컬 MCP 호스트를 위해 stdio로 실행.

  • OpenAI Secure MCP Tunnels를 통해 ChatGPT를 위한 로컬 Streamable HTTP로 실행.

프로젝트 상태

이것은 기능하는 MVP입니다.

구현됨:

  • stdio 기반 MCP 서버.

  • Streamable HTTP 기반 MCP 서버.

  • 공식 X API 클라이언트.

  • 로컬 다중 계정 구성.

  • 기본적으로 안전한 read-only 모드.

  • 게시 및 답글을 위한 명시적 read-write 모드.

  • X 계정 재인증을 위한 로컬 OAuth 2.0 Authorization Code + PKCE 헬퍼.

  • Vitest를 사용한 단위 테스트.

  • OpenAI Secure MCP Tunnels를 통한 ChatGPT 연결 가이드.

  • 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_get_active_account

읽기

선택한 로컬 프로필, 구성된 계정, 모드 및 인증된 X 사용자를 반환합니다.

x_get_me

읽기

인증된 X 사용자를 반환합니다.

x_get_user

읽기

사용자 이름으로 X 사용자를 조회합니다.

x_get_post

읽기

ID로 게시물을 읽습니다.

x_get_user_posts

읽기

사용자 ID가 작성한 최근 게시물을 나열합니다.

x_search_posts

읽기

공식 X 쿼리 구문을 사용하여 최근 게시물을 검색합니다.

x_create_post

쓰기

새 게시물을 게시합니다. X_MCP_MODE=read-write가 필요합니다.

x_reply_post

쓰기

게시물에 답글을 답니다. X_MCP_MODE=read-write가 필요합니다.

쓰기 도구는 X_MCP_MODE=read-write가 설정되지 않은 경우 차단됩니다.

요구 사항

  • Node.js 20 이상.

  • X Developer 계정.

  • OAuth 2.0이 활성화된 X Developer 앱.

  • 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 pull

2. 종속성 설치

npm install

3. 로컬 환경 파일 생성

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=/mcp

6. 타입 검사 및 테스트 실행

npm run typecheck
npm test
npm run build

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

.env를 변경한 후 MCP HTTP 서버를 다시 시작하세요:

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.

권장 ChatGPT 사용자 지정 MCP 설정:

Connection: Tunnel
Tunnel: <your OpenAI tunnel>
Authentication: No authentication

MCP 서버가 최종 서비스 자격 증명을 로컬에서 관리하는 경우(예: .env를 통해) No authentication을 사용하세요.

전체 ChatGPT 설정 가이드:

docs/chatgpt-mcp-setup.md

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

의도한 X 계정에 로그인한 상태에서 생성된 URL을 여세요. 인증 후 헬퍼는 .env를 선택한 계정 토큰으로 업데이트합니다.

재인증 후 MCP 서버를 다시 시작하세요:

npm run dev:http

그런 다음 다음으로 확인하세요:

x_get_active_account

상세 OAuth 가이드:

docs/x-oauth.md

안전 모델

서버는 기본적으로 읽기 전용 모드로 시작됩니다:

X_MCP_MODE=read-only

쓰기 도구에는 다음이 필요합니다:

X_MCP_MODE=read-write

게시하기 전에:

  • x_get_active_account로 활성 계정을 확인하세요.

  • 게시할 정확한 텍스트를 확인하세요.

  • X 토큰에 tweet.write가 있는지 확인하세요.

  • 에이전트가 생성된 post_id를 반환하도록 요청하세요.

  • X가 ID를 반환할 때까지 게시물이 게시된 것으로 간주하지 마세요.

스크립트

스크립트

용도

npm run dev

stdio를 통해 MCP 서버를 시작합니다.

npm run dev:http

로컬 HTTP를 통해 MCP 서버를 시작합니다.

npm run x:oauth

로컬 X OAuth 인증 헬퍼를 실행합니다.

npm run build

TypeScript를 dist로 컴파일합니다.

npm run start

컴파일된 서버를 stdio를 통해 시작합니다.

npm run start:http

컴파일된 서버를 HTTP를 통해 시작합니다.

npm run typecheck

파일을 생성하지 않고 TypeScript를 실행합니다.

npm test

Vitest 테스트 스위트를 실행합니다.

문서

운영 보안

  • 자격 증명을 Git 외부에 유지하세요.

  • 기본 모드를 read-only로 유지하세요.

  • 통제된 워크플로에서만 read-write를 활성화하세요.

  • 게시 전에 활성 계정을 확인하세요.

  • 액세스 토큰이나 갱신 토큰을 로그에 남기지 마세요.

  • 토큰을 채팅, 이슈, 문서 또는 풀 리퀘스트에 붙여넣지 마세요.

  • 공유 컴퓨터에서 read-write 모드로 자동 시작을 실행하지 마세요.

라이선스

아직 선택된 오픈소스 라이선스가 없습니다.

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    A
    quality
    D
    maintenance
    An 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.
    15
    50
  • F
    license
    -
    quality
    F
    maintenance
    A 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

View all related MCP servers

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.

View all MCP Connectors

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/lluisfont/x-mcp-server'

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