diff --git a/es/tools/mcp.mdx b/es/tools/mcp.mdx index aba368366..bc398d5ab 100644 --- a/es/tools/mcp.mdx +++ b/es/tools/mcp.mdx @@ -16,7 +16,7 @@ Hay dos servidores [MCP](https://modelcontextprotocol.io) (Model Context Protoco ## X MCP — X API -Conecta cualquier herramienta de IA compatible con MCP (Grok Build, Cursor, Claude, VS Code, …) directamente a la **X API** para que pueda buscar en el archivo completo, consultar usuarios, gestionar marcadores, obtener tendencias y noticias, y redactar borradores de Articles — todo con los permisos de tu propia cuenta de X. +Conecta cualquier herramienta de IA compatible con MCP (Grok Build, Cursor, Claude, VS Code, y otras) directamente a la **X API**. El modelo puede entonces buscar en el archivo completo, consultar usuarios, gestionar marcadores, obtener tendencias y noticias, y redactar borradores de Articles — todo con los permisos de tu propia cuenta de X. La X API expone un servidor MCP alojado con **Streamable HTTP** en **`https://api.x.com/mcp`** (protocolo `2025-06-18`, `serverInfo: xmcp`). Accedes a él a través del puente de código abierto **`xurl mcp`**, que se encarga del OAuth por ti e inyecta un Bearer token nuevo en cada llamada. @@ -33,7 +33,7 @@ La X API expone un servidor MCP alojado con **Streamable HTTP** en **`https://ap ### Cómo funciona -El OAuth de X requiere *tu propia* app de desarrollador (no hay registro dinámico de clientes y `api.x.com/mcp` no anuncia el descubrimiento OAuth nativo de MCP). Por eso, en lugar de apuntar tu cliente directamente a la URL, ejecutas un pequeño puente local que posee la identidad de la app, realiza el inicio de sesión único y mantiene el token actualizado. +El OAuth de X requiere *tu propia* app de desarrollador. No hay registro dinámico de clientes y `api.x.com/mcp` no anuncia el descubrimiento OAuth nativo de MCP. En lugar de apuntar tu cliente directamente a la URL, ejecutas un pequeño puente local. El puente posee la identidad de la app, realiza el inicio de sesión único y mantiene el token actualizado. ```mermaid flowchart LR @@ -46,9 +46,22 @@ flowchart LR - En la **primera ejecución sin token en caché**, abre tu navegador para un inicio de sesión OAuth2 único, y luego almacena en caché y **refresca automáticamente** el token para siempre. - Todos los diagnósticos van a **stderr**; **stdout permanece como un canal JSON-RPC limpio**. -### Antes de empezar +### Cómo empezar -1. **Crea una app de X** en el [X Developer Portal](https://developer.x.com) con **OAuth 2.0** habilitado. +Elige una de dos rutas: + +* **Simple — Bearer de solo aplicación.** Pega el Bearer token de tu app en un header `Authorization` en el cliente MCP. Sin puente, sin inicio de sesión en navegador. Endpoints de solo lectura; sin contexto de usuario (no puede actuar como tú). Funciona con clientes que admiten MCP remoto con headers personalizados. +* **Completa — puente `xurl mcp` (contexto de usuario OAuth 2.0).** Un puente local se encarga del inicio de sesión OAuth 2.0 PKCE y refresca los tokens automáticamente, para que el modelo actúe con los scopes de tu cuenta. Requerida para escrituras (marcadores, Articles) y cualquier herramienta con contexto de usuario. + +#### Ruta simple (Bearer de solo aplicación) + +1. **Crea una app de X** en el [X Developer Portal](https://developer.x.com). +2. **Copia el Bearer token de solo aplicación** desde la página "Keys and tokens" de la app. +3. Apunta tu cliente a `https://api.x.com/mcp` con el token como header `Authorization` — consulta [Solo aplicación (URL directa, sin puente)](#app-only-direct-url-no-bridge) más abajo para el snippet. + +#### Ruta completa (puente xurl) + +1. **Crea una app de X** con **OAuth 2.0** habilitado. 2. **Registra la URI de redirección** `http://localhost:8080/callback` en la app (requerida para el inicio de sesión por navegador en la primera ejecución). Para usar otra, define `REDIRECT_URI` y registra esa en su lugar. 3. **Copia tu `CLIENT_ID` y `CLIENT_SECRET`** — los colocarás en la configuración del cliente. 4. **Ten Node.js instalado** (para `npx`). @@ -68,18 +81,9 @@ flowchart LR #### 1. Grok Build -Agrega el servidor con un solo comando (los flags `-e` se convierten en el entorno del servidor, los argumentos después de `--` van a `npx`): + -```bash -grok mcp add xapi npx \ - -e CLIENT_ID=YOUR_X_APP_CLIENT_ID \ - -e CLIENT_SECRET=YOUR_X_APP_CLIENT_SECRET \ - -- -y @xdevplatform/xurl mcp https://api.x.com/mcp -``` - -Esto escribe lo siguiente en `~/.grok/config.toml` (también puedes editarlo directamente): - -```toml +```toml xurl bridge (~/.grok/config.toml) [mcp_servers.xapi] command = "npx" args = ["-y", "@xdevplatform/xurl", "mcp", "https://api.x.com/mcp"] @@ -91,6 +95,26 @@ CLIENT_ID = "YOUR_X_APP_CLIENT_ID" CLIENT_SECRET = "YOUR_X_APP_CLIENT_SECRET" ``` +```toml App-only Bearer (~/.grok/config.toml) +[mcp_servers.xapi] +url = "https://api.x.com/mcp" +enabled = true + +[mcp_servers.xapi.headers] +Authorization = "Bearer YOUR_APP_ONLY_BEARER_TOKEN" +``` + + + +O agrega el puente xurl con un solo comando (los flags `-e` se convierten en el entorno del servidor, los argumentos después de `--` van a `npx`): + +```bash +grok mcp add xapi npx \ + -e CLIENT_ID=YOUR_X_APP_CLIENT_ID \ + -e CLIENT_SECRET=YOUR_X_APP_CLIENT_SECRET \ + -- -y @xdevplatform/xurl mcp https://api.x.com/mcp +``` + Verifica y lista: ```bash @@ -104,7 +128,9 @@ La primera vez que se invoque una herramienta (o al ejecutar `doctor`), tu naveg Crea `~/.cursor/mcp.json` (global, para todos los proyectos) o `.cursor/mcp.json` (solo este proyecto): -```json + + +```json xurl bridge { "mcpServers": { "xapi": { @@ -119,13 +145,30 @@ Crea `~/.cursor/mcp.json` (global, para todos los proyectos) o `.cursor/mcp.json } ``` +```json App-only Bearer +{ + "mcpServers": { + "xapi": { + "url": "https://api.x.com/mcp", + "headers": { + "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" + } + } + } +} +``` + + + Luego abre **Cursor → Settings → MCP**, confirma que **xapi** muestra un punto verde y sus herramientas. En el primer uso, Cursor inicia el puente y tu navegador se abre para iniciar sesión; la lista de herramientas se completa una vez que finaliza el handshake. #### 3. Claude Desktop Edita `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/`, Windows: `%APPDATA%\Claude\`): -```json + + +```json xurl bridge { "mcpServers": { "xapi": { @@ -137,13 +180,28 @@ Edita `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude } ``` +```json App-only Bearer +{ + "mcpServers": { + "xapi": { + "url": "https://api.x.com/mcp", + "headers": { "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" } + } + } +} +``` + + + Reinicia Claude Desktop; las herramientas de X aparecen en el menú de herramientas (🔌). #### 4. VS Code (GitHub Copilot / modo Agent) Agrega a `.vscode/mcp.json`: -```json + + +```json xurl bridge { "servers": { "xapi": { @@ -156,9 +214,23 @@ Agrega a `.vscode/mcp.json`: } ``` +```json App-only Bearer +{ + "servers": { + "xapi": { + "type": "http", + "url": "https://api.x.com/mcp", + "headers": { "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" } + } + } +} +``` + + + #### 5. Cualquier cliente MCP -La configuración universal de stdio es: +**Puente xurl (stdio):** | Campo | Valor | |---|---| @@ -169,11 +241,18 @@ La configuración universal de stdio es: Si instalaste `xurl` de forma nativa, reemplaza `command`/`args` por `"command": "xurl", "args": ["mcp", "https://api.x.com/mcp"]`. +**Bearer de solo aplicación (HTTP remoto):** + +| Campo | Valor | +|---|---| +| `url` | `https://api.x.com/mcp` | +| `headers.Authorization` | `Bearer YOUR_APP_ONLY_BEARER_TOKEN` | + ### Autenticación #### Contexto de usuario OAuth 2.0 (predeterminado) -El puente se autentica como **tú** (flujo PKCE), por lo que las herramientas actúan con los scopes de tu cuenta. Orden de resolución de credenciales: **variables de entorno `CLIENT_ID`/`CLIENT_SECRET` → la app activa en `~/.xurl`**. Los tokens se almacenan en caché en `~/.xurl` y se refrescan automáticamente (incluyendo un refresh forzado tras un `401`). +El puente se autentica como **tú** (flujo PKCE), por lo que las herramientas actúan con los scopes de tu cuenta. Orden de resolución de credenciales: **variables de entorno `CLIENT_ID`/`CLIENT_SECRET` → la app activa en `~/.xurl`**. El puente almacena los tokens en caché en `~/.xurl` y los refresca automáticamente (incluyendo un refresh forzado tras un `401`). #### Inicio de sesión en navegador en la primera ejecución @@ -197,7 +276,7 @@ xurl auth oauth2 --app my-app --headless # for a specific app #### Solo aplicación (URL directa, sin puente) -Para endpoints de lectura puedes omitir el puente y apuntar un cliente directamente a la URL con un **Bearer token estático de solo aplicación** — útil para clientes que admiten MCP remoto con headers personalizados: +Para endpoints de lectura puedes omitir el puente y apuntar un cliente directamente a la URL con un **Bearer token estático de solo aplicación**. Esto es útil para clientes que admiten MCP remoto con headers personalizados: ```toml # ~/.grok/config.toml @@ -262,7 +341,7 @@ npx -y @xdevplatform/xurl mcp https://api.x.com/mcp ## Docs MCP — búsqueda en la documentación -Hay un servidor MCP para la documentación de la X API alojado en `https://docs.x.com/mcp`. Conéctalo a tu herramienta de IA para buscar y leer páginas de documentación sin salir de tu flujo de trabajo. +X aloja un servidor MCP para la documentación de la X API en `https://docs.x.com/mcp`. Conéctalo a tu herramienta de IA para buscar y leer páginas de documentación sin salir de tu flujo de trabajo. ### Herramientas disponibles diff --git a/ja/tools/mcp.mdx b/ja/tools/mcp.mdx index d0ac526f7..5be07af38 100644 --- a/ja/tools/mcp.mdx +++ b/ja/tools/mcp.mdx @@ -46,9 +46,22 @@ flowchart LR - **キャッシュされたトークンがない初回実行時**には、ブラウザを開いて 1 回限りの OAuth2 ログインを行い、その後はトークンをキャッシュして **自動的に更新** し続けます。 - すべての診断情報は **stderr** に出力され、**stdout は JSON-RPC 専用のクリーンなチャネル** に保たれます。 -### 開始する前に +### はじめに -1. [X 開発者ポータル](https://developer.x.com) で **OAuth 2.0** を有効にした **X アプリを作成** します。 +2 つのルートのいずれかを選択します: + +* **シンプル — App-only Bearer。** アプリの Bearer トークンを MCP クライアントの `Authorization` ヘッダーに貼り付けます。ブリッジもブラウザログインも不要です。読み取り専用のエンドポイントで、ユーザーコンテキストはありません(あなたとしての操作はできません)。カスタムヘッダー付きのリモート MCP に対応するクライアントで動作します。 +* **フル — `xurl mcp` ブリッジ(OAuth 2.0 ユーザーコンテキスト)。** ローカルブリッジが OAuth 2.0 PKCE ログインを処理し、トークンを自動更新するため、モデルはあなたのアカウントのスコープで動作します。書き込み(ブックマーク、Articles)やユーザーコンテキストを使うツールには必須です。 + +#### シンプルルート(app-only Bearer) + +1. [X 開発者ポータル](https://developer.x.com) で **X アプリを作成** します。 +2. アプリの "Keys and tokens" ページから **App-only Bearer トークンをコピー** します。 +3. クライアントを `https://api.x.com/mcp` に向け、トークンを `Authorization` ヘッダーとして設定します — 後述の [App-only(URL に直接、ブリッジなし)](#app-only-direct-url-no-bridge) のスニペットを参照してください。 + +#### フルルート(xurl ブリッジ) + +1. **OAuth 2.0** を有効にした **X アプリを作成** します。 2. アプリにリダイレクト URI `http://localhost:8080/callback` を **登録** します(初回のブラウザログインに必要)。別のものを使う場合は、`REDIRECT_URI` を設定し、そちらを登録してください。 3. **`CLIENT_ID` と `CLIENT_SECRET` をコピー** します — これらをクライアント設定に記述します。 4. **Node.js がインストール済み** であること(`npx` 用)。 @@ -68,18 +81,9 @@ flowchart LR #### 1. Grok Build -1 つのコマンドでサーバーを追加します(`-e` フラグはサーバーの環境変数になり、`--` 以降の引数は `npx` に渡されます): + -```bash -grok mcp add xapi npx \ - -e CLIENT_ID=YOUR_X_APP_CLIENT_ID \ - -e CLIENT_SECRET=YOUR_X_APP_CLIENT_SECRET \ - -- -y @xdevplatform/xurl mcp https://api.x.com/mcp -``` - -これは `~/.grok/config.toml` に以下を書き込みます(直接編集することもできます): - -```toml +```toml xurl bridge (~/.grok/config.toml) [mcp_servers.xapi] command = "npx" args = ["-y", "@xdevplatform/xurl", "mcp", "https://api.x.com/mcp"] @@ -91,6 +95,26 @@ CLIENT_ID = "YOUR_X_APP_CLIENT_ID" CLIENT_SECRET = "YOUR_X_APP_CLIENT_SECRET" ``` +```toml App-only Bearer (~/.grok/config.toml) +[mcp_servers.xapi] +url = "https://api.x.com/mcp" +enabled = true + +[mcp_servers.xapi.headers] +Authorization = "Bearer YOUR_APP_ONLY_BEARER_TOKEN" +``` + + + +または、1 つのコマンドで xurl ブリッジを追加します(`-e` フラグはサーバーの環境変数になり、`--` 以降の引数は `npx` に渡されます): + +```bash +grok mcp add xapi npx \ + -e CLIENT_ID=YOUR_X_APP_CLIENT_ID \ + -e CLIENT_SECRET=YOUR_X_APP_CLIENT_SECRET \ + -- -y @xdevplatform/xurl mcp https://api.x.com/mcp +``` + 確認と一覧表示: ```bash @@ -104,7 +128,9 @@ grok mcp list `~/.cursor/mcp.json`(グローバル、すべてのプロジェクト)または `.cursor/mcp.json`(このプロジェクトのみ)を作成します: -```json + + +```json xurl bridge { "mcpServers": { "xapi": { @@ -119,13 +145,30 @@ grok mcp list } ``` +```json App-only Bearer +{ + "mcpServers": { + "xapi": { + "url": "https://api.x.com/mcp", + "headers": { + "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" + } + } + } +} +``` + + + 次に **Cursor → Settings → MCP** を開き、**xapi** が緑のドットとツールを表示していることを確認します。初回使用時に Cursor がブリッジを起動し、ブラウザがログイン用に開きます。ハンドシェイクが完了するとツール一覧が表示されます。 #### 3. Claude Desktop `claude_desktop_config.json` を編集します(macOS: `~/Library/Application Support/Claude/`、Windows: `%APPDATA%\Claude\`): -```json + + +```json xurl bridge { "mcpServers": { "xapi": { @@ -137,13 +180,28 @@ grok mcp list } ``` +```json App-only Bearer +{ + "mcpServers": { + "xapi": { + "url": "https://api.x.com/mcp", + "headers": { "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" } + } + } +} +``` + + + Claude Desktop を再起動すると、ツール(🔌)メニューに X のツールが表示されます。 #### 4. VS Code(GitHub Copilot / Agent モード) `.vscode/mcp.json` に追加します: -```json + + +```json xurl bridge { "servers": { "xapi": { @@ -156,9 +214,23 @@ Claude Desktop を再起動すると、ツール(🔌)メニューに X のツ } ``` +```json App-only Bearer +{ + "servers": { + "xapi": { + "type": "http", + "url": "https://api.x.com/mcp", + "headers": { "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" } + } + } +} +``` + + + #### 5. 任意の MCP クライアント -汎用の stdio 設定は以下のとおりです: +**xurl ブリッジ(stdio):** | フィールド | 値 | |---|---| @@ -169,6 +241,13 @@ Claude Desktop を再起動すると、ツール(🔌)メニューに X のツ `xurl` をネイティブにインストール済みの場合は、`command`/`args` を `"command": "xurl", "args": ["mcp", "https://api.x.com/mcp"]` に置き換えてください。 +**App-only Bearer(リモート HTTP):** + +| フィールド | 値 | +|---|---| +| `url` | `https://api.x.com/mcp` | +| `headers.Authorization` | `Bearer YOUR_APP_ONLY_BEARER_TOKEN` | + ### 認証 #### OAuth 2.0 ユーザーコンテキスト(デフォルト) @@ -197,7 +276,7 @@ xurl auth oauth2 --app my-app --headless # for a specific app #### App-only(URL に直接、ブリッジなし) -読み取り系のエンドポイントについては、ブリッジを省略し、**静的な App-only Bearer トークン** を使ってクライアントを URL に直接向けることもできます — カスタムヘッダーをサポートするリモート MCP 対応クライアントに便利です: +読み取り系のエンドポイントについては、ブリッジを省略し、**静的な App-only Bearer トークン** を使ってクライアントを URL に直接向けることもできます。カスタムヘッダーをサポートするリモート MCP 対応クライアントに便利です: ```toml # ~/.grok/config.toml diff --git a/ko/tools/mcp.mdx b/ko/tools/mcp.mdx index e2c3899dc..9ee61172c 100644 --- a/ko/tools/mcp.mdx +++ b/ko/tools/mcp.mdx @@ -1,5 +1,5 @@ --- -title: X API와 개발자 문서를 위한 MCP 서버 +title: MCP 서버 sidebarTitle: MCP description: Grok, Cursor 등 AI 도구를 xurl과 문서 검색을 제공하는 호스팅된 Model Context Protocol 서버를 통해 X API 및 X 개발자 문서에 연결하세요. keywords: ["XMCP", "MCP", "Model Context Protocol", "docs MCP", "AI agent", "AI tools", "Grok", "Cursor", "xurl", "OpenAPI", "MCP server"] @@ -46,9 +46,22 @@ flowchart LR - **캐시된 토큰 없이 처음 실행할 때**, 브라우저를 열어 1회 OAuth2 로그인을 수행한 후 토큰을 캐시하고 이후 **자동 갱신**합니다. - 모든 진단 정보는 **stderr**로 출력되며, **stdout은 깔끔한 JSON-RPC 채널로 유지됩니다**. -### 시작하기 전에 +### 시작하기 -1. [X 개발자 포털](https://developer.x.com)에서 **OAuth 2.0**이 활성화된 **X 앱을 생성**합니다. +두 가지 경로 중 하나를 선택하세요: + +* **간단 경로 — App-only Bearer.** 앱의 Bearer token을 MCP 클라이언트의 `Authorization` 헤더에 붙여넣습니다. 브리지도, 브라우저 로그인도 필요 없습니다. 읽기 전용 엔드포인트이며 사용자 컨텍스트가 없습니다(사용자로서 행동할 수 없음). 사용자 정의 헤더가 있는 원격 MCP를 지원하는 클라이언트에서 동작합니다. +* **풀 경로 — `xurl mcp` 브리지(OAuth 2.0 사용자 컨텍스트).** 로컬 브리지가 OAuth 2.0 PKCE 로그인을 처리하고 토큰을 자동 갱신하므로, 모델이 사용자 계정의 스코프로 동작합니다. 쓰기 작업(북마크, Articles)이나 모든 사용자 컨텍스트 도구에 필수입니다. + +#### 간단 경로 (app-only Bearer) + +1. [X 개발자 포털](https://developer.x.com)에서 **X 앱을 생성**합니다. +2. 앱의 "Keys and tokens" 페이지에서 **App-only Bearer token을 복사**합니다. +3. 토큰을 `Authorization` 헤더로 사용하여 클라이언트를 `https://api.x.com/mcp`에 연결하세요 — 아래 [App 전용 (직접 URL, 브리지 없음)](#app-only-direct-url-no-bridge) 스니펫을 참고하세요. + +#### 풀 경로 (xurl bridge) + +1. **OAuth 2.0**이 활성화된 **X 앱을 생성**합니다. 2. 첫 실행 시 브라우저 로그인에 필요한 **리다이렉트 URI** `http://localhost:8080/callback`을 앱에 등록합니다. 다른 URI를 사용하려면 `REDIRECT_URI`를 설정하고 해당 URI를 등록하세요. 3. **`CLIENT_ID`와 `CLIENT_SECRET`을 복사**해 두세요 — 클라이언트 설정에 입력해야 합니다. 4. **Node.js를 설치**해 두세요 (`npx`에 필요). @@ -68,18 +81,9 @@ flowchart LR #### 1. Grok Build -한 번의 명령으로 서버를 추가합니다(`-e` 플래그는 서버의 환경 변수가 되고, `--` 뒤의 인자는 `npx`로 전달됩니다): + -```bash -grok mcp add xapi npx \ - -e CLIENT_ID=YOUR_X_APP_CLIENT_ID \ - -e CLIENT_SECRET=YOUR_X_APP_CLIENT_SECRET \ - -- -y @xdevplatform/xurl mcp https://api.x.com/mcp -``` - -이는 `~/.grok/config.toml`에 다음과 같이 기록됩니다(직접 편집할 수도 있습니다): - -```toml +```toml xurl bridge (~/.grok/config.toml) [mcp_servers.xapi] command = "npx" args = ["-y", "@xdevplatform/xurl", "mcp", "https://api.x.com/mcp"] @@ -91,6 +95,26 @@ CLIENT_ID = "YOUR_X_APP_CLIENT_ID" CLIENT_SECRET = "YOUR_X_APP_CLIENT_SECRET" ``` +```toml App-only Bearer (~/.grok/config.toml) +[mcp_servers.xapi] +url = "https://api.x.com/mcp" +enabled = true + +[mcp_servers.xapi.headers] +Authorization = "Bearer YOUR_APP_ONLY_BEARER_TOKEN" +``` + + + +또는 한 번의 명령으로 xurl 브리지를 추가합니다(`-e` 플래그는 서버의 환경 변수가 되고, `--` 뒤의 인자는 `npx`로 전달됩니다): + +```bash +grok mcp add xapi npx \ + -e CLIENT_ID=YOUR_X_APP_CLIENT_ID \ + -e CLIENT_SECRET=YOUR_X_APP_CLIENT_SECRET \ + -- -y @xdevplatform/xurl mcp https://api.x.com/mcp +``` + 확인 및 나열: ```bash @@ -104,7 +128,9 @@ grok mcp list `~/.cursor/mcp.json`(전역, 모든 프로젝트) 또는 `.cursor/mcp.json`(이 프로젝트만)을 생성하세요: -```json + + +```json xurl bridge { "mcpServers": { "xapi": { @@ -119,13 +145,30 @@ grok mcp list } ``` +```json App-only Bearer +{ + "mcpServers": { + "xapi": { + "url": "https://api.x.com/mcp", + "headers": { + "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" + } + } + } +} +``` + + + 그런 다음 **Cursor → Settings → MCP**를 열고 **xapi**에 녹색 표시와 도구 목록이 표시되는지 확인하세요. 처음 사용할 때 Cursor가 브리지를 실행하고 브라우저가 열려 로그인을 진행합니다; 핸드셰이크가 완료되면 도구 목록이 채워집니다. #### 3. Claude Desktop `claude_desktop_config.json`을 편집하세요(macOS: `~/Library/Application Support/Claude/`, Windows: `%APPDATA%\Claude\`): -```json + + +```json xurl bridge { "mcpServers": { "xapi": { @@ -137,13 +180,28 @@ grok mcp list } ``` +```json App-only Bearer +{ + "mcpServers": { + "xapi": { + "url": "https://api.x.com/mcp", + "headers": { "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" } + } + } +} +``` + + + Claude Desktop을 재시작하면 X 도구가 도구(🔌) 메뉴에 표시됩니다. #### 4. VS Code (GitHub Copilot / Agent mode) `.vscode/mcp.json`에 추가하세요: -```json + + +```json xurl bridge { "servers": { "xapi": { @@ -156,9 +214,23 @@ Claude Desktop을 재시작하면 X 도구가 도구(🔌) 메뉴에 표시됩 } ``` +```json App-only Bearer +{ + "servers": { + "xapi": { + "type": "http", + "url": "https://api.x.com/mcp", + "headers": { "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" } + } + } +} +``` + + + #### 5. 모든 MCP 클라이언트 -범용 stdio 설정은 다음과 같습니다: +**xurl 브리지 (stdio):** | 필드 | 값 | |---|---| @@ -169,6 +241,13 @@ Claude Desktop을 재시작하면 X 도구가 도구(🔌) 메뉴에 표시됩 `xurl`을 네이티브로 설치했다면 `command`/`args`를 `"command": "xurl", "args": ["mcp", "https://api.x.com/mcp"]`로 교체하세요. +**App-only Bearer (원격 HTTP):** + +| 필드 | 값 | +|---|---| +| `url` | `https://api.x.com/mcp` | +| `headers.Authorization` | `Bearer YOUR_APP_ONLY_BEARER_TOKEN` | + ### 인증 #### OAuth 2.0 사용자 컨텍스트 (기본) diff --git a/pt/tools/mcp.mdx b/pt/tools/mcp.mdx index 57ba7c47a..5596c4b73 100644 --- a/pt/tools/mcp.mdx +++ b/pt/tools/mcp.mdx @@ -16,7 +16,7 @@ Dois servidores [MCP](https://modelcontextprotocol.io) (Model Context Protocol) ## X MCP — X API -Conecte qualquer ferramenta de IA compatível com MCP (Grok Build, Cursor, Claude, VS Code, …) diretamente à **X API** para que ela possa pesquisar todo o arquivo, consultar usuários, gerenciar bookmarks, buscar trends e news e redigir Articles — tudo com as permissões da sua própria conta X. +Conecte qualquer ferramenta de IA compatível com MCP (Grok Build, Cursor, Claude, VS Code, …) diretamente à **X API**. O modelo pode então pesquisar todo o arquivo, consultar usuários, gerenciar bookmarks, buscar trends e news e redigir Articles — tudo com as permissões da sua própria conta X. A X API expõe um servidor MCP hospedado em **Streamable HTTP** em **`https://api.x.com/mcp`** (protocolo `2025-06-18`, `serverInfo: xmcp`). Você o acessa por meio da ponte open-source **`xurl mcp`**, que cuida do OAuth para você e injeta um Bearer token novo em cada chamada. @@ -33,7 +33,7 @@ A X API expõe um servidor MCP hospedado em **Streamable HTTP** em **`https://ap ### Como funciona -O OAuth do X exige *seu próprio* app de desenvolvedor (não há registro dinâmico de cliente, e `api.x.com/mcp` não anuncia descoberta nativa de OAuth do MCP). Então, em vez de apontar seu cliente diretamente para a URL, você executa uma pequena ponte local que detém a identidade do app, realiza o login único e mantém o token sempre atualizado. +O OAuth do X exige *seu próprio* app de desenvolvedor. Não há registro dinâmico de cliente, e `api.x.com/mcp` não anuncia descoberta nativa de OAuth do MCP. Em vez de apontar seu cliente diretamente para a URL, você executa uma pequena ponte local. A ponte detém a identidade do app, realiza o login único e mantém o token sempre atualizado. ```mermaid flowchart LR @@ -46,9 +46,22 @@ flowchart LR - Na **primeira execução sem token em cache**, ela abre seu navegador para um login OAuth2 único, e depois faz cache e **atualiza automaticamente** o token para sempre. - Todos os diagnósticos vão para o **stderr**; o **stdout permanece um canal JSON-RPC limpo**. -### Antes de começar +### Primeiros passos -1. **Crie um app X** no [Portal do Desenvolvedor X](https://developer.x.com) com **OAuth 2.0** habilitado. +Escolha um dos dois caminhos: + +* **Simples — Bearer app-only.** Cole o Bearer token do seu app em um cabeçalho `Authorization` no cliente MCP. Sem ponte, sem login no navegador. Endpoints somente de leitura; sem contexto de usuário (não age em seu nome). Funciona com clientes que suportam MCP remoto com cabeçalhos customizados. +* **Completo — ponte `xurl mcp` (contexto de usuário OAuth 2.0).** Uma ponte local cuida do login OAuth 2.0 PKCE e atualiza os tokens automaticamente, então o modelo age com os escopos da sua conta. Necessário para escritas (bookmarks, Articles) e qualquer ferramenta de contexto de usuário. + +#### Caminho simples (Bearer app-only) + +1. **Crie um app X** no [Portal do Desenvolvedor X](https://developer.x.com). +2. **Copie seu Bearer token App-only** na página "Keys and tokens" do app. +3. Aponte seu cliente para `https://api.x.com/mcp` com o token em um cabeçalho `Authorization` — veja [App-only (URL direta, sem ponte)](#app-only-direct-url-no-bridge) abaixo para o snippet. + +#### Caminho completo (ponte xurl) + +1. **Crie um app X** com **OAuth 2.0** habilitado. 2. **Registre o redirect URI** `http://localhost:8080/callback` no app (necessário para o login pelo navegador na primeira execução). Para usar outro, defina `REDIRECT_URI` e registre esse no lugar. 3. **Copie seu `CLIENT_ID` e `CLIENT_SECRET`** — você os colocará na configuração do cliente. 4. **Tenha o Node.js instalado** (para o `npx`). @@ -68,18 +81,9 @@ flowchart LR #### 1. Grok Build -Adicione o servidor com um único comando (as flags `-e` viram o environment do servidor, e os args após `--` vão para o `npx`): + -```bash -grok mcp add xapi npx \ - -e CLIENT_ID=YOUR_X_APP_CLIENT_ID \ - -e CLIENT_SECRET=YOUR_X_APP_CLIENT_SECRET \ - -- -y @xdevplatform/xurl mcp https://api.x.com/mcp -``` - -Isso grava o seguinte em `~/.grok/config.toml` (você também pode editá-lo diretamente): - -```toml +```toml xurl bridge (~/.grok/config.toml) [mcp_servers.xapi] command = "npx" args = ["-y", "@xdevplatform/xurl", "mcp", "https://api.x.com/mcp"] @@ -91,6 +95,26 @@ CLIENT_ID = "YOUR_X_APP_CLIENT_ID" CLIENT_SECRET = "YOUR_X_APP_CLIENT_SECRET" ``` +```toml App-only Bearer (~/.grok/config.toml) +[mcp_servers.xapi] +url = "https://api.x.com/mcp" +enabled = true + +[mcp_servers.xapi.headers] +Authorization = "Bearer YOUR_APP_ONLY_BEARER_TOKEN" +``` + + + +Ou adicione a ponte xurl com um único comando (as flags `-e` viram o environment do servidor, e os args após `--` vão para o `npx`): + +```bash +grok mcp add xapi npx \ + -e CLIENT_ID=YOUR_X_APP_CLIENT_ID \ + -e CLIENT_SECRET=YOUR_X_APP_CLIENT_SECRET \ + -- -y @xdevplatform/xurl mcp https://api.x.com/mcp +``` + Verifique e liste: ```bash @@ -104,7 +128,9 @@ Na primeira vez que uma ferramenta for invocada (ou no `doctor`), seu navegador Crie `~/.cursor/mcp.json` (global, todos os projetos) ou `.cursor/mcp.json` (apenas este projeto): -```json + + +```json xurl bridge { "mcpServers": { "xapi": { @@ -119,13 +145,30 @@ Crie `~/.cursor/mcp.json` (global, todos os projetos) ou `.cursor/mcp.json` (ape } ``` +```json App-only Bearer +{ + "mcpServers": { + "xapi": { + "url": "https://api.x.com/mcp", + "headers": { + "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" + } + } + } +} +``` + + + Depois abra **Cursor → Settings → MCP**, confirme que **xapi** mostra um ponto verde e suas ferramentas. Na primeira utilização, o Cursor inicia a ponte e seu navegador abre para o login; a lista de ferramentas é preenchida assim que o handshake é concluído. #### 3. Claude Desktop Edite `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/`, Windows: `%APPDATA%\Claude\`): -```json + + +```json xurl bridge { "mcpServers": { "xapi": { @@ -137,13 +180,28 @@ Edite `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude } ``` +```json App-only Bearer +{ + "mcpServers": { + "xapi": { + "url": "https://api.x.com/mcp", + "headers": { "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" } + } + } +} +``` + + + Reinicie o Claude Desktop; as ferramentas do X aparecem no menu de ferramentas (🔌). #### 4. VS Code (GitHub Copilot / modo Agent) Adicione a `.vscode/mcp.json`: -```json + + +```json xurl bridge { "servers": { "xapi": { @@ -156,9 +214,23 @@ Adicione a `.vscode/mcp.json`: } ``` +```json App-only Bearer +{ + "servers": { + "xapi": { + "type": "http", + "url": "https://api.x.com/mcp", + "headers": { "Authorization": "Bearer YOUR_APP_ONLY_BEARER_TOKEN" } + } + } +} +``` + + + #### 5. Qualquer cliente MCP -A configuração stdio universal é: +**Ponte xurl (stdio):** | Campo | Valor | |---|---| @@ -169,11 +241,18 @@ A configuração stdio universal é: Se você instalou o `xurl` nativamente, substitua `command`/`args` por `"command": "xurl", "args": ["mcp", "https://api.x.com/mcp"]`. +**Bearer App-only (HTTP remoto):** + +| Campo | Valor | +|---|---| +| `url` | `https://api.x.com/mcp` | +| `headers.Authorization` | `Bearer YOUR_APP_ONLY_BEARER_TOKEN` | + ### Autenticação #### Contexto de usuário OAuth 2.0 (padrão) -A ponte autentica como **você** (fluxo PKCE), então as ferramentas agem com os escopos da sua conta. Ordem de resolução das credenciais: **vars de ambiente `CLIENT_ID`/`CLIENT_SECRET` → o app ativo em `~/.xurl`**. Os tokens são armazenados em cache em `~/.xurl` e atualizados automaticamente (incluindo uma atualização forçada após um `401`). +A ponte autentica como **você** (fluxo PKCE), então as ferramentas agem com os escopos da sua conta. Ordem de resolução das credenciais: **vars de ambiente `CLIENT_ID`/`CLIENT_SECRET` → o app ativo em `~/.xurl`**. A ponte armazena os tokens em cache em `~/.xurl` e os atualiza automaticamente (incluindo uma atualização forçada após um `401`). #### Login pelo navegador na primeira execução @@ -197,7 +276,7 @@ xurl auth oauth2 --app my-app --headless # for a specific app #### App-only (URL direta, sem ponte) -Para endpoints de leitura, você pode pular a ponte e apontar um cliente direto para a URL com um **Bearer token App-only estático** — útil para clientes que suportam MCP remoto com cabeçalhos customizados: +Para endpoints de leitura, você pode pular a ponte e apontar um cliente direto para a URL com um **Bearer token App-only estático**. Isso é útil para clientes que suportam MCP remoto com cabeçalhos customizados: ```toml # ~/.grok/config.toml @@ -262,7 +341,7 @@ npx -y @xdevplatform/xurl mcp https://api.x.com/mcp ## Docs MCP — busca na documentação -Um servidor MCP para a documentação da X API é hospedado em `https://docs.x.com/mcp`. Conecte-o à sua ferramenta de IA para pesquisar e ler páginas de documentação sem sair do seu fluxo de trabalho. +O X hospeda um servidor MCP para a documentação da X API em `https://docs.x.com/mcp`. Conecte-o à sua ferramenta de IA para pesquisar e ler páginas de documentação sem sair do seu fluxo de trabalho. ### Ferramentas disponíveis