Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

com.opensolr/opensolr-mcp

PYPI · OPENSOLR-MCP

Managed Apache Solr for agents: hybrid BM25+kNN search, server-side embeddings, RAG answers

Available components

−17 this week 61 Trust /100

Last scanned (5 hours ago)

Scores higher than 58% of PyPI servers

Category Search and Retrieval

Trust breakdown (7 categories)

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. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 31 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability58
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2827 tokens (~176/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
  • Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "opensolr_delete_documents" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 −14
    • Malware scan: pass → unverified ▼ security
  • 3 Nov 26 +1

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

  • 2 Nov 26 −4
    • Stability: pass → 0.77 functional
  • 29 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
    • Package version: 0.5.0 → 0.8.1 functional
  • 28 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 27 Oct 26 +1
    • Stability: 0.97 → pass security
  • 26 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 25 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/opensolr-mcp@0.8.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Dependencies 31 packages
Packages resolved 31
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 16 exposed · ~2,635 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
opensolr_add_documents ~161

Index plain-text documents via the Opensolr Data Ingestion API. Ingestion is ASYNC: embeddings, sentiment, and all derived fields are computed server-side and documents become searchable within about a minute (progress is visible in the Opensolr Control Panel). With wait=true (default) this blocks until the job completes. Metadata keys become filterable meta_* fields; metadata "uri" (a real URL) is used as the document identity — the Solr id is md5(uri). Returns job info and the resulting Solr document ids.

NameTypeReqDescription
ids–––
indexstringyes–
metadatas–––
textsarrayyes–
waitboolean––
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_ai_answer ~354

Ask a question and get a grounded RAG answer generated ONLY from the content already indexed in the given Opensolr index. Retrieval runs through the platform's tuned hybrid pipeline (the index's saved Search Tuning applies automatically) — the top rag_docs hits (first rag_words words of text each) become the LLM context, the same pipeline as the hosted search UI. filter_query optionally narrows retrieval with a raw Solr fq expression; instruction optionally replaces the default prompt (e.g. "Answer in German", "Extract a list of people"); tuning optionally overrides retrieval knobs per call. That list is the whole set, not a sample — an abbreviated one reads as everything that is supported, and freshness_boost was invisible to callers because of it: fw_title, fw_description, fw_uri, fw_text, fw_text_t, lexical_weight, vector_weight, vector_topk, search_mode (union / keywords_required / meaning_required / intersection), quality_boost, min_score, freshness_boost, fresh_bias, lexical_norm_k, mm (flexible / balanced / strict or raw Solr mm syntax). freshness_boost and fresh_bias are different knobs despite the names: the first is a hard window in DAYS that filters older documents out, the second only re-orders, multiplying each score by a recency curve on creation_date so recent documents win ties while nothing becomes unreachable.

NameTypeReqDescription
filter_query–––
indexstringyes–
instruction–––
querystringyes–
rag_docsinteger––
rag_wordsinteger––
tuning–––
NameTypeReqDescription
resultstringyes–

No examples provided.

opensolr_apply_schema ~115

Install the Opensolr vector schema on an index of a vector region, so Data Ingestion, vector and hybrid search and PDF pages all work on it. It replaces the index configuration. An index that already holds documents needs force=true: those documents keep the fields they were written with and must be sent again. An index outside the vector regions cannot take it (the answer says where to create one). Returns the new check.

NameTypeReqDescription
forceboolean––
indexstringyes–
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_check_schema ~167

Whether an index is ready for every Opensolr tool, and exactly why not. Answers "ready", "capabilities" (ingestion, vector_search, pdf_pages, keyword_search), the server and its Solr version, whether the server is in a vector region, the fields and types that are missing or different from the Opensolr vector schema, "problems" (sentences) and "fix": "apply_schema" (run opensolr_apply_schema), "new_index" (create one with opensolr_create_index in a region of opensolr_vector_regions) or "none". The other tools run this check once per index on their own; call it to see the details.

