by fatwang2
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.
*Configuration content*
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.
searchquery (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")newsquery (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")crawlurl (required): URL to crawlsitemapurl (required): URL to get sitemapreasoningcontent (required): The question or problem that needs deep thinkingtrendingsearch_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.