One API for Search, Crawling, and Sitemaps
A Model Context Protocol (MCP) server that provides search and crawl functionality using Search1API.
Clone the repository:
git clone https://github.com/fatwang2/search1api-mcp.git
cd search1api-mcp
Configure API Key: Before building, you need to provide your Search1API key. See the Setup Guide section below for different methods (e.g., using a .env
file or environment variables).
Install dependencies and build:
npm install
npm run build
Note: If using the project's .env
file method for the API key, ensure it exists before this step.
Ensure your API key is configured (see Setup Guide).
Start the server:
npm start
The server will then be ready to accept connections from MCP clients.
You need to make your API key available to the server. Choose one of the following methods:
Method A: Project .env
File (Recommended for Standalone or LibreChat)
This method is required if integrating with the current version of LibreChat (see specific section below).
search1api-mcp
project root directory, create a file named .env
:
# In the search1api-mcp directory
echo "SEARCH1API_KEY=your_api_key_here" > .env
your_api_key_here
with your actual key.npm install && npm run build
.Method B: Environment Variable (Standalone Only)
Set the SEARCH1API_KEY
environment variable before starting the server.
export SEARCH1API_KEY="your_api_key_here"
npm start
Method C: MCP Client Configuration (Advanced)
Some MCP clients allow specifying environment variables directly in their configuration. This is useful for clients like Cursor, VS Code extensions, etc.
{
"mcpServers": {
"search1api": {
"command": "npx",
"args": [
"-y",
"search1api-mcp"
],
"env": {
"SEARCH1API_KEY": "YOUR_SEARCH1API_KEY"
}
}
}
}
Note for LibreChat Users: Due to current limitations in LibreChat, Method A (Project .env
File) is the required method. See the dedicated integration section below for full instructions.
This section details the required steps for integrating with LibreChat via Docker.
Overview:
docker-compose.yml
..env
File method within this server's directory.librechat.yaml
.Step-by-Step:
Clone the Repository:
Navigate to the directory on your host machine where you manage external services for LibreChat (this is often alongside your docker-compose.yml
). A common location is a dedicated mcp-server
directory.
# Example: Navigate to where docker-compose.yml lives, then into mcp-server
cd /path/to/your/librechat/setup/mcp-server
git clone https://github.com/fatwang2/search1api-mcp.git
Navigate into the Server Directory:
cd search1api-mcp
Configure API Key (Project .env
File Method - Required for LibreChat):
# Create the .env file
echo "SEARCH1API_KEY=your_api_key_here" > .env
# IMPORTANT: Replace 'your_api_key_here' with your actual Search1API key
Install Dependencies and Build:
This step compiles the server code into the build
directory.
npm install
npm run build
Configure librechat.yaml
:
Edit your main librechat.yaml
file to tell LibreChat how to execute this MCP server. Add an entry under mcp_servers
:
# In your main librechat.yaml
mcp_servers:
# You can add other MCP servers here too
search1api:
# Optional: Display name for the server in LibreChat UI
# name: Search1API Tools
# Command tells LibreChat to use 'node'
command: node
# Args specify the script for 'node' to run *inside the container*
args:
- /app/mcp-server/search1api-mcp/build/index.js
args
path (/app/...
) is the location inside the LibreChat API container where the built server will be accessed (thanks to the volume bind in the next step).Configure Docker Volume Bind:
Edit your docker-compose.yml
(or more likely, your docker-compose.override.yml
) to map the search1api-mcp
directory from your host machine into the LibreChat API container. Find the volumes:
section for the api:
service:
# In your docker-compose.yml or docker-compose.override.yml
services:
api:
# ... other service config ...
volumes:
# ... other volumes likely exist here ...
# Add this volume bind:
- ./mcp-server/search1api-mcp:/app/mcp-server/search1api-mcp
./mcp-server/search1api-mcp
): This is the path on your host machine relative to where your docker-compose.yml
file is located. Adjust it if you cloned the repo elsewhere.:/app/mcp-server/search1api-mcp
): This is the path inside the container. It must match the directory structure used in the librechat.yaml
args
path.Restart LibreChat:
Apply the changes by rebuilding (if you modified docker-compose.yml
) and restarting your LibreChat stack.
docker compose down && docker compose up -d --build
# Or: docker compose restart api (if only librechat.yaml changed)
Now, the Search1API server should be available as a tool provider within LibreChat.
search
query
(required): Search query in natural language. Be specific and concise for better resultsmax_results
(optional, default: 10): Number of results to returnsearch_service
(optional, default: "google"): Search service to use (google, bing, duckduckgo, yahoo, x, reddit, github, youtube, arxiv, wechat, bilibili, imdb, wikipedia)crawl_results
(optional, default: 0): Number of results to crawl for full webpage contentinclude_sites
(optional): List of sites to include in searchexclude_sites
(optional): List of sites to exclude from searchtime_range
(optional): Time range for search results ("day", "month", "year")news
query
(required): Search query in natural language. Be specific and concise for better resultsmax_results
(optional, default: 10): Number of results to returnsearch_service
(optional, default: "bing"): Search service to use (google, bing, duckduckgo, yahoo, hackernews)crawl_results
(optional, default: 0): Number of results to crawl for full webpage contentinclude_sites
(optional): List of sites to include in searchexclude_sites
(optional): List of sites to exclude from searchtime_range
(optional): Time range for search results ("day", "month", "year")crawl
url
(required): URL to crawlsitemap
url
(required): URL to get sitemapreasoning
content
(required): The question or problem that needs deep thinkingtrending
search_service
(required): Specify the platform to get trending topics from (github, hackernews)max_results
(optional, default: 10): Maximum number of trending items to return.env
support for LibreChat integration and updated dependencies.This project is licensed under the MIT License - see the LICENSE file for details.
Web and local search using Brave's Search API
Search Engine made for AIs by Exa
RAG Search over your content powered by Inkeep
Search the web using Kagi's search API
Interact & query with Meilisearch (Full-text & semantic search API)
Production-ready RAG out of the box to search and retrieve data from your own documents.
An MCP server that connects to Perplexity's Sonar API, enabling real-time web-wide research in conversational AI.
Search engine for AI agents (search + extract) powered by Tavily
Vectorize MCP server for advanced retrieval, Private Deep Research, Anything-to-Markdown file extraction and text chunking.
RAG MCP for your Agentset data.