Linkup MCP Server
A Model Context Protocol (MCP) server that provides web search and page fetching capabilities through Linkup's advanced API. This server enables AI assistants like Claude to perform intelligent web searches with natural language queries and fetch content from any webpage, accessing real-time information from trusted sources across the web.
Features
- 🔍 Real-time Web Search: Search the web for current information, news, and data
- 🧠 Deep Research: Start long-running, multi-source research tasks and poll for results
- 🌐 Page Fetching: Fetch and extract content from any webpage
- 🎯 Natural Language Queries: Use full questions for best results
- 📊 Flexible Search Depth:
standard- For queries with direct answersdeep- For complex research requiring analysis across multiple sources
- 🎯 Result Filtering: Restrict by domain (
includeDomains/excludeDomains), date range (fromDate/toDate), andmaxResults - 🖼️ Image Results: Optional
includeImagesfor search andextractImagesfor fetch - 🖥️ JavaScript Rendering: Optional JS rendering for dynamic content
- 📄 Raw HTML: Optional
includeRawHtmlfor fetch when you need the unprocessed page - ⚡ Fast: Powered by Linkup's optimized infrastructure
Installation
- Cursor, VSCode, Claude Code, Codex, or another MCP compatible client
- Linkup API key
Getting Your API Key
- Create a Linkup account for free at app.linkup.so
- Copy the API key from your dashboard
Remote MCP Server (recommended)
The hosted Linkup MCP server uses the Streamable HTTP transport. If your client supports remote HTTP MCP servers, you can reference the hosted endpoint directly.
If your client supports custom HTTP headers, prefer sending your API key in Authorization: Bearer LINKUP_API_KEY instead of putting it in the URL. The ?apiKey=... query parameter remains supported for clients that cannot send custom headers.
Cursor
In your ~/.cursor/mcp.json file, add the following:
{
"mcpServers": {
// ... other MCP servers
"linkup": {
"type": "http",
"url": "https://mcp.linkup.so/mcp?apiKey=LINKUP_API_KEY"
}
}
}
VSCode
Add this to your VS Code MCP config file. See VS Code MCP docs for more info.
{
"servers": {
// ... other MCP servers
"linkup": {
"url": "https://mcp.linkup.so/mcp?apiKey=LINKUP_API_KEY",
"type": "http"
}
}
}
Codex
Codex supports both remote HTTP MCP servers and custom HTTP headers via config.toml.
Using a bearer token from the environment:
[mcp_servers.linkup]
url = "https://mcp.linkup.so/mcp"
bearer_token_env_var = "LINKUP_API_KEY"
enabled = true
Or, if you prefer to keep using the query parameter:
[mcp_servers.linkup]
url = "https://mcp.linkup.so/mcp?apiKey=LINKUP_API_KEY"
enabled = true
MCP Bundle (recommended for Claude Desktop)
Download the pre-built MCP bundle, a self-contained package that works across compatible MCP clients such as Claude Desktop. MCP Bundles are developed by Anthropic. See the MCP Bundles repository for more information.
Quick Download:
curl -L -o linkup-mcp-server.mcpb https://github.com/LinkupPlatform/linkup-mcp-server/releases/latest/download/linkup-mcp-server.mcpb
Installation:
- Download
linkup-mcp-server.mcpbfrom releases (or use the curl command above) - Click on the file to install
- Configure your API key when prompted
Local MCP Server
You can also run the MCP server locally over the stdio transport.
Cursor
{
"mcpServers": {
// ... other MCP servers
"linkup": {
"command": "npx",
"args": [
"-y",
"linkup-mcp-server",
"apiKey=LINKUP_API_KEY"
]
}
}
}
VSCode
{
"servers": {
// ... other MCP servers
"linkup": {
"command": "npx",
"type": "stdio",
"args": [
"-y",
"linkup-mcp-server",
"apiKey=LINKUP_API_KEY"
]
}
}
}
Codex
[mcp_servers.linkup]
command = "npx"
args = ["-y", "linkup-mcp-server", "apiKey=LINKUP_API_KEY"]
enabled = true
Usage
Once configured, you can ask your AI agent to search the web or fetch webpage content:
Search Examples:
- "Search the web for the latest news about AI developments"
- "What's the current weather in Tokyo?"
- "Find information about the new EU AI Act and how it affects startups"
- "Search for the latest stock price of NVIDIA"
Research Examples:
- "Compare the 2024 cloud revenue growth of Microsoft, Amazon, and Google."
Research is a long-running operation (typically several minutes). The agent starts a task with linkup-research, then polls linkup-get-research with the returned task id until the status is completed or failed.
Fetch Examples:
- "Fetch the content from https://example.com/article"
- "Get the content of this blog post: https://blog.example.com/post and make a summary of it"
- "Fetch https://example.com with JavaScript rendering enabled"
Search Depths
- Standard Search: Best for queries with direct answers (weather, stock prices, simple facts)
- Deep Search: Best for complex research requiring analysis across multiple sources (comprehensive guides, comparative analysis, in-depth research)
Tools Available
linkup-search
Search the web in real time using Linkup to retrieve current information, facts, and news from trusted sources.
Parameters:
query(required): Natural language search query. Full questions work best.depth(optional): Search depth -"standard"(default) or"deep".includeImages(optional, defaultfalse): Return relevant images alongside text results, each with a URL and metadata.includeDomains(optional): Array of domains to restrict results to, e.g.["bbc.com", "reuters.com"]. Max 100 domains.excludeDomains(optional): Array of domains to exclude from results, e.g.["reddit.com", "quora.com"].fromDate(optional): Only include content published on or after this date. FormatYYYY-MM-DD.toDate(optional): Only include content published on or before this date. FormatYYYY-MM-DD.maxResults(optional): Maximum number of results to return (positive integer).
Use cases:
- Real-time data (weather, stocks, sports scores, events)
- Breaking news and current events
- Recent research and publications
- Product information and up-to-date prices
- Schedules and availability
- Any information not available in the AI's knowledge base
linkup-research
Submits an autonomous Linkup research task: an agent that investigates the web to answer questions a single search query cannot resolve, returning a synthesized, cited answer. Use for verified answers to precise questions, focused investigations of a defined subject, or broad multi-angle reports. This is async and long-running (can take several minutes): it returns immediately with a task id and status rather than the final result. Use linkup-get-research to poll for completion.
Parameters:
query(required): Natural language research question. Detailed, full questions work best.mode(optional): Controls the type of investigation. Use"answer"for a precise, evidence-backed answer,"investigate"for a focused report on one subject, or"research"for a structured report across many topics. Omit to let Linkup classify the question.reasoningDepth(optional): How much reasoning effort the task spends, trading latency for coverage. Use"S"for light coverage,"M"for balanced,"L"(default) for thorough, or"XL"for exhaustive.includeDomains(optional): Array of domains to restrict results to, e.g.["bbc.com", "reuters.com"]. Recommended; max 100 domains.excludeDomains(optional): Array of domains to exclude from results, e.g.["reddit.com", "quora.com"].fromDate(optional): Only include content published on or after this date. FormatYYYY-MM-DD.toDate(optional): Only include content published on or before this date. FormatYYYY-MM-DD.
Use cases:
- Comprehensive research reports and comparative analysis
- Investigations that require synthesizing many sources
- Complex questions where a quick search is insufficient
linkup-get-research
Retrieve the current state of a research task started with linkup-research.
Parameters:
id(required): The research task id returned bylinkup-research.
Behavior:
- Returns the task object with its
status(pending,processing,completed,failed). - While
pending/processing, keep polling every few seconds until a terminal state; faster than once per second is rate-limited. - When
completed, the result is in theoutputfield; whenfailed, the reason is in theerrorfield.
linkup-fetch
Fetch and extract content from any webpage URL.
Parameters:
url(required): The URL to fetch content from.renderJs(optional, defaultfalse): Whether to render JavaScript content. Enable for dynamic pages that load content via JavaScript. Note: makes the request slower.extractImages(optional, defaultfalse): Extract images found on the page and return them in a dedicatedimagesfield. Useful when you need a list of all images for further processing or analysis.includeRawHtml(optional, defaultfalse): Include the page's raw HTML in a dedicatedrawHtmlfield. Useful for custom HTML parsing, preserving specific formatting, or accessing elements that might be filtered out during standard content extraction.
Use cases:
- Retrieve page content for analysis or summarization
- Extract article content from news sites
- Get documentation from technical websites
- Fetch blog posts and written content
Development
Prerequisites
- Node.js >= 24.0.0
- npm
Setup
# Install dependencies
npm install
Running the HTTP Server
npm run dev
This starts the local Streamable HTTP server at http://localhost:2121/mcp.
Running with the stdio Transport
npm run build:stdio
npm run start:stdio -- apiKey=YOUR_API_KEY
For local development, you can also pass the key via environment variable:
LINKUP_API_KEY=YOUR_API_KEY npm run start:stdio
Testing with MCP Inspector
npm run build:stdio
npm run inspector -- apiKey=YOUR_API_KEY
This will open the MCP Inspector in your browser where you can test the search tool interactively.
License
MIT
Links
Support
If you have issues, contact us via email at support@linkup.so or join our Discord server.