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:
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:
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.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4