Skip to main content
Glama

opensolr-mcp

mcp-name: com.opensolr/opensolr-mcp

MCP (Model Context Protocol) server for Opensolr — gives any AI agent managed Apache Solr search as tools: hybrid (BM25 + kNN) retrieval, server-side GPU embeddings, document indexing, and grounded RAG answers.

See it live (real news index, hybrid + AI answer): https://search.opensolr.com/news__dense?q=how+am+I+supposed+to+save+money%3F

No embedding model to configure. No vector database to run. One API key.

Tools

Tool

What it does

opensolr_search

Hybrid (keyword + semantic) or pure semantic search, with Solr filters

opensolr_ai_answer

Grounded RAG answer: top hybrid hits become the LLM context — same pipeline as the hosted search UI

opensolr_add_documents

Index plain text + metadata (embedded server-side)

opensolr_delete_documents

Remove documents by id

opensolr_list_indexes / opensolr_index_info

Inspect the account's indexes

opensolr_create_index

Provision a vector-enabled index (us, de, fi)

opensolr_vector_regions

Live list of vector-enabled regions

Related MCP server: RAG MCP Server

Setup

Get a free Opensolr account (15-day trial, no card) at opensolr.com/register and copy your API key from Account.

Try it without an account

There is a public demo account. Point the package at it and everything in this README works immediately, with no signup:

export OPENSOLR_EMAIL=mcp@opensolr.com
export OPENSOLR_API_KEY=420b8b23e7b12dc8ab838932145a5065

mcp_demo_d1__dense is already loaded with 300 news articles, so search, filtering and grounded answers work the moment you connect. You also get the full write path: create your own index on the account, ingest into it, query it, delete it.

Know what you are working with:

  • Anything you create there is deleted after 3 days. Automatically, without warning or export. That includes indexes you created and every document in them.

  • The account is shared with everyone reading this. Your index is visible to them, they can change or delete it, and you can do the same to theirs. Never put anything real, private or client-owned in it.

  • The limits are per index, and deliberately small. 200 MB of bandwidth and 50 MB of disk per index. Bandwidth is the one you will hit first: it covers a demo, a tutorial and a proof of concept, and it will not carry an application.

When you want an index that is private, yours and still there next week, get your own key — free 15-day trial, no card — and change the two variables above. Nothing else in your code changes.

Claude Desktop / Claude Code

{
  "mcpServers": {
    "opensolr": {
      "command": "uvx",
      "args": ["opensolr-mcp"],
      "env": {
        "OPENSOLR_EMAIL": "you@example.com",
        "OPENSOLR_API_KEY": "YOUR_OPENSOLR_API_KEY"
      }
    }
  }
}

Cursor / Windsurf / any MCP client

Same shape — stdio transport, command uvx opensolr-mcp (or pipx run opensolr-mcp), with OPENSOLR_EMAIL and OPENSOLR_API_KEY in env.

Example agent session

You: Index our FAQ answers, then find everything about refunds.

The agent calls opensolr_add_documents(index="faq__dense", texts=[...]), then opensolr_search(index="faq__dense", query="refund policy", hybrid=True) — BM25 catches the exact word "refund", kNN catches "giving customers their money back", and the scores fuse per document.

Notes

  • Vector-enabled indexes run on Opensolr's Solr 9.x environments — currently us (Chicago), de (Germany), fi (Finland), fetched live via opensolr_vector_regions. Additional dedicated regions can be deployed on request (paid add-on): support@opensolr.com.

  • Every index is also plain Apache Solr with the native /select API — nothing is locked behind the tools.

  • Python sibling for LangChain: langchain-opensolr · Product page: opensolr.com/langchain

How writing works (Data Ingestion API)

