AI search, X search, web search, page extraction, and X trends.
This MCP server provides AI search, X search, web search, page extraction, and X trends. It is identified by the slug io-github-desearch-ai-mcp-desearch and described under the name io.github.Desearch-ai/mcp-desearch.
๐ ๏ธ Key Features
AI search
X search
Web search
Page extraction
X trends
๐ Use Cases
Searching across AI-focused results
Querying X content via search
Performing web searches
Extracting content from web pages
Tracking trends on X
โก Developer Benefits
Consolidates AI search, X search, web search, page extraction, and X trends behind one MCP server interface.
Supports building applications that need both search and extracted page content.
โ ๏ธ Limitations
No additional capabilities, configuration details, or tool counts are provided in the available server data.
AI search, X search and web search for AI agents, plus page extraction and X data tools. Bring your own Desearch API key.
Tools
The Desearch MCP server includes the following tools:
AI Search (ai-search): Performs AI Twitter and web searches with relevant links and summary. tools uses short source ids (web, twitter, arxiv, wikipedia, hackernews, reddit). Older labels such as Web Search, ArXiv Search, Wikipedia Search, Hacker News Search, and Reddit Search are still accepted and sent as the short id. youtube is not accepted. Default is ["web", "twitter"].
Web Search (web-search): SERP-style web search. Arguments: query (required), start (optional pagination offset).
Web Links Search (web-links-search): Web link search. Arguments: prompt (required), tools (optional, only web, default ["web"]; Web Search is accepted and rewritten to web), count (optional, 10โ200). The links/web API rejects other sources, so they are not in the enum.
Extract (extract): Read a public URL as text or HTML. Preferred over crawl. Arguments: url (required), format (optional, html or text), js (optional), wait (optional milliseconds).
Web Crawl (web-crawl): Same arguments as extract, on the legacy /web/crawl route. The SDK marks webCrawl deprecated in favor of extract; this tool stays so that route remains reachable. Prefer extract for new integrations.
X Links Search (x-links-search): AI search for X post links. Arguments: prompt (required), count (optional, 10โ200).
X Posts By URLs (x-posts-by-urls): Full posts for a list of URLs. Argument: urls (required).
X Post By ID (x-post-by-id): One post by ID. Argument: id (required).
X Posts By User (x-posts-by-user): Posts by a user. Arguments: user (required), query (optional), count (optional, 1โ100).
X Post Retweeters (x-post-retweeters): Users who retweeted a post. Arguments: id (required), cursor (optional).
X User Posts (x-user-posts): A user's timeline. Arguments: username (required), cursor (optional).
X User Replies (x-user-replies): Posts and replies by a user. Arguments: user (required), count (optional, 1โ100), query (optional).
X Post Replies (x-post-replies): Replies to a post. Arguments: post_id (required), count (optional, 1โ100), query (optional).
X Trends (x-trends): Trending topics for a location. Arguments: woeid (required), count (optional, 30โ100).
The full SDK method โ endpoint โ MCP tool map is in docs/API_MCP_PARITY.md. Every public desearch-js 1.5 method is a tool. latestTweets was removed from the SDK (GET /twitter/latest in 1.0.1) and is not exposed.
The package name is desearch-mcp-server. The current version is on npm. See CHANGELOG.md for release notes. The stdio entry is the desearch-mcp-server bin (build/index.js), which requires DESEARCH_API_KEY.
command: "desearch-mcp-server" (no args) is the same entry after the global install above.
Gemini CLI
Install the extension from this repository. Gemini CLI asks for your Desearch API key (stored as a sensitive setting) and connects to the hosted server https://mcp.desearch.ai/mcp:
Windsurf's Cascade agent reads MCP servers from mcp_config.json under the mcpServers key. Open it from the Cascade panel: click the ... (Actions) menu, then Open MCP config file. Windsurf builds use ~/.codeium/windsurf/mcp_config.json (on Windows, %USERPROFILE%\.codeium\windsurf\mcp_config.json). Newer builds may open ~/.config/devin/mcp_config.json instead (Windows: %APPDATA%\devin\mcp_config.json); edit whichever file that action opens.
Hosted server (no local install). Remote servers use serverUrl with headers:
Save the file, then refresh the MCP servers list in Cascade.
Zed
Zed calls MCP servers context servers. Open your settings file with the zed: open settings file action (or use Settings โ AI โ MCP Servers โ Add Server) and add a context_servers entry.
The server is ready when the dot next to desearch in Settings โ AI โ MCP Servers turns green ("Server is active").
Configuration โ๏ธ
1. Configure Cursor IDE to run the Desearch MCP server
Open Cursor IDE, access command palette Cmd+Shift+P or Ctrl+Shift+P, and search for Open MCP Settings. Click on Add new global MCP server to open the mcp.json file.
1. Configure Claude Desktop to run the Desearch MCP server
Open the Claude Desktop app and enable Developer Mode from the top-left menu bar.
Once enabled, open Settings (also from the top-left menu bar) and navigate to the Developer Option, where you'll find the Edit Config button. Clicking it will open the claude_desktop_config.json file, allowing you to make the necessary edits.
OR (if you want to open claude_desktop_config.json from terminal)
You can verify the server by checking status in Settings > Developer > desearch
Remote Streamable HTTP
The same server can run over MCP Streamable HTTP for a remote client. Local stdio (desearch-mcp-server, Smithery) is unchanged and still reads DESEARCH_API_KEY from the environment.
Remote requests do not use that environment variable. Discovery does not need a key: initialize, notifications/initialized, ping, tools/list, prompts/list, resources/list, and resources/templates/list return 200 so a marketplace scanner can read the tool list. tools/call and every other method still require the caller's own Desearch API key, the same key from console.desearch.ai/api-keys:
A bare Authorization: <DESEARCH_API_KEY> value is also accepted. The key is not read from the query string. There is no shared server secret and no WWW-Authenticate challenge: the hosted process forwards the per-request key to the Desearch API only when a call needs it.
The MCP endpoint is POST /mcp. Responses are JSON (stateless Streamable HTTP). GET and DELETE on /mcp return 405 because the server does not keep a session or push server-to-client messages. GET /, GET /health, and GET /api/health are unauthenticated health checks.
Hosted endpoint
The public Streamable HTTP endpoint is https://mcp.desearch.ai/mcp. Listing the tools does not need a key. Send your Desearch API key on each tools/call in the x-api-key header. Authorization: Bearer <key> is also accepted. Use the key from console.desearch.ai/api-keys. The server does not read a key from the query string. Remote requests do not use a process-level DESEARCH_API_KEY.
The image default is stdio MCP (node build/index.js). Registries such as Glama start the container and speak MCP on stdin/stdout, so the image does not pass --http unless you override it. Stdio requires DESEARCH_API_KEY. Smithery does not use this image command; smithery.yaml starts node build/index.js and injects DESEARCH_API_KEY itself.
Streamable HTTP is an override. Replace the command with --http, or set MCP_TRANSPORT=http and keep the default command. The image still exposes port 3000 for that mode.
bash
docker build -t desearch-mcp .
# stdio (image default)
docker run --rm -e DESEARCH_API_KEY=your-api-key -i desearch-mcp
# Streamable HTTP
docker run --rm -p 3000:3000 desearch-mcp node build/index.js --http
# same HTTP mode via env, without replacing the command
docker run --rm -e MCP_TRANSPORT=http -p 3000:3000 desearch-mcp
Deploy on Vercel
Vercel fits this server because the handler is stateless and answers each JSON-RPC call in one response. vercel.json builds the project, serves POST /mcp, and sets the function duration to 60 seconds. Hobby plans cap function duration lower than that, so AI Search tool calls need a plan that allows at least 60 seconds. initialize and tools/list are short either way.
No server-side Desearch API key is required in the Vercel project. After deploy, the endpoint is:
https://<project>.vercel.app/mcp
https://mcp.desearch.ai/mcp is the public hostname. This repo does not create DNS records. Clients send x-api-key, or Authorization: Bearer <key>.
The same node build/index.js --http process is the fallback if you would rather run a long-lived Node host instead of Vercel. The Docker image defaults to stdio; pass --http or set MCP_TRANSPORT=http to serve Streamable HTTP from it.
Troubleshooting ๐ง
Common Issues
Server Not Found
Check Claude or Cursor Desktop configuration syntax
Ensure Node.js is installed
API Key Issues
Confirm your DESEARCH_API_KEY is valid
Check the DESEARCH_API_KEY is correctly set in the Cursor or Claude Desktop config
Verify that there are no spaces around the API key
For the remote HTTP server, send Authorization: Bearer <key> or x-api-key. A hosted DESEARCH_API_KEY environment variable is not used for those requests.