MCP server for the authenticated Open Journal Systems REST API (OJS 3.5/3.6)
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"ojs-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# ojs-mcp [](https://github.com/mpasternak/ojs-mcp/actions/workflows/tests.yml) [](https://pypi.org/project/ojs-mcp/) [](https://github.com/mpasternak/ojs-mcp/blob/main/LICENSE) An [MCP](https://modelcontextprotocol.io/) server for the authenticated REST API of [Open Journal Systems](https://pkp.sfu.ca/ojs/) (OJS 3.5/3.6). Connected to an MCP client (Claude Desktop, Claude Code, and others), it gives the model access to a journal's submissions, reviews, issues, and editorial statistics — and, with writes explicitly enabled, also to making editorial decisions, publishing, and editing metadata. ## Verified against a live OJS 3.5 Every tool has been exercised end-to-end against a real OJS 3.5.0-5 instance — the sixteen read tools, the `ojs_request` escape hatch, and all five write tools. The write tools were checked by reading back the state OJS actually ended up in, not by trusting the status code: an announcement created, publication metadata edited, a submission carried from the submission stage to production by two editorial decisions, then published and unpublished again. That instance is reproducible. [`demo/`](https://github.com/mpasternak/ojs-mcp/tree/main/demo) holds the Docker stack, the fictional seed content, and the two scripts that drive this server against it as a real MCP client — `check_api.py` for the read tools, `check_writes.py` for the write tools. Three things have **not** been exercised against a live server, and still rest on what the PKP source (`pkp-lib`, `pkp/ojs`) says rather than on observed behavior: login/password authentication (`OJS_USERNAME`/`OJS_PASSWORD`), network mode (`OJS_MCP_TRANSPORT=http`), and OJS 3.6 — only 3.5 has been tested. The unit test suite likewise runs entirely against stubbed HTTP responses (via `respx`). Write…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.