doaj-discovery-mcp
Costless-first Model Context Protocol server for discovering DOAJ-indexed journals and articles.
README
<div align="center">
<img src="https://doaj-discovery-mcp-hbyczavkfq-ew.a.run.app/icon.svg" width="72" height="72" alt="">
DOAJ Discovery MCP
Search the Directory of Open Access Journals from any AI client — no account, no API key, no payment
Problem · Tools · Quick Start · Local · Docker · Privacy · Development · Deployment
</div>
🎯 The Problem
The DOAJ indexes over 23,000 peer-reviewed open access journals, but finding the right one is
manual work. Its API speaks Elasticsearch query syntax — bare multi-word searches are AND-ed
together, so a natural-language question or a pasted abstract silently returns nothing. Filtering
by article processing charge, licence, publisher country, or language means knowing field paths
like bibjson.apc.has_apc and that DOAJ stores "NL" rather than "Netherlands".
Meanwhile, an AI assistant asked "which no-fee journals publish Syriac manuscript studies?" will answer from training data — plausible journal names, stale APC policies, no verifiable links.
This server closes that gap. It translates plain-language questions and manuscript abstracts into valid DOAJ queries, applies real metadata filters server-side, ranks candidates locally, and returns source links for verification.
[!NOTE] Public beta. Free to use, no uptime SLA. Verify important results on DOAJ and the journal's own website.
[!IMPORTANT] Independent project. DOAJ Discovery MCP is an independent, unofficial open-source project. It is not affiliated with, endorsed by, sponsored by, or operated by DOAJ.
🧰 Tools
Eight read-only tools. None performs editorial review, acceptance prediction, compliance checking, or publishing decisions.
| Tool | Key inputs | What it does |
|---|---|---|
search_doaj_journals |
query, country, language, license, noApcOnly, strict |
Journal search with DOAJ-side metadata filters and local lexical ranking |
search_doaj_articles |
query, limit, strict |
Article search with local lexical ranking |
recommend_doaj_journals_for_manuscript |
abstract, title, preferredLanguage, preferredCountry, noApcOnly |
Manuscript-fit discovery candidates from an abstract |
find_diamond_oa_journals |
query, limit |
No-fee journals via the bibjson.apc.has_apc:false filter |
find_similar_doaj_articles |
abstract, title |
Articles similar to a given abstract |
get_doaj_journal_by_issn |
issn |
Direct lookup by print or electronic ISSN |
get_doaj_article_by_doi |
doi |
Direct lookup by DOI |
explain_doaj_metadata |
term |
Explains APC, licence, language, ISSN, diamond OA — fully local, no network call |
Every search response includes the effective DOAJ query it ran, the upstream total, and how many
results were returned, so you can see and audit what was actually asked.
Why connect this instead of asking directly?
An AI client can query current DOAJ metadata rather than relying on model memory. It can find journal or article candidates, identify no-APC records, rank results for a topic, and preserve links for verification. The connection exposes no private DOAJ data.
🚀 Quick Start
Remote (Streamable HTTP)
No account, API key, or payment required. Add this URL:
https://doaj-discovery-mcp-hbyczavkfq-ew.a.run.app/mcp
| Client | Where to add it |
|---|---|
| Claude (paid plans) | Settings → Connectors → Add custom connector |
| ChatGPT (Business, Enterprise, Edu) | Settings → Apps, developer mode enabled, created by an authorized admin or developer |
| Codex / other MCP clients | Add as a remote Streamable HTTP MCP server |
Client availability and menu names change. See the current Claude connector guide and ChatGPT developer mode guide.
Local (stdio)
For clients that launch MCP servers as a subprocess:
npm ci && npm run build
{
"mcpServers": {
"doaj-discovery": {
"command": "node",
"args": ["/absolute/path/to/doaj-discovery-mcp/dist/src/stdio.js"]
}
}
}
💻 Run Locally
Requires Node.js 22 or newer.
npm ci
cp .env.example .env
npm run dev
Open http://localhost:3000/. The MCP endpoint is http://localhost:3000/mcp; health is
http://localhost:3000/health. For the stdio transport instead, run npm run dev:stdio.
Configuration is documented in .env.example. The public DOAJ API is used without an API key.
🐳 Docker
docker build -t doaj-discovery-mcp .
docker run --rm -p 3000:3000 --env-file .env doaj-discovery-mcp
🔒 Privacy
Do not send confidential, unpublished, personal, or sensitive manuscript text to the public service. Requests pass through Google Cloud and the public DOAJ API. Query text and abstracts are not intentionally persisted by the application, and production caching is disabled. Read PRIVACY.md for details.
🛠 Development
npm run check # tests, build, lint, format check
DOAJ_LIVE_TEST=1 npm test # additionally hit the real DOAJ API
docker build -t doaj-discovery-mcp:local .
The live tests are skipped by default so CI stays hermetic. They exist as a regression guard: a
DOAJ query can be syntactically valid and still match zero records, which unit tests with a
stubbed fetch cannot detect.
See CONTRIBUTING.md and the MIT License.
☁️ Deployment
Pushes to main are verified by CI and then deployed to Google Cloud Run through keyless Workload
Identity Federation. See docs/CLOUD_RUN.md.
- Landing page: https://doaj-discovery-mcp-hbyczavkfq-ew.a.run.app/
- Health: https://doaj-discovery-mcp-hbyczavkfq-ew.a.run.app/health
- Issues: https://github.com/ramiramirez-nl/doaj-discovery-mcp/issues
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.