Writes go through Opensolr's Data Ingestion API — the same pipeline the Drupal and WordPress connectors use. It is asynchronous: documents are queued, then embeddings, sentiment, language and all crawler-identical derived fields are computed server-side, and documents become searchable within about a minute. Progress is visible in Control Panel → Data Ingestion — a per-job status board (queued / processing / completed / failed, with processed / success / failed document counts per job) — and via the ingest_status API. Each document's identity is its uri (the Solr id is md5(uri)): pass a real URL in metadata ({"uri": "https://..."}), or a deterministic one is synthesized from your id. Re-submitting the same uri updates the document. Pass {"rtf": True, "uri": "https://.../file.pdf"} and the server extracts the text from PDF/DOCX/XLSX for you.

Lexical-only mode

Don't need vectors? Pure keyword search skips the embedding call entirely — zero AI quota, and it works on any Opensolr index, including non-vector ones and older Solr versions.

Your index schema

Documents follow the Opensolr document model (title, description, text, meta_* custom fields). The whole schema, every field and every type suffix, is explained in the Index Schema Reference. To see your own copy: Control Panel → click your index → Configuration → Edit File → schema.xml. Prefer zero-effort data entry? Configure the Web Crawler in the Control Panel (Index Tools → WebCrawler): add your site URL, validate it, and Opensolr indexes the whole site for you.

Search tuning

Retrieval (search and RAG grounding) runs through the platform's tuned pipeline: global defaults → your index's saved Search Tuning (Control Panel → Index Settings → Search Tuning: semantic↔lexical balance, field weights, minimum match, search mode, vector candidate pool, content quality boost) → optional per-call overrides via tuning:

tuning={"search_mode": "keywords_required", "fw_title": 0.2,
        "mm": "strict", "vector_topk": 500, "quality_boost": 0.3}

Defaults match the platform's PHP configuration exactly — customize in the Control Panel once, or per call from code.

Fresh Results Bias

Rank newer documents higher without hiding anything older. Every score is multiplied by a recency curve on creation_date — full weight for a document published today, about half after a year:

store.similarity_search_with_score("solar inverter warranty", fresh_bias=True)
client.hybrid_search(index, query, fresh_bias=True)
client.ai_answer(index, question, tuning={"fresh_bias": 1})

It re-orders and never filters: the hit count is identical either way, nothing old becomes unreachable, and a document with no creation_date simply keeps its place instead of being pushed to the bottom. It applies to all three retrieval shapes — vector-only, keyword-only and the fused hybrid ranking — because the boost wraps the final score rather than one half of it. Off by default.

This is the same control visitors get as the Fresh toggle beside the sort options on the hosted Opensolr search page, so a query behaves identically here and there.

fresh_bias and freshness_boost are two different knobs and the names invite confusion. freshness_boost is a hard window in days — anything older is filtered out and the hit count drops. fresh_bias filters nothing.

How it's tested

Every release is validated against live Opensolr infrastructure — no mocks:

  • Unit tests (offline): location aliases, filter→fq mapping, query building, escaping.

  • End-to-end suite: the full write path through the async Data Ingestion queue (queued → server-side enrichment → searchable), semantic / hybrid / lexical retrieval, metadata round-trip, filters, id round-trip (your ids and the Solr md5(uri) ids), deletes by id and by query.

  • Real-corpus validation: searches run against a 340-document replica of opensolr.com's own production search index. Verified: pure-semantic hits with zero keyword overlap ("how do I get my data back after a disaster" → backup & restore docs), cross-lingual queries (Romanian query → English content), exact-term surfacing in hybrid mode, all four hybrid modes, and the full alpha range 0 → 1.

  • PDF ingestion: a real PDF ingested via rtf:true — server-side text extraction (13k+ chars), automatic content-type detection, then retrieved with a purely semantic query against its contents.

The tools are exercised live (search modes, ingestion with wait, status, deletes, RAG answers) before every release. RAG grounding is verified end-to-end: a question answerable only from the ingested PDF returns the correct answer sourced from the PDF's extracted text.

MIT license.

Available Tools

