This release is a pre-release and may not be stable for production use.
Pustaka is an MCP server that searches thesis repositories across 75+ Indonesian universities (PTN, PTS, Polytechnics) using OAI-PMH harvesting and HTML scraping. It detects which theses are full text by analyzing PDF content directly.
Port of pencari-skripsi-indonesia (MIT) by Yingtze.
Quick Start
pip install "pustaka-mcp[pdf]"
pustaka
With uvx
uvx --from pustaka-mcp pustaka.exe
Claude Desktop config
{
"mcpServers": {
"pustaka": {
"command": "uvx",
"args": ["--from", "pustaka-mcp", "pustaka.exe"]
}
}
}
Tools
| Tool | Description |
|---|---|
search_thesis |
Search by keyword, filter by university/type/province. Returns full/partial/locked status. |
list_universities |
List all supported universities, filter by type (PTN/PTS) or province. |
analyze_pdf |
Deep PDF content analysis. Detects chapters, estimates page count, checks access. |
search_and_analyze |
Combined search and PDF analysis in one call. Slower but returns accurate status immediately. |
Resources
skripsi://universities- all universities as JSONskripsi://stats- repository statistics
Status Meanings
| Status | Meaning |
|---|---|
| FULL | Chapters 1, 3, 4, 5 and bibliography detected inside the PDF |
| PARTIAL | Some chapters found, incomplete or HTML-only detection |
| LOCKED | PDF exists but requires login or embargo |
| UNKNOWN | Cannot determine automatically |
Environment Variables
| Variable | Default | Description |
|---|---|---|
PUSTAKA_DELAY |
1.2 |
Delay between requests (seconds) |
PUSTAKA_WORKERS |
5 |
Number of parallel threads |
PUSTAKA_NO_CACHE |
0 |
Set to 1 to disable local cache |
Requirements
- Python 3.10+
pdfminer.six(optional, for PDF content analysis)
pip install pustaka-mcp[pdf]
Without pdfminer.six, the server still works but uses HTML-only detection.
Original Work
Port of pencari-skripsi-indonesia by Yingtze, released under MIT License. The original provides the repository configurations, OAI-PMH harvesting logic, HTML parsers, and PDF analysis heuristics.
License
AGPL-3.0-only - This port. See LICENSE.
The original pencari-skripsi-indonesia is MIT licensed.
Release files for pustaka-mcp 0.1.1b2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pustaka_mcp-0.1.1b2.tar.gz | 118.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pustaka_mcp-0.1.1b2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 136.7 kB
Release files / pustaka_mcp-0.1.1b2.tar.gz
| Download URL | pustaka_mcp-0.1.1b2.tar.gz |
|---|---|
| Size | 118.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c1da5562f64c4fe208fbc61ae7d12218588d55d2a223a9f7796ebf5fc5ae9288
|
|
BLAKE2b-256 checksum How to use checksums |
d018ea0171677da9554c914b70256270236ec86ed47d84989eeea1b9efb9ab7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pustaka_mcp-0.1.1b2-py3-none-any.whl
| Download URL | pustaka_mcp-0.1.1b2-py3-none-any.whl |
|---|---|
| Size | 18.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
40c297e52ecf205b2ed37a81638d432c0ebe114cbe10f5023ca8bf4038b23797
|
|
BLAKE2b-256 checksum How to use checksums |
963c8c9b9990b97c701c724834c5498d85cfc49f06eef8153370075b35da42f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|