doaj-discovery-mcp

doaj-discovery-mcp

Costless-first Model Context Protocol server for discovering DOAJ-indexed journals and articles.

Category
Visit Server

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

Claude Code compatible Node MCP SDK Tools Transport License

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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured