Performs live searches across six major engines and extracts webpage content as Markdown for AI agents.
Also known as openserpapi/mcp, mcp, @openserp/mcp
- Stars
- 3
- Tools
- 10
- Downloads, 30 days
- —
- Latest version
- 0.1.12
- Last commit
- Oct 27, 2026
- License
- MIT
What is OpenSERP MCP?
OpenSERP performs live searches across six major engines and extracts webpage content as Markdown for AI agents. It exposes 10 tools, such as search, any_search, fast_search.
Summary generated from the project's README
About OpenSERP MCP server
OpenSERP provides AI agents with the ability to perform live web searches and extract webpage content. It connects to six major search engines, including Google, Bing, Yandex, Baidu, DuckDuckGo, and Ecosia. Developers can use it locally via an OSS mode running at localhost:7000 or connect to OpenSERP Cloud by providing an OPENSERP_API_KEY. The server supports various search strategies through tools like mega_search for wide coverage, any_search for preferred engine fallbacks, and fast_search to prioritize speed and engine health.
Beyond searching, the server includes tools for content processing. The extract tool converts single webpages into Markdown, while batch_extract can process up to 20 URLs in a single request. To manage context window limits, the server automatically truncates content to 20,000 characters per page or 40,000 characters across a batch. Users can also perform image searches using image_search or mega_image and monitor their Cloud credit balance with the get_usage tool.
What you can do with it
- 1Compare search engine resultsAn AI agent can compare results from Google and Bing for specific SEO keywords.
- 2Convert web pages to MarkdownA developer can request clean Markdown from a specific URL to provide context to an LLM.
- 3Perform bulk content extractionAn agent can ground its answers by reading up to 20 different URLs in one round-trip.
- 4Monitor API usageUsers can check their remaining Cloud credits or the cost of their last request.
Written from the project's README. Every use case is checked against a quote from it.
How to install OpenSERP MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall OpenSERP MCP in Claude Code
$ claude mcp add --env 'OPENSERP_API_KEY=<YOUR_OPENSERP_API_KEY>' mcp -- npx -y @openserp/mcpInstall OpenSERP MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@openserp/mcp"
],
"env": {
"OPENSERP_API_KEY": "<YOUR_OPENSERP_API_KEY>"
}
}
}
}Install OpenSERP MCP in VS Code
.vscode/mcp.json
{
"servers": {
"mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@openserp/mcp"
],
"env": {
"OPENSERP_API_KEY": "<YOUR_OPENSERP_API_KEY>"
}
}
}
}Install OpenSERP MCP in VS Code CLI
$ code --add-mcp '{"name":"mcp","type":"stdio","command":"npx","args":["-y","@openserp/mcp"],"env":{"OPENSERP_API_KEY":"<YOUR_OPENSERP_API_KEY>"}}'Install OpenSERP MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@openserp/mcp"
],
"env": {
"OPENSERP_API_KEY": "<YOUR_OPENSERP_API_KEY>"
}
}
}
}Install OpenSERP MCP in Codex
$ codex mcp add mcp --env 'OPENSERP_API_KEY=<YOUR_OPENSERP_API_KEY>' -- npx -y @openserp/mcpInstall OpenSERP MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.mcp] command = "npx" args = ["-y", "@openserp/mcp"] [mcp_servers.mcp.env] OPENSERP_API_KEY = "<YOUR_OPENSERP_API_KEY>"
Install OpenSERP MCP in Gemini CLI
$ gemini mcp add -s user -e 'OPENSERP_API_KEY=<YOUR_OPENSERP_API_KEY>' mcp npx -- -y @openserp/mcpInstall OpenSERP MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@openserp/mcp"
],
"env": {
"OPENSERP_API_KEY": "<YOUR_OPENSERP_API_KEY>"
}
}
}
}OpenSERP MCP tools 10
Detected from the READMEsearchany_searchfast_searchmega_searchimage_searchmega_imageextractbatch_extractlist_enginesget_usage
| search | — | |
| any_search | — | |
| fast_search | — | |
| mega_search | — | |
| image_search | — | |
| mega_image | — | |
| extract | — | |
| batch_extract | — | |
| list_engines | — | |
| get_usage | — |
Configuration
OPENSERP_API_KEYSecretOpenSERP Cloud API key. Leave unset to use a self-hosted OpenSERP server (http://localhost:7000 by default).
OPENSERP_BASE_URLOpenSERP API base URL, for a self-hosted server on another host or port.
| Name | Description | |
|---|---|---|
| OPENSERP_API_KEY | OpenSERP Cloud API key. Leave unset to use a self-hosted OpenSERP server (http://localhost:7000 by default). | Secret |
| OPENSERP_BASE_URL | OpenSERP API base URL, for a self-hosted server on another host or port. |
Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledPass
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHub@openserp/mcp
Live search on six engines (Google, Bing, Yandex, Baidu, DuckDuckGo, Ecosia), image search and single/batch page extraction for AI agents. Results keep the source engine and rank. Runs against a self-hosted OpenSERP server or OpenSERP Cloud.
When OPENSERP_API_KEY is not set, the server uses OSS mode at http://localhost:7000 and writes:
[openserp-mcp] No OPENSERP_API_KEY set - using OSS mode at http://localhost:7000.
[openserp-mcp] Get an API key: https://openserp.org/dashboard/keys
[openserp-mcp] Docs: https://openserp.org/docs | Issues: https://github.com/openserpapi/mcp/issues
Set OPENSERP_API_KEY to use OpenSERP Cloud. API keys are available at https://openserp.org/dashboard/keys. Set OPENSERP_BASE_URL to target another compatible OpenSERP API base URL.
Install
npm install -g @openserp/mcp
You can also run it without installing:
npx -y @openserp/mcp --stdio
Tools
| Tool | Use it when |
|---|---|
search |
The engine matters (Yandex for Russian, Baidu for Chinese), or you page with start |
any_search |
You want a preferred engine with fallbacks, in your order |
fast_search |
Any engine will do; picks the healthiest, fastest one |
mega_search |
You compare engines or want wider coverage; results keep engine and rank |
image_search |
Images from one engine |
mega_image |
Images merged from several engines |
extract |
Reading one page as Markdown |
batch_extract |
Reading several pages (up to 20) in one call; a failed URL doesn't fail the batch |
list_engines |
Searches keep failing and you need a healthy engine |
get_usage |
Checking the Cloud credit balance or what the last call cost |
extract and batch_extract cut long pages to fit an agent's context: 20,000 characters per page, or 40,000 shared across a batch (at least 2,000 per URL). Cut content ends with a [truncated: ...] line and is flagged (truncated / metadata.truncated). Pass maxChars to read more.
Quick Examples
Ask your MCP client to:
- Search Google for current docs and return the top 5 URLs.
- Compare Google and Bing results for an SEO keyword.
- Extract clean Markdown from a URL before passing it to an LLM.
- Ground an answer in several sources at once with
batch_extract- up to 20 URLs in one round-trip, where a dead link returns an error item instead of failing the batch. - Read a geo-fenced page as a local visitor by passing
region: "DE". - Check remaining Cloud credits with
get_usage.
Cloud search parameters
Cloud requests use Authorization: Bearer with OPENSERP_API_KEY. For paging, use start and keep limit: 10; pass the previous response's pagination.next_start while has_more is true. Google, Bing, and Yandex take multiples of 10; Baidu supports early pages, Ecosia any offset, and DuckDuckGo only the first page. mega_search with mode: "balanced" rejects start > 0; use search, any_search, or fast_search for later pages.
Cloud web search supports date: "20250101..20251231" on Google and Ecosia. Unsupported offsets or date filters return 400 invalid_request without charge; adjust the request before retrying.
list_engines returns Cloud capabilities plus operational status. Omit engines to use defaults. Any starts engines in your order, overlapping slow attempts; Fast prioritizes recent health and latency. Read meta.engine_used for the winner; engines_tried and engines_skipped may be absent.
Tool errors include the public HTTP status, error code, request ID, and retry delay when present. Honor retry_after for 429 and 503; 503 engine_unavailable carries a 60-second delay. The server does not retry automatically.
Claude Desktop
Local OSS mode:
{
"mcpServers": {
"openserp": {
"command": "npx",
"args": ["-y", "@openserp/mcp"]
}
}
}
Cloud mode:
{
"mcpServers": {
"openserp": {
"command": "npx",
"args": ["-y", "@openserp/mcp"],
"env": {
"OPENSERP_API_KEY": "osk_live_..."
}
}
}
}
Cursor
For stdio use, add an MCP server entry:
{
"mcpServers": {
"openserp": {
"command": "npx",
"args": ["-y", "@openserp/mcp"],
"env": {
"OPENSERP_API_KEY": "osk_live_..."
}
}
}
}
For remote-style HTTP use, run:
npx -y @openserp/mcp --http --host 127.0.0.1 --port 3333
Then point a streamable HTTP MCP client to:
http://127.0.0.1:3333/mcp
Clients that still use the older SSE transport can connect to:
http://127.0.0.1:3333/sse
Environment
OPENSERP_API_KEY: Cloud API key from https://openserp.org/dashboard/keys.OPENSERP_BASE_URL: API base URL override.OPENSERP_BACKEND: Optional backend hint,ossorcloud.OPENSERP_TIMEOUT_MS: SDK request timeout in milliseconds.HOST: HTTP host, default127.0.0.1.PORT: HTTP port, default3333.
Resources
OpenSERP MCP questions
How do I add OpenSERP MCP to Claude Code?
Run claude mcp add --env 'OPENSERP_API_KEY=<YOUR_OPENSERP_API_KEY>' mcp -- npx -y @openserp/mcp in your terminal. Add --scope user to make it available in every project.
How do I add OpenSERP MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does OpenSERP MCP provide?
It exposes 10 tools, including search, any_search, fast_search, mega_search, image_search.
Can I extract content from multiple pages at once?
Yes, the batch_extract tool allows you to read up to 20 pages in a single call.
How does the server handle long web pages?
The extraction tools truncate long pages to fit an agent's context, limiting content to 20,000 characters per page or 40,000 shared across a batch.
Which search engines are supported?
The server supports Google, Bing, Yandex, Baidu, DuckDuckGo, and Ecosia.