9 tools
opensolr_add_documentsA

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
waitNo
indexYes
textsYes
metadatasNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral disclosure. It reveals the async nature, server-side derived fields, ~1-minute visibility delay, wait semantics, metadata prefixing, URI-based identity with md5(uri), and that job info and Solr ids are returned. This is rich, honest context far beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three lean sentences front-load the core action and then pack high-value behavioral details without fluff. Every sentence earns its place, covering asynchronous execution, identity, metadata mapping, and return value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderately complex ingestion tool with no annotations and low schema detail, the description is unusually complete: async behavior, wait semantics, metadata transformation, identity strategy, and return values are all covered. The remaining gaps are minor-ish: the optional 'ids' parameter and prerequisites like the index needing to exist beforehand.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all 5 parameters. It adds real meaning for wait (default true, blocks), metadatas (prefix meta_* fields), and uri (identity/Solr id). However, it leaves 'ids' unexplained and does not explicitly tie 'texts' and 'index' to their expected formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Index plain-text documents via the Opensolr Data Ingestion API.' It clearly identifies the operation and distinguishes it from siblings like search, list, delete, and ingest status by action and purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied by the operation ('Index...documents') and the detailed wait/async behavior, but it never explicitly states when to choose this over alternatives. It also fails to mention prerequisites such as an existing index or the option of using opensolr_ingest_status to poll progress when wait=false.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opensolr_ai_answerA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
queryYes
tuningNo
rag_docsNo
rag_wordsNo
instructionNo
filter_queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the full burden and does so thoroughly: it explains that retrieval runs through a tuned hybrid pipeline, saved Search Tuning applies automatically, the top rag_docs hits are used as context, and it details tuning knobs including the subtle distinction between freshness_boost and fresh_bias. This goes well beyond a bare function statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and uses clear separators for parameter explanations. The exhaustive tuning list is justified because the tuning schema is a generic object, but the meta sentence 'That list is the whole set, not a sample...' adds unnecessary narrative and could be trimmed without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity — 7 parameters, no annotations, and a generic tuning object — the description covers all essential operational context: what the answer is grounded in, how retrieval works, how parameters affect behavior, and which tuning options are supported. Since an output schema exists, omission of return-value details is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all 7 parameters. It explains query as a question, index as the target index, rag_docs and rag_words as retrieval context sizing, filter_query as a raw Solr fq expression, instruction as a prompt replacement, and tuning as an override mechanism with the complete list of supported knobs. This is strong compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: 'Ask a question and get a grounded RAG answer generated ONLY from the content already indexed in the given Opensolr index.' It identifies the tool's resource (the index) and distinguishes it from raw search or management tools by emphasizing the RAG answer and grounded retrieval pipeline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: for grounded question answering over already-indexed Opensolr content, with the same retrieval pipeline as the hosted search UI. It does not explicitly contrast this with sibling tools like opensolr_search or describe when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opensolr_create_indexB