NameTypeReqDescription
indexstringyes–
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_create_index ~93

Create a new vector-enabled Opensolr index in a vector region. location: an environment id from opensolr_vector_regions, or a short name matched against that live list by environment id or country (e.g. "us", "de"). Additional dedicated regions can be deployed on request (support@opensolr.com).

NameTypeReqDescription
indexstringyes–
locationstring––
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_delete_documents ~68

Delete documents by ids (Solr ids or your original ids) or by a raw Solr query, e.g. 'meta_category:"drafts"' or '+id:"abc123"'.

NameTypeReqDescription
ids–––
indexstringyes–
query–––
NameTypeReqDescription
resultstringyes–

No examples provided.

opensolr_describe_image ~105

What a picture shows and what is written on it: "caption" (a sentence about what it depicts), "text" (the text read off it by OCR, empty if none), "labels" (the things in it) and "codes" (barcodes / QR codes). index is the Opensolr index the reading is counted on. Nothing is stored.

NameTypeReqDescription
image_pathstringyes–
indexstringyes–
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_extract_text ~252

Read local files on Opensolr without indexing them: their text, the text in their pictures (OCR, 100+ languages), a PDF page by page, scanned pages and picture files (JPG, PNG, TIFF...) included. path is a file or a folder (pattern filters the files of a folder, e.g. "*.pdf"; recursive walks its sub-folders). index is the Opensolr index the work is counted on (pictures read: 0.5 AI request each; a file read before is free). Files still being read after wait_seconds come back with state "queued"/"processing": call again with the same path to get them — they are not sent twice. Each file: path, state, mime and its "pages" (a PDF: page, text, is_ocr, lang) or "text"; "error" when it could not be read. The whole answer is cut at max_chars characters.

NameTypeReqDescription
indexstringyes–
max_charsinteger––
pathstringyes–
patternstring––
recursiveboolean––
wait_secondsinteger––
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_index_files ~275

Index local files into an Opensolr index: one file or a whole folder. Each file is read on Opensolr — its text, the text in its pictures (OCR), the pictures without text described — and a PDF is indexed ONE DOCUMENT PER PAGE, so a search finds the page that answers it (results carry the page number and a link to it). Word, RTF, OpenDocument, text, HTML and picture files (scans) are one document each. pattern filters the files of a folder (e.g. "*.pdf"), recursive walks its sub-folders, metadata is added to every document as filterable meta_* fields. Sending the same files again replaces them. Files still being read after wait_seconds come back under "pending": call again with the same path to index them (the bytes are not sent twice). Returns "documents" (path, source, uri, id), "pending", "failed" and "jobs" (Data Ingestion job ids, see opensolr_ingest_status); documents become searchable about a minute after their job runs.

NameTypeReqDescription
indexstringyes–
metadata–––
pathstringyes–
patternstring––
recursiveboolean––
wait_secondsinteger––
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_index_info ~40

Get connection details for an index: Solr URL, version, environment. (Credentials are intentionally not returned.)

NameTypeReqDescription
indexstringyes–
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_ingest_status ~49

Status of a Data Ingestion job (state, processed/success/failed doc counts). Also visible in the Opensolr Control Panel.

NameTypeReqDescription
job_idstringyes–
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_list_indexes ~23

List all search indexes in the connected Opensolr account.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultarrayyes–

No examples provided.

opensolr_read_document ~160

Read one indexed document in full — search results carry only an excerpt. document is the "document_id" or "id" of a search result, the id it was sent with, or its URL. A PDF indexed page by page comes back as its pages in order (page_from to page_to, default the first 50; "pages_indexed" tells how many it has) — read the next ones with page_from. Any other document comes back as one text. The answer is cut at max_chars characters ("truncated": true).

NameTypeReqDescription
documentstringyes–
indexstringyes–
max_charsinteger––
page_frominteger––
page_to–––
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_search ~392

