# OpenSERP (npm · @openserp/mcp)

Search Google, Bing, Yandex, Baidu, DuckDuckGo and Ecosia with original ranks, plus page extraction.

- Trust score: 82/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `@openserp/mcp`: 82/100 (this document), [markdown](https://verifymcp.io/servers/org-openserp-mcp/openserp-mcp.md), [page](https://verifymcp.io/servers/org-openserp-mcp/openserp-mcp)

## Channel facts

- Registry: `npm`
- Package: `@openserp/mcp`
- Version: `0.1.12`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 93 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to openserpapi/mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 8 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4515 tokens (~451/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 33/100
  - Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the OpenSERP MCP server?

OpenSERP runs locally as an npm package, launched with npx -y @openserp/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add org-openserp-mcp -- npx -y @openserp/mcp
```

### Cursor

```json
{
  "mcpServers": {
    "org-openserp-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@openserp/mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "org-openserp-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@openserp/mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add org-openserp-mcp -- npx -y @openserp/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "org-openserp-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@openserp/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add org-openserp-mcp --command npx --arg -y --arg @openserp/mcp
```

### Hermes

```yaml
mcp_servers:
  org-openserp-mcp:
    command: "npx"
    args: ["-y", "@openserp/mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "org-openserp-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@openserp/mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add org-openserp-mcp -t stdio -c npx -a -y @openserp/mcp
```

### Other

```json
{
  "mcpServers": {
    "org-openserp-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@openserp/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 78, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-27 (score 63, +1)

- [security improvement] Malware scan: unverified → pass
- [functional improvement] Stability: unverified → 0.03
- [functional] Package version: 0.1.10 → 0.1.12

### 2026-10-26 (score 62)

First indexed and scored.

## MCP tools (10)

### `search` (~590 tokens)

Search

Search one engine you choose and return its ranked web results. Use it when the engine matters (Yandex for Russian, Baidu for Chinese, Google for the widest index) or to page with start. If any engine will do, use any_search; to compare engines, use mega_search. Returns JSON: results (rank, title, url, snippet, domain, engine), pagination (has_more, next_start) and meta (request_id, took_ms, engines_failed). Cloud: 1 credit per 10 returned results. Errors return isError with status, error code and retry_after. On 429 or 503 wait retry_after; if an engine is blocked (CAPTCHA, 502/503), try another engine. Unsupported parameters return 400 and are not charged.

Input parameters:

- `date` (string): Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge.
- `engine` (string, required): Engine to query: google, bing, yandex, baidu, duckduckgo (or duck), ecosia.
- `extract`: Enrich the top web results with cleaned page content. Boolean or integer depth: false/0 off, true/1 top result, N top N (1-5).
- `extractMode` (string): auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages.
- `features` (boolean): Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them.
- `file` (string): File extension filter, such as PDF.
- `filter` (boolean): Let the engine collapse near-duplicate results (default true, mostly affects Google).
- `format` (string): json (default) for structured results; markdown, text or ndjson for compact plain text.
- `lang` (string): Language code, such as EN or de.
- `limit` (integer): Maximum result count, 1-100. Keep 10 when paging with start.
- `minRunes` (integer): Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor.
- `region` (string): Market or location hint, such as US, DE, en-GB, Berlin, or a Yandex lr id.
- `site` (string): Domain filter, such as example.com.
- `start` (integer): Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400.
- `text` (string): Search query text. At least one of text, site, or file should be provided.

### `mega_search` (~723 tokens)

Mega Search

Query several engines in parallel and merge their web results into one list (mode balanced, the default). Each result keeps its source engine and rank, and clusters list each URL with its rank on every engine that found it. Use it to compare engines, check where a page ranks across engines, or widen coverage for research; it is slower and costs more than one engine. Balanced mode serves only the first page (start 0); mode any or fast behaves like any_search or fast_search. Returns JSON: results (rank, title, url, snippet, domain, engine), pagination (has_more, next_start) and meta (request_id, took_ms, engines_failed). Cloud: balanced is billed per engine that returns results. Errors return isError with status, error code and retry_after. On 429 or 503 wait retry_after; if an engine is blocked (CAPTCHA, 502/503), try another engine. Unsupported parameters return 400 and are not charged.

Input parameters:

- `date` (string): Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge.
- `dedupe` (boolean): Drop duplicate URLs across engines (default true).
- `engines` (array): Engines to query, in priority order for any mode. Omit to use all available engines.
- `extract`: Enrich the top web results with cleaned page content. Boolean or integer depth: false/0 off, true/1 top result, N top N (1-5).
- `extractMode` (string): auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages.
- `features` (boolean): Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them.
- `file` (string): File extension filter, such as PDF.
- `filter` (boolean): Let the engine collapse near-duplicate results (default true, mostly affects Google).
- `format` (string): json (default) for structured results; markdown, text or ndjson for compact plain text.
- `lang` (string): Language code, such as EN or de.
- `limit` (integer): Maximum result count, 1-100. Keep 10 when paging with start.
- `merge` (boolean): true (default): one list from every engine that succeeded. false: keep only the first engine that returned results.
- `minRunes` (integer): Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor.
- `mode` (string): balanced (default): all engines in parallel, results merged. any: engines in your order until one succeeds; on Cloud slow attempts can overlap. fast: the healthiest, fastest engine. Only any and fast…
- `region` (string): Market or location hint, such as US, DE, en-GB, Berlin, or a Yandex lr id.
- `site` (string): Domain filter, such as example.com.
- `start` (integer): Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400.
- `text` (string): Search query text. At least one of text, site, or file should be provided.

### `fast_search` (~616 tokens)

Fast Search

Return one web result set as fast as possible, from the engine with the best recent health and latency. Use it for quick lookups where the engine doesn't matter; use search to pick the engine, or any_search to set a fallback order. Returns JSON: results (rank, title, url, snippet, domain, engine), pagination (has_more, next_start) and meta (request_id, took_ms, engines_failed). Cloud: 1 credit. Errors return isError with status, error code and retry_after. On 429 or 503 wait retry_after; if an engine is blocked (CAPTCHA, 502/503), try another engine. Unsupported parameters return 400 and are not charged.

Input parameters:

- `date` (string): Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge.
- `dedupe` (boolean): Drop duplicate URLs across engines (default true).
- `engines` (array): Engines to query, in priority order for any mode. Omit to use all available engines.
- `extract`: Enrich the top web results with cleaned page content. Boolean or integer depth: false/0 off, true/1 top result, N top N (1-5).
- `extractMode` (string): auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages.
- `features` (boolean): Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them.
- `file` (string): File extension filter, such as PDF.
- `filter` (boolean): Let the engine collapse near-duplicate results (default true, mostly affects Google).
- `format` (string): json (default) for structured results; markdown, text or ndjson for compact plain text.
- `lang` (string): Language code, such as EN or de.
- `limit` (integer): Maximum result count, 1-100. Keep 10 when paging with start.
- `merge` (boolean): true (default): one list from every engine that succeeded. false: keep only the first engine that returned results.
- `minRunes` (integer): Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor.
- `region` (string): Market or location hint, such as US, DE, en-GB, Berlin, or a Yandex lr id.
- `site` (string): Domain filter, such as example.com.
- `start` (integer): Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400.
- `text` (string): Search query text. At least one of text, site, or file should be provided.

### `any_search` (~637 tokens)

Any Search

Try engines one at a time in the order you give and return the first result set that succeeds, e.g. engines [google, bing, duckduckgo]. Use it as a resilient default when you prefer one engine but need a fallback; use fast_search when the order doesn't matter. On Cloud a slow attempt can overlap with the next one. Returns JSON: results (rank, title, url, snippet, domain, engine), pagination (has_more, next_start) and meta (request_id, took_ms, engines_failed). Cloud: 1 credit. Errors return isError with status, error code and retry_after. On 429 or 503 wait retry_after; if an engine is blocked (CAPTCHA, 502/503), try another engine. Unsupported parameters return 400 and are not charged.

Input parameters:

- `date` (string): Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge.
- `dedupe` (boolean): Drop duplicate URLs across engines (default true).
- `engines` (array): Engines to query, in priority order for any mode. Omit to use all available engines.
- `extract`: Enrich the top web results with cleaned page content. Boolean or integer depth: false/0 off, true/1 top result, N top N (1-5).
- `extractMode` (string): auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages.
- `features` (boolean): Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them.
- `file` (string): File extension filter, such as PDF.
- `filter` (boolean): Let the engine collapse near-duplicate results (default true, mostly affects Google).
- `format` (string): json (default) for structured results; markdown, text or ndjson for compact plain text.
- `lang` (string): Language code, such as EN or de.
- `limit` (integer): Maximum result count, 1-100. Keep 10 when paging with start.
- `merge` (boolean): true (default): one list from every engine that succeeded. false: keep only the first engine that returned results.
- `minRunes` (integer): Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor.
- `region` (string): Market or location hint, such as US, DE, en-GB, Berlin, or a Yandex lr id.
- `site` (string): Domain filter, such as example.com.
- `start` (integer): Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400.
- `text` (string): Search query text. At least one of text, site, or file should be provided.

### `image_search` (~425 tokens)

Image Search

Search images on one engine you choose. Returns JSON results (rank, title, image url/thumbnail/width/height, source page_url and domain, engine) and pagination. Use mega_image to combine several engines. Cloud: cost scales with the number of returned images. Errors return isError with status, error code and retry_after. On 429 or 503 wait retry_after; if an engine is blocked (CAPTCHA, 502/503), try another engine. Unsupported parameters return 400 and are not charged.

Input parameters:

- `date` (string): Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge.
- `engine` (string, required): Engine to query: google, bing, yandex, baidu, duckduckgo (or duck), ecosia.
- `features` (boolean): Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them.
- `file` (string): File extension filter, such as PDF.
- `filter` (boolean): Let the engine collapse near-duplicate results (default true, mostly affects Google).
- `format` (string): json (default) for structured results; markdown, text or ndjson for compact plain text.
- `lang` (string): Language code, such as EN or de.
- `limit` (integer): Maximum result count, 1-100. Keep 10 when paging with start.
- `region` (string): Market or location hint, such as US, DE, en-GB, Berlin, or a Yandex lr id.
- `site` (string): Domain filter, such as example.com.
- `start` (integer): Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400.
- `text` (string): Search query text. At least one of text, site, or file should be provided.

### `mega_image` (~559 tokens)

Mega Image Search

Search images on several engines and merge them into one list (mode balanced, the default); each image keeps its source engine and rank, and duplicates are dropped. Use it when one engine gives too few or too similar images; use image_search for a single engine. Balanced mode serves only the first page; mode any or fast returns the first engine that succeeds. Output fields match image_search. Cloud: any/fast cost 1 credit, balanced depends on engines and image volume. Errors return isError with status, error code and retry_after. On 429 or 503 wait retry_after; if an engine is blocked (CAPTCHA, 502/503), try another engine. Unsupported parameters return 400 and are not charged.

Input parameters:

- `date` (string): Published-date range YYYYMMDD..YYYYMMDD. Cloud web search supports Google and Ecosia; unsupported filters return 400 without charge.
- `dedupe` (boolean): Drop duplicate URLs across engines (default true).
- `engines` (array): Engines to query, in priority order for any mode. Omit to use all available engines.
- `features` (boolean): Add serp_features (AI summary, answer box, People Also Ask, related searches) when the engine shows them.
- `file` (string): File extension filter, such as PDF.
- `filter` (boolean): Let the engine collapse near-duplicate results (default true, mostly affects Google).
- `format` (string): json (default) for structured results; markdown, text or ndjson for compact plain text.
- `lang` (string): Language code, such as EN or de.
- `limit` (integer): Maximum result count, 1-100. Keep 10 when paging with start.
- `merge` (boolean): true (default): one list from every engine that succeeded. false: keep only the first engine that returned results.
- `mode` (string): balanced (default): all engines in parallel, results merged. any: engines in your order until one succeeds; on Cloud slow attempts can overlap. fast: the healthiest, fastest engine. Only any and fast…
- `region` (string): Market or location hint, such as US, DE, en-GB, Berlin, or a Yandex lr id.
- `site` (string): Domain filter, such as example.com.
- `start` (integer): Result offset. On Cloud, Google/Bing/Yandex use multiples of 10, Baidu supports early pages, Ecosia any offset, DuckDuckGo none. Balanced mega requires 0; unsupported offsets return 400.
- `text` (string): Search query text. At least one of text, site, or file should be provided.

### `get_usage` (~88 tokens)

Get Usage

Show the OpenSERP Cloud account behind OPENSERP_API_KEY: account (plan, credits_remaining) and lastResponse (request_id, credits used, engine) for the previous tool call in this session. Read-only and free. Use it to check the balance before a large batch or to see what a call cost. Self-hosted mode has no credits, so it returns an error there.

### `list_engines` (~91 tokens)

List Engines

List the engines this OpenSERP backend can use and whether they work right now. Self-hosted: each engine with initialized and circuit_state (open means it is failing, skip it). Cloud: per-engine web/image support and status (operational, loaded, down) with latency. Read-only and free. Call it when searches keep failing, then pick a healthy engine for search or the engines list.

### `extract` (~415 tokens)

Extract URL

Fetch one URL and return its main content as Markdown, e.g. to read a page found by search. Returns JSON: url, title, description, markdown, text, headings, links (first 50), lang and meta.mode_used. Content over maxChars (default 20000) is cut and the result gets truncated: true. For two or more pages use batch_extract. Pages behind logins or bot walls can fail or come back thin; try mode rendered or another source. Cloud: 1 credit for a fast fetch, 3 when the page needs a browser, +1 with region; failed and empty pages are free. Errors return isError with status and error code.

Input parameters:

- `clean` (boolean): Article-only extraction (default true). Set false for landing pages, docs indexes and dashboards, where content sits in navigation or feature blocks.
- `format` (string): json (default) for the structured fields; markdown or text for the page content as plain text.
- `lang` (string): Preferred page language, sent as Accept-Language, such as en or de.
- `maxChars` (integer): Max characters of page content (default 20000). Longer pages are cut and marked truncated.
- `minRunes` (integer): Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor.
- `mode` (string): auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages.
- `region` (string): Two-letter country code to extract from, e.g. US or DE, for geo-fenced or localized pages. On Cloud this adds 1 credit per extracted URL.
- `url` (string, required): Absolute URL to fetch and extract.
- `useLlmsTxt` (boolean): For a site root URL, return the site's /llms-full.txt or /llms.txt instead when it has one.

### `batch_extract` (~371 tokens)

Extract several URLs

Extract LLM-ready content from up to 20 URLs in one request. Prefer this over repeated extract calls when grounding an answer in several pages: it is one round-trip, and a URL that fails returns an item with an error instead of failing the batch. Returns results (url, page_content as Markdown, error when that URL failed; metadata with title, mode_used and, when cut, truncated and total_chars) and meta (requested, succeeded, failed). Cloud: billed per URL like extract; failed and empty URLs are free.

Input parameters:

- `clean` (boolean): Article-only extraction (default true). Set false for landing pages, docs indexes and dashboards, where content sits in navigation or feature blocks.
- `lang` (string): Preferred page language, sent as Accept-Language, such as en or de.
- `maxChars` (integer): Max characters of content per URL. Default splits 40000 across the batch (at least 2000 each). Longer pages are cut and marked metadata.truncated.
- `minRunes` (integer): Minimum text length (in runes) before auto mode escalates to a browser render. 0 uses the built-in floor.
- `mode` (string): auto (default): fast HTTP fetch, browser render if the page comes back empty. fast: HTTP only. rendered: always a browser, for JavaScript-heavy pages.
- `region` (string): Two-letter country code applied to every URL, e.g. US or DE. On Cloud this adds 1 credit per extracted URL.
- `urls` (array, required): Absolute URLs to fetch and extract. Duplicates are dropped.
- `useLlmsTxt` (boolean): For a site root URL, return the site's /llms-full.txt or /llms.txt instead when it has one.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/org-openserp-mcp/openserp-mcp#diagnostics

## Score history

- 2026-11-05: 82
- 2026-11-04: 82
- 2026-11-03: 81
- 2026-11-02: 81
- 2026-11-01: 80
- 2026-10-31: 80
- 2026-10-30: 79
- 2026-10-29: 79
- 2026-10-28: 78
- 2026-10-27: 63
- 2026-10-26: 62

## Common questions

### What is the OpenSERP MCP server?

OpenSERP is an MCP server listed in the public MCP registry as org.openserp/mcp. Search Google, Bing, Yandex, Baidu, DuckDuckGo and Ecosia with original ranks, plus page extraction. This page covers its npm package (@openserp/mcp).

### Is the OpenSERP MCP server safe to use?

OpenSERP scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the OpenSERP MCP server expose?

OpenSERP exposes 10 tools: search, mega_search, fast_search, any_search, image_search, and 5 more. Their descriptions and schemas cost roughly 4,515 tokens of context every time the server is loaded.

### Is the OpenSERP MCP server still maintained?

OpenSERP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the OpenSERP MCP server under?

OpenSERP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@openserp/mcp
- Socket report: https://socket.dev/npm/package/@openserp/mcp
- Repository: https://github.com/openserpapi/mcp
- Website: https://openserp.org/
- Changelog RSS feed: https://verifymcp.io/servers/org-openserp-mcp/openserp-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/org-openserp-mcp/openserp-mcp.json
- HTML version of this page: https://verifymcp.io/servers/org-openserp-mcp/openserp-mcp