Create a new vector-enabled Opensolr index. location: us, de, fi, or any environment id from opensolr_vector_regions. Additional dedicated regions can be deployed on request (support@opensolr.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
locationNous

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does mention that the index is 'vector-enabled' and describes location options plus the ability to request additional regions, which is useful. But it does not disclose whether creation is synchronous, what happens if an index with the same name already exists, whether it is irreversible, or any permission/authorization requirements. These are significant gaps for a mutation operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no wasted words. It front-loads the core operation, then supplies parameter context, and ends with an actionable support note. Every sentence adds value and there is no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description lacks important context for a create operation: it does not mention whether the operation is idempotent, what happens on duplicate index names, whether creation is immediate or asynchronous, or how the location affects data residency. It also does not specify any prerequisites or error scenarios. Given the tool's simplicity and absence of annotations, the description is not fully complete for safe autonomous invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the absence of parameter documentation. It explicitly explains the location parameter by listing valid regions and pointing to opensolr_vector_regions, which is helpful. However, it never explains the 'index' parameter—its format, allowed characters, uniqueness constraints, or whether it is a display name or an identifier. The description only partially compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Create a new vector-enabled Opensolr index.' This clearly states the tool's purpose and differentiates it from sibling tools such as opensolr_list_indexes, opensolr_search, and opensolr_add_documents. The 'vector-enabled' qualifier adds further specificity without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the verb 'Create' and the resource 'index,' making it clear this is for creating an index rather than listing, deleting, or searching. However, the description provides no explicit 'use this when...' guidance, no mention of alternatives, and no conditions under which a different tool should be chosen. The location notes give context but not operational selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opensolr_delete_documentsA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo
indexYes
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the behavioral disclosure burden. It does reveal that deletion can be performed by IDs or a raw query, and gives concrete query examples. However, it omits important traits such as irreversibility, commit behavior, permission needs, and the effect of supplying both `ids` and `query`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence front-loads the action and immediately provides selection modes with examples. Every word earns its place; there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema likely covers return values, so the description need not detail those. For a destructive operation with no annotations, a note on permanence or at least one expected ID/query requirement would improve completeness. Otherwise the core deletion modes are adequately captured for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds useful meaning to `ids` by clarifying 'Solr ids or your original ids' and gives raw query examples for `query`. Yet it does not describe the required `index` parameter nor whether `ids` and `query` are mutually exclusive or can be combined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Delete documents') and the two selection modes (IDs or raw query). This clearly distinguishes it from sibling tools like opensolr_search, opensolr_add_documentss, and opensolr_list_indexes, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to choose this tool over alternatives, nor any exclusions or prerequisites. The intended usage is implied by the name and description, but no explicit when/when-not context exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opensolr_index_infoB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly states that credentials are intentionally not returned, which is a useful behavioral disclosure beyond the raw schema. With no annotations provided, the description carries the full burden, and this single caveat is helpful but limited. It does not disclose whether the operation requires special permissions, whether it makes network calls to Solr, or what happens if the index does not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no filler. The primary purpose and key detail (credentials not returned) are front-loaded, and every word contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a simple single-parameter interface and an output schema, so the description does not need to detail return values. The description conveys the tool's purpose and a notable security caveat. However, the lack of parameter format explanation and the absence of any usage guidance relative to sibling tools leaves an agent with some uncertainty about how to invoke it correctly in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter, 'index', but its description coverage is 0%, so the schema provides no meaning beyond the parameter name. The tool description also does not explain what format the index parameter should take (e.g., index name, ID, or URL). The description's mention of 'an index' adds minimal context, but the parameter semantics remain largely undocumented, leaving the agent to guess the parameter format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Get') and resource ('connection details for an index'), including the specific details returned: Solr URL, version, environment. It distinguishes itself from sibling tools that delete, search, create, or add documents, though it does not explicitly name an alternative for index listing or management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving connection metadata for a single index, and the sibling list shows this is not a search or mutation tool. However, there is no explicit guidance on when to use this over opensolr_list_indexes, which likely provides index-level information while this provides connection details. The usage context is mostly implied rather than directly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opensolr_ingest_statusB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It does convey an informational, non-mutating operation through 'status' and document counts, and adds a reference to the Control Panel. However, it does not explicitly state read-only behavior, handling of unknown job IDs, or whether the status can be polled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with a parenthetical that efficiently enumerates the returned status fields. The Control Panel note adds minor context without padding, and there is no redundant or filler wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is low-complexity and has an output schema, so return-value details are covered externally. However, the description omits usage context and leaves the sole parameter underdescribed, forcing an agent to infer how to acquire a job_id. It is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema only specifies job_id as a required string with no description, and schema description coverage is 0%. The description does not define job_id, its format, or where to obtain it; it only implicitly connects it to a Data Ingestion job. This is a significant gap at this coverage level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the status of a Data Ingestion job and lists the specific status fields (state, processed/success/failed doc counts). This differentiates it from index-management siblings by focusing on ingestion jobs, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives, such as after starting an ingestion job with opensolr_add_documents or when checking job completion. The note about the Control Panel is informational, not usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opensolr_list_indexesA

