xley-mcp
v0.3.0
Published
MCP server bridge for the Xley Chrome extension. Auto-registers with Claude Desktop + Claude Code (CLI) so users can drive Xley from either client. Cross-platform single-binary install via bun build --compile.
Downloads
121
Maintainers
Readme
xley-mcp
Local MCP (Model Context Protocol) server that bridges Claude Desktop and claude.ai to the Xley Chrome extension. When you ask Claude to draft or schedule an X (Twitter) post, it calls a tool here, which routes the draft into Xley's side panel for you to confirm and post.
The MCP server runs locally as a Chrome native-messaging host. Your Claude conversation, X account, and posts never leave your machine — except for whatever Claude itself sends back over the X API at your direction.
Requirements
- Node.js 20 or newer
- Google Chrome with the Xley extension installed
- Claude Desktop (or any other MCP-aware client)
Install
# 1. Install the bridge globally
npm install -g xley-mcp
# 2. Register the Chrome native-messaging host
# (Optionally pass your extension ID via env var; otherwise the installer
# prints how to set it after you copy it from chrome://extensions.)
xley-mcp install
# 3. Reload the Xley extension at chrome://extensions
# 4. Restart Claude Desktop and verify the connection in Xley > AI > SettingsAfter install completes, the installer prints a snippet to add to
claude_desktop_config.json so Claude Desktop discovers the bridge.
Tools exposed to Claude
draft_x_post— draft a tweet; appears as a card in the Xley side panelschedule_x_post— schedule a tweet for a future timelist_drafts— list pending draftscancel_draft— cancel a queued draft
The tool descriptions Claude sees are augmented with the user's saved system prompt (Xley > AI > Settings > System prompt), so generated drafts match the user's voice.
Manual config / troubleshooting
If you skip the installer or run on a system without write access to the
default native-messaging directories, the install command tells you exactly
which file to write where. Re-run with XLEY_EXT_ID=<your-extension-id> to
embed the right allowed_origins value.
License
MIT — see LICENSE.
