mcp-mercy
Click on "Deploy 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., "@mcp-mercyTolong cari jurnal tentang kecerdasan buatan di Digilib UMB."
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.
mcp-mercy
Server Model Context Protocol (MCP) untuk menelusuri katalog Digilib dan metadata UMB Repository Universitas Mercu Buana melalui aplikasi AI yang mendukung MCP.
MCP ini menyediakan tujuh tool melalui transport stdio. Pencarian menggunakan halaman dan endpoint publik kampus. Proyek ini merupakan integrasi independen dan tidak berafiliasi secara resmi dengan Universitas Mercu Buana.
Fitur
Tool | Kegunaan |
| Membaca nama field, nilai awal, dan pilihan filter katalog |
| Mencari jurnal, tugas akhir, buku, penelitian, artikel, dan e-book |
| Membaca detail tugas akhir atau buku berdasarkan ID |
| Mencari metadata dan tautan dokumen EPrints |
| Membaca abstrak, penulis, dan label pembatasan akses per file |
| Mengakses enam operasi OAI-PMH, termasuk pagination dengan token |
| Memeriksa keberadaan sesi Portal lokal tanpa menampilkan nilai cookie |
Related MCP server: huiwen-mcp
Persyaratan
Node.js 22.22 atau lebih baru; Node.js 24 disarankan.
npm dan akses HTTPS ke situs kampus.
Chrome/Chromium dan desktop grafis hanya untuk login Portal opsional.
Instalasi
Instalasi dari npm, berlaku pada Linux, macOS, dan Windows:
npm install --global mcp-mercy
mercy --versionAlternatif curl untuk Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/kiryuken/mcp-mercy/main/scripts/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
mercy --helpInstaller PowerShell, instalasi dari checkout lokal, pembaruan, dan penghapusan dijelaskan di panduan instalasi.
Versi 1.0.0 tersedia di npm. Instalasi source GitHub dan curl memakai branch main repositori ini.
Konfigurasi klien MCP
Pilih harness yang dipakai setelah instalasi:
Harness | Konfigurasi sesuai lokasi instalasi | Panduan |
OpenCode 1.x |
| |
OpenCode V2 |
| |
Claude Code |
| |
Codex |
|
mercy config mencetak konfigurasi dengan path absolut Node.js dan CLI lokal. Salin atau gabungkan hasilnya ke konfigurasi harness; perintah ini tidak mengubah file konfigurasi Anda. Cara ini juga menghindari masalah PATH dan shim npm pada aplikasi desktop atau Windows.
Jalankan server secara langsung bila diperlukan:
mercy serveServer memakai stdio dan menunggu pesan MCP di stdin tanpa banner stdout. Binary mcp-mercy tetap tersedia untuk kompatibilitas. Contoh konfigurasi statis tersedia di examples/.
Contoh penggunaan
Temukan nama filter terlebih dahulu:
catalog_fields(collection="tugas_akhir")
catalog_search(collection="tugas_akhir", filters={"Judul_Skripsi1":"artificial"}, limit=5)
catalog_item(collection="tugas_akhir", id="0000095312")
repository_search(query="artificial intelligence", page=0, limit=5)
repository_item(eprintId="104728")
repository_oai(verb="Identify")
repository_oai(verb="ListRecords", metadataPrefix="oai_dc", limit=100)ID pada contoh berasal dari record publik dan ketersediaannya dapat berubah. Parameter lengkap dan format hasil dijelaskan di referensi tool.
Login Portal opsional
Pencarian katalog dan repository tidak memerlukan sesi Portal. Utilitas login membantu menyimpan sesi browser secara lokal untuk diperiksa dengan auth_status:
mercy loginCLI menampilkan tautan Portal dan mencoba membuka browser yang didukung pada Linux, macOS, atau Windows. Selesaikan login dan CAPTCHA secara manual, lalu tekan Enter di terminal. State browser disimpan di ~/.mcp-mercy/portal-state.json dengan izin 0600 pada sistem POSIX. File dapat berisi cookie dan local storage; perlakukan sebagai kredensial.
Jika browser gagal dibuka, CLI mencoba browser bawaan dan tetap menyediakan tautan login. Login melalui tautan/browser bawaan tidak menyalin sesi browser tersebut ke MCP. Pasang browser yang didukung atau set MERCUBUANA_CHROME, lalu ulangi mercy login untuk menyimpan sesi.
mercy login --url
mercy statusSesi Portal tidak dikirim dalam permintaan katalog atau repository dan tidak membuka akses PDF yang dibatasi oleh akun EPrints. auth_status hanya memeriksa state lokal; loggedIn: null berarti sesi tersedia tetapi login belum diverifikasi ke Portal. Detail konfigurasi dan migrasi sesi lama tersedia di panduan konfigurasi.
Pengujian
npm run check
npm run test:coverage
npm run test:livecheck menjalankan lint, pemeriksaan format, dan pengujian offline. Pengujian live terpisah karena membutuhkan jaringan dan bergantung pada layanan kampus. Keduanya menggunakan assertion; kegagalan menghasilkan exit code nonzero.
GitHub Actions dikonfigurasi untuk pemeriksaan offline, coverage, audit dependensi, dan validasi paket pada Node.js 22 serta 24 di Linux, macOS, dan Windows. Pengujian live dapat dijalankan manual dari tab Actions. Lihat strategi pengujian dan hasil QA.
Struktur proyek
mcp-mercy/
bin/ CLI mercy, entry point server, dan utilitas login
src/ Implementasi MCP, HTTP, parser, validasi, dan sesi
scripts/ Installer curl/POSIX dan PowerShell
test/
fixtures/ HTML/XML sintetis untuk pengujian offline
live/ Pengujian layanan kampus melalui klien MCP stdio
*.test.mjs Pengujian unit, integrasi, dan CLI
docs/ Konfigurasi, referensi tool, pengujian, dan laporan QA
examples/ Contoh konfigurasi klien
.github/workflows/ CI dan pengujian live manualBatasan
Struktur HTML kampus dapat berubah. Halaman pembatasan akses, respons kosong, atau struktur utama yang tidak dikenali dilaporkan sebagai error.
Detail tugas akhir dapat hanya menampilkan sebagian metadata. Gunakan hasil pencarian ketika halaman detail tidak lengkap.
Label pembatasan file bersumber dari HTML, tanpa permintaan atau unduhan PDF. Nilai
restricted: nullberarti akses belum diverifikasi.limitmembatasi output lokal. Pencarian repository mengikuti halaman sumber yang biasanya berisi 20 hasil. Token OAI melanjutkan setelah seluruh batch sumber; periksatruncatedsebelum melanjutkan.Tidak ada crawler, retry otomatis, cache, atau pembatas laju global. Jalankan permintaan secara wajar dan ikuti ketentuan perpustakaan.
Kontribusi dan lisensi
Panduan pengembangan tersedia di CONTRIBUTING.md. Penanganan informasi sensitif dijelaskan di SECURITY.md, dan perubahan dicatat di CHANGELOG.md.
Kode proyek menggunakan lisensi ISC. Hak atas metadata, dokumen, dan layanan sumber tetap berada pada pemiliknya.
Available Tools
7 toolsauth_statusARead-onlyIdempotent
Periksa sesi Portal lokal tanpa nilai cookie. Tidak memverifikasi login ke server Portal.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description earns credit for adding the non-obvious caveat that a positive result does not mean the Portal server login is valid, and that no cookie value is consumed — context an agent would otherwise misread.
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 short sentences with no waste, and the positive scope is front-loaded ahead of the limitation. Nothing redundant or padded.
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 zero-parameter, read-only, closed-world probe with full annotations and no output schema, the description covers what it checks and what it does not. It stops short of hinting at the return shape or what a failure means, which would have made it fully self-sufficient.
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?
Zero parameters, so the baseline is 4; the schema is empty and fully described. The phrase 'tanpa nilai cookie' usefully confirms that no credential input is expected, preventing an agent from trying to pass one.
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?
States a specific verb and resource ('Periksa sesi Portal lokal') plus an explicit negative scope ('Tidak memverifikasi login ke server Portal'), so the agent knows this reports cached/local session state rather than server-validated auth. Sibling tools (catalog_*, repository_*) are unrelated domains, so sibling differentiation isn't required here.
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?
Usage is only implied: the agent can infer this is a cheap pre-flight check, but the description never says when to call it versus when server-side verification is actually needed, and names no alternative. The exclusion clause helps steer but isn't a full when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_fieldsCRead-onlyIdempotent
Tampilkan field dan opsi pencarian katalog Digilib Mercu Buana.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond purpose: it does not say whether results vary per collection, whether the option list is static or live, or what the response looks like.
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?
A single front-loaded sentence with no filler. It is efficient, though its brevity reflects under-specification rather than disciplined economy.
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?
With no output schema, the description carries the burden of explaining return values, yet 'field dan opsi pencarian' is the only hint at output shape. For a per-collection discovery tool, the agent is left guessing what it will receive and how to use it before calling catalog_search.
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 0% and the description never mentions the single 'collection' parameter. It does not explain that the returned fields/options are scoped to the chosen collection, nor what the six enum values mean, leaving the schema's bare enum as the only signal.
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?
States a specific verb and resource: 'Tampilkan field dan opsi pencarian katalog' (display catalog search fields and options). An agent can tell this is a schema/discovery tool rather than a search or fetch tool. It does not, however, name or contrast itself with siblings like catalog_search or catalog_item.
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?
There is no explicit when-to-use guidance, no prerequisite (e.g., call before catalog_search to discover valid field names), and no mention of alternatives. The agent must infer the discovery role from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_itemCRead-onlyIdempotent
Ambil detail tugas akhir atau buku berdasarkan ID numerik.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| collection | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so safety is covered. The description adds nothing beyond that — no note on what happens if the ID doesn't exist, what fields are returned, or whether the two collections return different shapes.
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?
A single front-loaded sentence with no wasted words. It is efficient, though the terseness contributes to the missing detail elsewhere.
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 two-parameter read tool with strong annotations, the description covers the basics. With no output schema, it should say more about what the detail response contains or how the two collections differ, so the agent knows what to expect.
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 0%, so the description must carry weight. It does partially compensate: 'tugas akhir atau buku' names the two values of the collection enum, and 'ID numerik' explains the id format. However, it does not explain that collection is required to disambiguate the same ID across collections, which is essential for correct invocation.
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?
States a specific verb (ambil) and resource (detail tugas akhir atau buku) keyed by ID, which is clear enough to understand the operation. It does not differentiate itself from siblings like catalog_search or repository_item, which also return item-level data.
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?
No guidance on when to use this versus catalog_search (query-based discovery) or repository_item. The 'based on numeric ID' clause implies it is a direct-lookup tool, but the agent must infer that condition itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_searchCRead-onlyIdempotent
Cari katalog; gunakan catalog_fields untuk nama filters. limit membatasi hasil lokal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filters | No | ||
| collection | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds that limit constrains local results and that filter names come from catalog_fields, but it does not describe result behavior, pagination, or authentication context.
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 a single compact sentence, front-loaded with the tool's action, and contains no filler. However, its terseness contributes to gaps elsewhere rather than being optimally structured for a 3-parameter nested-filter tool.
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?
With 3 parameters, a nested filters object, 0% schema description coverage, and no output schema, the description is incomplete. It leaves the required collection parameter and filter value semantics unexplained, requiring the agent to infer too much from schema structure alone.
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 0%, so the description must compensate. It explains filters naming via catalog_fields and limit behavior, but it does not explain the required collection enum, allowed collection values, or the string format of filter values.
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 says 'Cari katalog' (Search catalog), which is a clear verb+resource, but it remains generic about what is searched or returned. It points to catalog_fields for filter names, which helps distinguish parameter discovery, but does not clearly differentiate the tool from catalog_item or repository_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 only usage guidance is to use catalog_fields for filter names and that limit caps local results. There is no guidance on when to choose catalog_search over catalog_item or repository_search, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repository_itemBRead-onlyIdempotent
Ambil metadata, abstrak, dan label pembatasan akses per file. Akses PDF tidak diverifikasi.
| Name | Required | Description | Default |
|---|---|---|---|
| eprintId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds a useful limitation—PDF access is not verified—but does not disclose authentication needs, rate limits, or response behavior beyond the returned content list.
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 short sentences with no filler, and the primary purpose is front-loaded before the access caveat. Every sentence adds either scope or a behavioral note.
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?
The tool is simple and the description indicates the returned content, which is helpful because there is no output schema. However, it omits parameter meaning and usage context, so an agent still has gaps for correct invocation.
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 one required parameter (eprintId) and schema description coverage is 0%, so the description should compensate but does not. It mentions 'per file' without explaining that the input is an eprint ID or what the numeric pattern means, leaving parameter meaning ambiguous.
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?
States a specific verb ('Ambil') and specific resources ('metadata, abstrak, dan label pembatasan akses per file'), so an agent knows what is returned. It does not distinguish itself from sibling tools like catalog_item or repository_search, so it stops short of a 5.
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?
Provides no explicit when-to-use guidance, no exclusions, and no named alternatives. The caveat 'Akses PDF tidak diverifikasi' is a behavioral note, not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repository_oaiCRead-onlyIdempotent
Query OAI-PMH UMB. resumptionToken eksklusif; limit memotong output batch lokal.
| Name | Required | Description | Default |
|---|---|---|---|
| set | No | ||
| from | No | ||
| verb | Yes | ||
| limit | No | ||
| until | No | ||
| identifier | No | ||
| metadataPrefix | No | ||
| resumptionToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds two traits beyond that: resumptionToken is exclusive, and limit truncates the local batch output (a warning that results are cut, not an error). That truncation caveat is meaningful behavioral disclosure, but the telegraphic phrasing leaves pagination/continuation behavior unclear.
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 short clauses, no filler, and the most unusual constraint (resumptionToken exclusivity) is front-loaded after the purpose. It is efficient to the point of being telegraphic and mixes languages, so it is compact but not fully parseable as structured guidance.
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?
This is an 8-parameter, enum-driven protocol tool with no output schema and zero schema descriptions, so the description carries the full explanatory burden. Covering only 2 of 8 parameters, with no explanation of how verb shapes the response, leaves an agent unable to call it correctly for anything but the simplest case.
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 0% across 8 parameters, so the description must compensate and it does not. It only touches resumptionToken (exclusive) and limit (truncating), leaving verb, metadataPrefix, set, from, until and identifier entirely unexplained — and the verb enum, which selects completely different operations, is never described. This is a significant gap against a 0%-coverage schema.
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?
It names a specific verb and protocol ("Query OAI-PMH") plus a repository identifier ("UMB"), so the resource is identifiable to someone who knows OAI-PMH. However, "UMB" is opaque and nothing distinguishes this from the sibling repository_search or catalog_search tools. It is a vague-purpose score: the agent knows roughly what domain this touches but not exactly what it returns.
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?
"resumptionToken eksklusif" does convey one real usage constraint (the token cannot be combined with other parameters), which is genuinely helpful. But there is no when-to-use guidance, no mention of alternatives like repository_search, and no indication of which verb to pick for which task. One inline constraint is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repository_searchBRead-onlyIdempotent
Cari metadata EPrints UMB; page memakai offset sumber 20 hasil. limit membatasi output lokal.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint, idempotentHint, and destructiveHint annotations already cover the tool's safety profile, so the description does not need to restate it. What the description adds instead is a non-obvious runtime detail: pages advance in source-side offsets of 20 results, while limit only trims the locally returned set. That is genuinely useful behavior that the annotations and schema do not convey.
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?
It consists of two dense clauses with zero filler, and the core action is stated first. The telegraphic, mixed-language phrasing ('page memakai offset sumber 20 hasil') costs some readability, but no sentence is wasted.
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 3-parameter search tool with no output schema and safety already declared in its annotations, the pagination semantics are covered and that is the main risk area. Still missing: the required query syntax or scope, and whether results are summaries that need to be resolved with the sibling repository_item. The description should cover this last gap.
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 0%: the schema lists page, limit, and query with types and bounds but no meanings, and the description explains the interaction between page and limit well enough for an agent to paginate correctly. It says nothing about the required query parameter beyond the fact that it exists, and it omits the interaction between limit=50 and the fixed 20-result source page.
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 tool's purpose is conveyed through "Cari metadata EPrints UMB", which pairs a specific verb with a specific resource (the EPrints repository) and a subject area. The description gives no signal about when to use this tool rather than its siblings, including catalog_search, repository_item, and repository_oai, and "metadata" remains vague about what is actually searched and returned.
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 contains no statement of when to use this tool, no prerequisites, and no named alternative. The closest thing to guidance is the pagination explanation, which tells how to call the tool, not when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.0.0- First observed
auth_status - First observed
catalog_fields - First observed
catalog_item - First observed
catalog_search - First observed
repository_item - First observed
repository_oai - First observed
repository_search
TDQS
Scored across 7 tools
The tools are mostly separable by resource: catalog_* targets the Digilib catalog, repository_* targets EPrints/OAI, and auth_status handles session status. There is some potential overlap between repository_search and repository_oai, but the descriptions clarify that one searches metadata while the other uses OAI-PMH.
All names use consistent snake_case with a clear resource prefix such as catalog_, repository_, or auth_. The pattern is not strictly verb_noun, but it is predictable enough that an agent can infer tool categories.
Seven tools is well-scoped for a read-only catalog and repository access server. Each tool covers a distinct operation such as field discovery, search, item detail, OAI query, or session status.
The surface covers discovery, search, item retrieval, OAI-PMH access, and local auth status for the apparent library/repository domain. Minor gaps remain around pagination for catalog_search and verified access/download workflows, but core read-only workflows are covered.
Maintenance
Related MCP Connectors
Query, browse, and automate OmegaAI workspaces from any MCP client. Streamable HTTP with OAuth 2.0.
Authenticated MCP access to the AIKI open knowledge commons.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Search MCP servers, MCP clients and AI agents, and retrieve listing details. Free, read-only access.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for searching Ex Libris Primo library catalogues and subscribed databases, enabling search, record retrieval, autocomplete, citation generation, and export to BibTeX, RIS, or CSV.59MIT
- AlicenseBqualityBmaintenanceEnables AI clients to securely query library catalog data, holdings, availability, and statistics from the Huiben library management system via a read-only MCP server.12Apache 2.0
- AlicenseNot gradedqualityBmaintenanceSphere is an exchange where AI agents list services and post requests for other agents. Registration is one request, free, with no human approval. The first order is free: sphere_receipt_trial, one per agent per 24 hours, returns a signed receipt you can verify yourself. Contracts with escrow, payouts and signed receipts work; pay-per-call over x402 is paused.MIT
- FlicenseNot gradedqualityCmaintenanceEnables searching books, generating APA 7 citations, reserving available copies, and finding alternative books from a MySQL-backed library catalog through MCP.-