List all search indexes in the connected Opensolr account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden and does state a read-only 'List' operation, which makes side effects unlikely. However, it adds no further context such as pagination, limits, authentication expectations, or whether the list is exhaustive, though the output schema may cover return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that front-loads the verb and resource with no filler. Every word adds meaning, including the 'connected account' scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, zero parameters, and the presence of an output schema, the description is fully adequate. An agent can confidently invoke this tool to list all indexes without missing critical context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema coverage, so there is no parameter semantic burden for the description to carry. The baseline for zero parameters is 4, and the description appropriately says nothing about parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('List') and resource ('all search indexes'), and scopes it to the connected Opensolr account. This distinguishes it from sibling tools like opensolr_index_info (specific index details) and opensolr_create_index (creation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool for enumerating all indexes, but it does not explicitly state when to use it versus alternatives or when not to use it. For a simple list tool the purpose is mostly self-evident, but there is no direct routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opensolr_vector_regionsA

List the vector-enabled Opensolr environments currently available (Solr 9.x with dense vectors and the hybrid query parser).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. The verb 'List' communicates a read-side effect, and 'currently available' plus the Solr/vector criteria specifies what conditions determine the result. It does not fully describe response shape, but the presence of an output schema reduces that need.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one focused sentence that front-loads the action and resource, then adds only the essential clarifying condition. No wasted words or redundant restatements exist.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-side-effect lising tool with an output schema available, this description fully covers what the tool does and how it filters. Nothing essential is missing for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool accepts zero parameters, so there is no parameter meaning to add. The schema already reflects this with an empty properties object, making further description unnecessary and the baseline 4 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') with a clear resource ('vector-enabled Opensolr environments') and a concrete eligibility filter ('Solr 9.x with dense vectors and the hybrid query parser'). It separates this from general index-listing siblings like opensolr_list_indexes by emphasizing vector-enabled.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use case: if you need vector-capable Solr environments, call this tool. However, it never explicitly contrasts it with alternatives, such as opensolr_list_indexes, or states when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct operation: listing, creation, info, ingestion, status, deletion, search, RAG answering, and region listing. Search and ai_answer are related but clearly separated by output type (documents vs grounded answer), and index_info vs list_indexes differ by single-index details vs collection. No two tools appear to overlap in responsibility.

Naming Consistency4/5

All tools share the opensolr_ prefix and snake_case, and mostly follow verb_noun (list_indexes, create_index, add_documents, delete_documents). Two names break the pattern slightly: opensolr_search lacks an object noun and opensolr_index_info/vector_regions are noun phrases, but the style is still predictable and readable.

Tool Count5/5

Nine tools is a well-scoped size for an index-management MCP server; every tool covers a distinct administrative or data operation without redundancy. It is comfortably within the ideal range and not bloated.

Completeness3/5

The set covers create/list/inspect indexes and full document ingestion/search/delete/status plus RAG, but there is no delete_index operation and no direct index settings update. Agents can work around document updates via delete+add, but the missing index deletion is a notable lifecycle gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Python server that enables AI assistants to perform hybrid search queries against Apache Solr indexes through the Model Context Protocol, combining keyword precision with vector-based semantic understanding.
    20
    MIT
  • F
    license
    C
    quality
    D
    maintenance
    Combines a knowledge graph with RAG (Retrieval-Augmented Generation) capabilities for semantic code indexing and search. Enables creating entity relationships, managing observations, and performing semantic searches across indexed codebases.
    13
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that indexes documents and serves relevant context to LLMs via Retrieval Augmented Generation (RAG).
    48
    37
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    A CLI tool and MCP server that turns markdown documentation into a searchable, queryable knowledge base.
    22

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/phpcip/opensolr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server