MEK-MCP
The MEK-MCP server provides search and retrieval tools for two Hungarian digital libraries: the Magyar Elektronikus Könyvtár (MEK) and the OSZK Digitális Könyvtár (OSZKDK).
MEK Tools:
mek_simple_search: Quick search by title, subject, author, or MEK ID with automatic accent-insensitive fallback and pagination.mek_advanced_search: Fielded search with up to 5 conditions (AND/OR/NOT) across 24 metadata fields (title, author, subject, language, document type, publisher, etc.).mek_fulltext_search: Search within document contents (not just metadata), returning matching snippets and direct links; filterable by topic collection.mek_browse_index: Browse controlled vocabulary indices (e.g. subject headings, author names) to discover exact term forms before running precise searches.mek_get_record: Fetch full metadata for a specific MEK record by ID or URL.
OSZKDK Tools:
oszkdk_simple_search: Free-text search across all indexed fields.oszkdk_advanced_search: Fielded search with up to 3 conditions (AND/OR/NOT) over title, author, or any field.oszkdk_get_record: Retrieve record metadata and a list of downloadable files with their access restrictions.oszkdk_top_list: View most-read titles by month, year, or all time.
All nine tools are accessible via a single MCP endpoint (optionally secured with an API key) or as a FastAPI microservice with REST API endpoints.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MEK-MCPSearch for Hungarian novels from the 20th century"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MEK-MCP
MCP server and FastAPI microservice exposing the search interfaces of two Hungarian digital libraries — the Hungarian Electronic Library (Magyar Elektronikus Könyvtár, mek.oszk.hu) and the OSZK Digitális Könyvtár (oszkdk.oszk.hu) — to agentic tools (Claude Code, Claude Desktop, Codex and any MCP-capable client) and to plain REST consumers. Documentation below is in Hungarian.
A projekt két üzemmódban használható, két önálló keresőmotorral
(mek_mcp_server.py a MEK-hez, oszkdk_mcp_server.py az OSZKDK-hoz):
Lokális MCP szerver (stdio) — a két könyvtár egymástól függetlenül is bekötető Claude Code-ba vagy Claude Desktopba.
Hostolt microservice (FastAPI) — REST API
/v1/*és/v1/oszkdk/*végpontokkal és egyetlen közös távoli MCP végponttal a/mcpútvonalon, amely mind a kilenc toolt kínálja (öt MEK + négy OSZKDK); Fly.io-ra deployolható ebből a repóból, GitHub Actions-szel automatikusan.
Miért két könyvtár? A MEK és az OSZKDK csak részben fedik egymást: a MEK inkább klasszikus/régebbi magyar irodalmat és szürke irodalmat gyűjt, az OSZKDK viszont ISBN-es, modern könyvekre és monográfiákra súlyoz. Ha az egyikben nincs találat egy modern, ISBN-es magyar könyvre, érdemes a másikban is megnézni — ezért érdemes mindkét toolkészletet egyszerre elérhetővé tenni egy agent számára.
Toolok / végpontok
MEK (Magyar Elektronikus Könyvtár)
MCP tool | REST végpont | Mire jó |
|
| Gyors keresés cím / téma / szerző / MEK ID szerint (ÉS-kapcsolat) |
|
| Max. 5 feltétel és / vagy / nem operátorokkal, 24 mező |
|
| Szabad szavas keresés a dokumentumok teljes szövegében |
|
| Kontrollált szótár (tárgyszó-, névalakok) böngészése |
|
| Egy rekord teljes metaadata |
OSZKDK (OSZK Digitális Könyvtár)
MCP tool | REST végpont | Mire jó |
|
| Gyors, szabad szavas keresés az összes indexelt mezőben |
|
| Max. 3 feltétel és / vagy / nem operátorokkal, cím / szerző / bármely mező |
|
| Rekord metaadata + letölthető fájlok listája (formátum, méret, hozzáférés) |
|
| Legolvasottabb címek (hónap / év / minden idők) |
Interaktív API-dokumentáció futó szolgáltatásnál: /docs.
Related MCP server: barracuda-mcp
1) Lokális MCP szerver (stdio)
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
# csak a MEK
claude mcp add --transport stdio mek -- \
$PWD/.venv/bin/python $PWD/mek_mcp_server.py
# csak az OSZKDK
claude mcp add --transport stdio oszkdk -- \
$PWD/.venv/bin/python $PWD/oszkdk_mcp_server.pyEllenőrzés: claude mcp list → a szerverek ✓ Connected állapotban.
2) Hostolt szolgáltatás Fly.io-n, ebből a repóból
A repo tartalmazza a Dockerfile-t, a fly.toml-t és a
.github/workflows/fly-deploy.yml workflow-t: minden main-re történő
push automatikusan deployol.
Egyszeri beállítás:
# 1. App létrehozása a Fly-fiókban (a név globálisan egyedi kell legyen)
fly apps create mek-search-api
# 2. App-hatókörű deploy token generálása
fly tokens create deploy -a mek-search-apiA kapott tokent add hozzá a GitHub repóhoz secretként:
Settings → Secrets and variables → Actions → New repository secret,
név: FLY_API_TOKEN. Ezután egy push a main-re (vagy az Actions fülön a
„Fly Deploy" workflow kézi indítása) elvégzi a deployt.
Opcionális API-kulcs védelem:
fly secrets set MEK_API_KEY=valami-titok -a mek-search-apiHa be van állítva, minden kérésnek X-API-Key: <kulcs> vagy
Authorization: Bearer <kulcs> fejlécet kell vinnie (kivéve /,
/healthz, /docs).
Távoli MCP használat deploy után
claude mcp add --transport http mek-oszkdk https://mek-search-api.fly.dev/mcp
# API-kulccsal:
claude mcp add --transport http mek-oszkdk https://mek-search-api.fly.dev/mcp \
--header "X-API-Key: valami-titok"Egyetlen URL mögött mind a kilenc tool elérhető (mek_* és oszkdk_*
előtaggal, névütközés nélkül), így lokális telepítés nélkül, bármely
gépről (vagy claude.ai custom connectorként) használható mindkét
könyvtár.
Példa promptok az agentnek
MEK:
„Keress magyar nyelvű műveket a mesterséges intelligencia témájában, de zárd ki a programozási tankönyveket." →
subject=mesterséges intelligenciaANDlanguage=magyarNOTsubject=programozás.„Petőfi szerzőként, témaként és közreműködőként." → három keresés az
author/subject/contributormezőkre (35 / 50 / 4 találat) — asubject-es halmaz a róla szóló (szekunder) irodalom.„Nézd meg, milyen tárgyszóalakok vannak a néprajz körül, és ezekre keress." →
mek_browse_index(subject, néprajz)→ célzott keresések.Ékezetkezelés: 0 találatnál automatikus ékezetfüggetlen újrapróbálás, a válaszban
accent_fallback_used=truejelzi a bővülést.
OSZKDK:
„Keress Petőfitől szerzőként műveket, de zárd ki az Ibolyák címűt." →
author=Petőfi SándorNOTtitle=Ibolyák (exact_phrase).„Mi a legnépszerűbb könyv az OSZK digitális könyvtárban idén?" →
oszkdk_top_list(period=year).„Ez a könyv szabadon olvasható, vagy csak a könyvtárban?" →
oszkdk_get_record→files[].access(Nyilvánosvs.Dedikált hálózaton belül= csak OSZK-pontokon).Ha a MEK-ben nincs találat egy modern, ISBN-es könyvre, próbáld az OSZKDK-ban (és fordítva) — a két gyűjtemény kiegészíti egymást.
Implementációs jegyzetek
MEK:
A modern
/hu/search/végpontok UTF-8-at, a régi/katalog/*.php3CGI-k ISO-8859-2 kódolású form-adatot várnak — a kliens ezt kezeli (e nélkül az ékezetes keresések némán 0 találatot adnak).Az összetett kereső oldalanként max. 100 találatot ad; lapozás
offset-tel (100, 200, ...). Az egyszerű és teljes szövegű kereső 10/50/100-as lapmérettel lapozható.Tárgyszavak, típusok, névalakok kontrollált szótárból jönnek; a
mek_browse_indexsearch_valuemezője a kereshető alak.Névformátum: „Családnév Utónév" (
Petőfi Sándor), külföldi szerzőknél gyakranVezetéknév, Utónév(Verne, Jules). Csonkolás:*.
OSZKDK:
Az összes végpont sima UTF-8-at használ, nincs szükség speciális kódolás-kezelésre (szemben a MEK legacy
/katalogvégpontjával).A találati oldalak fix, 10-es lapmérettel dolgoznak; nincs lapméret-paraméter, csak
offset(0-alapú).Az összetett keresőnek pontosan 3 sora van (ennyit enged a saját UI is); csak 3 mező érhető el ténylegesen: cím (
dc.title), szerző (dc.author), bármely mező (cql.serverChoice) — másdc.*nevek (pl.dc.subject) csendben 0 találatot adnak, mert a backend nem támogatja őket, hiába tűnne logikusnak.A dokumentumtípus-szűrő (
document_type) csak globálisan, az ELSŐ feltételről érvényesül — ez a hivatalos UI valódi korlátja, nem a kliens hibája.any_wordésall_wordsegyezési mód a jelenlegi backenden minden tesztelt esetben azonos találati halmazt adott;exact_phraseaz egyetlen mód, ami megbízhatóan szűkít.Egyes rekordok csak „Dedikált hálózaton belül" (OSZK-pontokon) érhetők el, nem szabadon letölthetők — ezt a
files[].accessmező jelzi minden fájlnál.
Közös / hosztolás:
A hostolt szolgáltatás stateless, nem igényel persistent volume-ot; a
fly.tomlauto_stop_machinesbeállításával üresjáratban leáll.A
/mcpvégpont a két modul tooljait egyetlen kombinált MCP szerverbe gyűjti (combined_mcpazapp.py-ban); stdio módban viszont a két modul továbbra is teljesen önállóan futtatható.
Tesztelés
Élő integrációs tesztek mindkét könyvtár ellen (keresők, NOT-operátor, ékezet-fallback, index, rekord, lapozás, top-lista, hibakezelés):
.venv/bin/python test_live.pyAvailable Tools
5 toolsmek_advanced_searchA
Advanced (fielded) search in the MEK catalogue with up to 5 conditions combined via AND / OR / NOT over 24 metadata fields.
Available fields: main_title, subtitle, collection_title, part_title, parallel_title, original_title, series, author, author_role, corporate_author, contributor, contributor_role, publisher, subject, geographic_subject, period_subject, document_type, format, language, original_language, printed_source, rights_owner, rights_note, creative_commons.
Typical patterns:
Works BY a person: field=author, value='Petőfi Sándor'.
Works ABOUT a person: field=subject, value='Petőfi Sándor'.
Person in any role: run separate author / subject / contributor searches (OR across different fields of different records is best done client-side by merging results).
Exclusions: add a condition with operator='not' (e.g. document_type='útikönyv' with 'not' to drop travel guides).
Language filter: field=language, value='magyar' / 'angol' / ...
Values are matched against controlled vocabulary; use mek_browse_index to discover exact term forms, and * for prefixes.
Returns: {total, offset, hits: [{mek_id, url, authors, title, date_added}], has_more, accent_fallback_used}.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Result offset for paging. The server returns up to 100 hits per page; pass 100, 200, ... for further pages. | |
| conditions | Yes | 1 to 5 search conditions. Each condition has a field, a value and an operator ('and'/'or'/'not') that links it to the previous condition. Example (Hungarian-language AI works excluding programming textbooks): [{'field':'subject','value':'mesterséges intelligencia'}, {'field':'language','value':'magyar','operator':'and'}, {'field':'subject','value':'programozás','operator':'not'}] | |
| accent_insensitive | No | If true, accented and unaccented letter forms are treated as equal (MEK 'ékezet nélküli keresés'). Useful when the exact accented form of a name/term is unknown. | |
| auto_accent_fallback | No | If true (default) and the search yields 0 hits, the search is automatically retried with accent-insensitive matching; the response then contains accent_fallback_used=true so you can tell the user the hit set was widened this way. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the return structure ({total, offset, hits, has_more, accent_fallback_used}), accent fallback behavior, and controlled vocabulary matching. Missing explicit rate limits or error handling, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: first sentence states purpose, followed by field list, typical patterns, and return structure. No unnecessary words, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, nested conditions, output schema exists), the description is highly complete. It covers field list, patterns, controlled vocabulary, accent behavior, and return shape. Only minor details (like pagination limit) are in schema but not repeated, which is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3. The description adds value beyond schema by providing examples (e.g., full JSON for conditions), explaining field usage (e.g., author vs. subject), and clarifying operator behavior. This significantly aids understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's an 'Advanced (fielded) search' with up to 5 conditions combined via AND/OR/NOT over 24 metadata fields. It lists available fields and provides typical patterns, effectively distinguishing it from siblings like mek_simple_search and mek_fulltext_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives typical patterns (e.g., 'Works BY a person', 'Works ABOUT a person', exclusions, language filter) and suggests using mek_browse_index for controlled vocabulary. It does not explicitly state when not to use this tool, but the patterns provide clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mek_browse_indexA
Browse the controlled-vocabulary index of a catalogue field around a given term. Use this BEFORE subject/type/name searches to discover the exact term forms stored in the catalogue, then run mek_advanced_search with the returned search_value strings.
Returns: {field, term, entries: [{display, search_value}]}. Pass search_value (not display) as the value in mek_advanced_search.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Term to position the index at; the browser returns the vocabulary entries around/containing it (e.g. 'néprajz' lists 'magyar néprajz', 'tárgyi néprajz', 'vallási néprajz', ...). | |
| field | Yes | Field whose controlled-vocabulary index to browse. One of: author, author_role, collection_title, contributor, contributor_role, corporate_author, creative_commons, document_type, format, geographic_subject, language, main_title, original_language, original_title, parallel_title, part_title, period_subject, printed_source, publisher, rights_note, rights_owner, series, subject, subtitle. Most useful: subject, geographic_subject, document_type, author, language. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description discloses return structure and the distinction between display and search_value. Could mention error behavior if term not found, but overall transparent for a read-only browse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus return summary; purpose and usage are front-loaded, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description covers purpose, parameter guidance, usage context, and how to chain with sibling, making it fully adequate for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond schema: explains term as a positioning point (not filter), lists most useful fields, and emphasizes using search_value (not display) downstream.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Browse the controlled-vocabulary index of a catalogue field around a given term', distinguishing it from search tools like mek_advanced_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Use this BEFORE subject/type/name searches' and directs to pass search_value to mek_advanced_search, providing clear when-to-use and chaining guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mek_fulltext_searchA
Free-text search in the full text of MEK documents. Returns matching documents with a text snippet around the match and a direct link to the match location. Use this when the query concerns document CONTENT rather than catalogue metadata, or as a fallback when metadata searches find nothing.
Returns: {total, offset, limit, hits: [{mek_id, url, authors, title, snippet, match_location_url}], has_more}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max hits per page (10 / 50 / 100). | |
| query | Yes | Free-text query searched in the FULL TEXT of the documents (not just metadata). Use Hungarian words for Hungarian documents, e.g. 'mesterséges intelligencia'. | |
| offset | No | Paging offset. | |
| broad_topic | No | Restrict to a broad MEK collection: all (default), science_math (természettudományok és matematika), technology_economy (műszaki tudományok, gazdasági ágazatok), social_sciences (társadalomtudományok), humanities_literature (humán területek, kultúra, irodalom), reference_other (kézikönyvek és egyéb műfajok). | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return structure (snippets, links) and behavior (full-text search), but does not mention side effects, auth requirements, or rate limits. Still, it is adequate for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a return-type schema. Every sentence adds value, front-loaded with purpose and usage. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, 1 required, output schema present), the description is complete: purpose, when-to-use, return format, and parameter guidance. Sibling tools are mentioned in usage guidelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds extra guidance: 'Use Hungarian words for Hungarian documents' for the query parameter, which adds value beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Free-text search in the full text of MEK documents' with a specific verb and resource, and contrasts it with metadata searches, distinguishing it from siblings like mek_simple_search and mek_advanced_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when the query concerns document CONTENT rather than catalogue metadata, or as a fallback when metadata searches find nothing.' This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mek_get_recordA
Fetch the metadata of a single MEK record: title, authors, themes (topic hierarchy), subject headings, description, dates, identifiers. Use it to inspect / classify individual hits (e.g. to decide whether a work is fiction, history or ethnography, or whether it is BY or ABOUT a person).
Returns: {mek_id, url, title, themes, subjects, description, date_added, urn}.
| Name | Required | Description | Default |
|---|---|---|---|
| mek_id_or_url | Yes | MEK identifier (e.g. '9439') or record URL (e.g. 'https://mek.oszk.hu/09400/09439'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool is for fetching metadata (a read operation) and lists what is returned. It does not mention destructive behavior or auth requirements, but for a simple get-record tool, this is adequate and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences. The first sentence states the action and returns, the second provides usage context. It is front-loaded and every sentence is informative without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-record tool with one parameter and an output schema, the description is complete. It explains the tool's functionality, when to use it, and lists the return fields (mek_id, url, title, themes, subjects, description, date_added, urn), which compensates for the lack of an explicit output schema in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (mek_id_or_url) with 100% schema description coverage. The description reiterates the parameter's purpose (MEK identifier or URL) but does not add significant new semantics beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches metadata of a single MEK record, listing specific fields like title, authors, themes, subjects, description, dates, identifiers. It also provides usage examples (inspect/classify hits) and distinguishes itself from sibling tools (search, browse) by focusing on individual record retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use it to inspect / classify individual hits', providing clear guidance on when to use the tool. While it doesn't explicitly state when not to use or provide alternatives, the context of sibling tools and the specific use case make the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mek_simple_searchA
Simple search in the MEK catalogue by title, subject, author and/or MEK ID. All given words are combined with AND. Words may be typed in lowercase and without accents: if nothing is found, the MEK server automatically retries accent-free and then stemmed.
Good for quick, broad lookups. For field-precise queries, OR-logic, exclusions (NOT) or language/type filtering use mek_advanced_search.
Returns: {total, offset, limit, hits: [{mek_id, url, authors, title, date_added}], has_more}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max hits per page. Server supports 10, 50 or 100; the value is rounded up to the nearest supported size. | |
| title | No | Words from the title (main/sub/series title). All words must occur (AND). Truncation with *, accents optional. Empty = not filtered. | |
| author | No | Author / editor / translator name words, e.g. 'Petőfi Sándor' or 'Orwell'. | |
| mek_id | No | Numeric MEK identifier of a specific document, e.g. '9439'. | |
| offset | No | Result offset for paging (0-based, in items). | |
| subject | No | Words from the topic: subject headings, sub-collection or document type, in Hungarian (e.g. 'néprajz', 'történelem', 'regény'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses behavioral traits: AND combination of words, retrying with accent-free and stemmed versions, rounding of limit to supported sizes, and the return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: first sentence states purpose, then details on usage, alternatives, and return format. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters with full schema, an output schema, and no required params, the description covers all necessary context including behavioral details and alternatives, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3, but description adds value by explaining AND logic for title, example for author, Hungarian context for subject, and limit rounding behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a simple search by title, subject, author, and/or MEK ID, and explicitly distinguishes from mek_advanced_search by noting it's for quick, broad lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (quick, broad lookups) and when not to (field-precise queries, OR-logic, exclusions, language/type filtering) and names the alternative tool mek_advanced_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool serves a clearly distinct purpose: advanced fielded search, controlled vocabulary browsing, full-text search, single-record retrieval, and simple broad search. No two tools overlap significantly; even simple and advanced search are differentiated by complexity and query capabilities.
All tool names follow a consistent 'mek_verb_noun' pattern (e.g., mek_advanced_search, mek_browse_index, mek_fulltext_search). The naming is predictable and self-documenting.
With 5 tools, the server is well-scoped for a library catalogue interface. The tools cover the essential operations without unnecessary bloat, providing a balanced set for both simple and advanced queries.
The tool surface covers the key use cases: searching by metadata (simple and advanced), browsing controlled vocabularies, full-text search, and fetching full record details. There are no obvious gaps for a read-only catalogue query service.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
IEEE Xplore MCP — BYOK wrapper over the IEEE Xplore Metadata Search API
MCP server for Russian books search, details, and recommendation candidates.
Search and save to your Purl read-it-later knowledge base from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables searching Figshare research articles, datasets, papers, and posters through the MCP protocol.14MIT
- AlicenseNot gradedqualityDmaintenanceEnables searching OpenAleph entities and documents using natural language queries through the MCP protocol.191MIT
- AlicenseNot gradedqualityDmaintenanceEnables searching, PDF conversion, and reference extraction for Turkish academic articles on DergiPark via MCP tools.39MIT
- FlicenseAqualityBmaintenanceMCP server to access the Hungarian Electronic Library (MEK) search engines, enabling agentic tools to search and retrieve content.4
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/hvj78/MEK-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server