Search an Opensolr index and return the k most relevant documents. search_mode: "hybrid" (default — BM25 + semantic kNN fused per document), "semantic" (pure kNN), or "lexical" (pure keyword edismax — no embedding call, zero AI quota, works on ANY index including non-vector ones). For hybrid: mode is union / keywords_required / meaning_required / intersection, alpha balances semantic (0) vs lexical (1). filter_query accepts a raw Solr fq expression, e.g. 'meta_category:"docs"'. fresh_bias biases the ranking toward recent documents by multiplying each score by a recency curve on creation_date. It re-orders and never filters: the hit count is unchanged, nothing old becomes unreachable, and a document with no creation_date is simply left unboosted. Works in all three search modes. Off by default — turn it on when newer should beat older on a tie. date_from / date_to (YYYY-MM-DD, both included, either may be left out) keep only documents dated in that period (creation_date) — use them when the question names a period. A PDF indexed page by page is one result per PDF (group_pages, on by default): its best page, with "uri", "page", "page_url" (opens the PDF at that page), "document_id" (for opensolr_read_document) and "more_pages", its other matching pages.

NameTypeReqDescription
alphanumber––
date_from–––
date_to–––
filter_query–––
fresh_biasboolean––
group_pagesboolean––
indexstringyes–
kinteger––
modestring––
querystringyes–
search_modestring––
NameTypeReqDescription
resultarrayyes–

No examples provided.

opensolr_search_by_image ~329

Search an Opensolr index with a PHOTO instead of a text query. The image at image_path is read three ways by the Opensolr image engine — visual labels (what it depicts), OCR text (words printed on it), and any barcode / QR code — and turned into a text query that runs through the normal search. No image vector is stored; the picture simply becomes words. using selects which reading drives the search: "auto" the engine's chosen text (OCR text when the picture is mostly text, otherwise the visual labels) — the default, "meaning" the visual labels (what the picture depicts), "text" only the OCR text read off the picture (empty if none), "code" the first barcode / QR code, matched as an exact keyword. search_mode / mode / alpha / fresh_bias / filter_query / date_from / date_to / group_pages behave exactly as in opensolr_search. Returns {"read": {text, mode, labels, codes}, "results": [...]} so the caller sees both what the picture was read as and the matching documents.

NameTypeReqDescription
alphanumber––
date_from–––
date_to–––
filter_query–––
fresh_biasboolean––
group_pagesboolean––
image_pathstringyes–
indexstringyes–
kinteger––
modestring––
search_modestring––
usingstring––
NameTypeReqDescription
resultobjectyes–

No examples provided.

opensolr_vector_regions ~52

List the vector-enabled Opensolr environments currently available (the servers with the Opensolr web crawler that are up, any Solr version: dense vectors, the hybrid query parser and Data Ingestion).

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultarrayyes–

No examples provided.

Install

How do I install the com.opensolr/opensolr-mcp server?

com.opensolr/opensolr-mcp runs locally as a PyPI package, launched with uvx opensolr-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · opensolr-mcp

# add to Claude Code
claude mcp add com-opensolr-opensolr-mcp -- uvx opensolr-mcp
Common questions

What is the com.opensolr/opensolr-mcp server?

com.opensolr/opensolr-mcp is listed in the public MCP registry as com.opensolr/opensolr-mcp. Managed Apache Solr for agents: hybrid BM25+kNN search, server-side embeddings, RAG answers. This page covers its PyPI package (opensolr-mcp).

Is the com.opensolr/opensolr-mcp server safe to use?

com.opensolr/opensolr-mcp scores 61 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. 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 com.opensolr/opensolr-mcp server expose?

com.opensolr/opensolr-mcp exposes 16 tools: opensolr_search, opensolr_search_by_image, opensolr_ai_answer, opensolr_read_document, opensolr_extract_text, and 11 more. Their descriptions and schemas cost roughly 2,635 tokens of context every time the server is loaded.

Is the com.opensolr/opensolr-mcp server still maintained?

com.opensolr/opensolr-mcp 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 com.opensolr/opensolr-mcp server under?

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