philosophy-mcp
The philosophy-mcp server provides keyless access to a vast collection of philosophy texts, enabling you to search, read, and extract information from academic papers, classic books, reference works, and local documents.
Philosophy Scholarship (PhilPapers / PhilArchive)
search_papers— Keyword search across PhilPapers/PhilArchive, returning metadata, abstracts, and open-access PDF links.research— One-shot topic scan: search and fetch full abstracts + subjects for each hit in a single call.get_paper— Fetch canonical metadata and full abstract for a single PhilArchive record by ID or URL.list_recent— List recently added/updated PhilArchive records within a specified date window.fetch_pdf— Download an open-access PDF from PhilArchive to disk and return the local file path.get_fulltext— Download a PhilArchive PDF and return its extracted full text directly.
Books, Classics & Reference
search_gutenberg/get_gutenberg_text— Search and read public-domain philosophy classics from Project Gutenberg.search_internet_archive/get_archive_text— Search and read OCR text of scanned, out-of-print works from the Internet Archive.search_wikisource/get_wikisource_text— Search and read primary texts and translations from Wikisource in multiple languages.search_openlibrary— Search Open Library for modern editions and translations, with read/borrow links.search_doab— Search the Directory of Open Access Books for peer-reviewed, open-access academic philosophy monographs.search_sep/get_sep_entry— Search the Stanford Encyclopedia of Philosophy and read full entries.fetch_text— Fetch readable plain text from any URL as a catch-all tool.
Local Documents
local_doc_info— Get an overview (pages, character count, token estimate, outline) of a large local PDF or text file.local_doc_search— Search a local document by keyword or regex, returning matching snippets with page numbers.local_doc_read— Read a bounded page range/chunk of a local document with pagination support.
General
All text-returning tools support paginated reading via
max_charsandoffsetfor incrementally handling long works.No API key required — all tools use keyless public endpoints.
Responses are cached to avoid re-downloading or re-parsing on subsequent reads.
Search for scanned, out-of-print works and retrieve their OCR text from the Internet Archive.
Click on "Install 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., "@philosophy-mcpSearch for recent papers on philosophy of mind"
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.
philosophy-mcp
An MCP server for philosophy texts — both current scholarship and the canon. It folds these into one keyless server:
PhilPapers / PhilArchive — the philosophy preprint archive (the field's closest analog to arXiv): search papers, read abstracts, browse recent submissions, pull full text.
Books, classics & reference — public-domain originals and translations (Project Gutenberg, Internet Archive, Wikisource), open-access academic books (DOAB), modern editions (Open Library), and the Stanford Encyclopedia of Philosophy — plus a generic
fetch_textfor any other source (Zeno.org, marxists.org, Standard Ebooks, …).Local documents — open a large local PDF or text file and work it without loading the whole thing into context: outline, in-file search, and paged reading.
No API key required. Everything runs against keyless public endpoints.
Renamed and expanded from philpapers-mcp (which covered only the PhilPapers tools). The
philpapers-mcpbinary name still works as an alias.
Tools
Philosophy scholarship (PhilPapers / PhilArchive)
Tool | What it does | Backend |
| Keyword search (title/abstract/full text), returns metadata + PhilArchive links + PDF URL | OpenAlex, filtered to the PhilPapers Foundation source |
| One-shot scan: search and pull each hit's verbatim full abstract + subjects in a single call | OpenAlex + OAI-PMH |
| Canonical metadata + full abstract for one record id | PhilArchive OAI-PMH |
| Records added/updated in a date window | PhilArchive OAI-PMH |
| Download a record's open-access PDF to disk, return the path |
|
| Download the open-access PDF and return its extracted full text | PDF + |
PhilArchive is the open-access archive built on the PhilPapers database, so a record id
such as BROTNO-9 resolves on both philarchive.org and philpapers.org.
Books, classics & reference
Tool | What it does | Source |
| Find and read public-domain classics + out-of-copyright translations | Project Gutenberg (Gutendex, with a gutenberg.org fallback) |
| Find scanned, out-of-print works and read their OCR text | Internet Archive |
| Find and read primary texts/translations in any language (en, de, ko, …) | Wikisource |
| Modern editions & translations as metadata, with read/borrow links | Open Library |
| Peer-reviewed, fully open-access academic books (readable in full) | DOAB |
| Search and read the standard scholarly reference | Stanford Encyclopedia of Philosophy |
| Readable plain text from any URL — the catch-all for sources without a dedicated tool | any site |
All text-returning tools (get_fulltext, the get_*_text readers, get_sep_entry,
fetch_text) return one window — max_chars characters (default 15000) starting at
offset (default 0). When the body is longer, the footer reports the next offset to
continue from, so you page through a long work a window at a time instead of dumping it whole
(and re-dumping from the start to read further). Each fetched/extracted body is cached, so
paging doesn't re-download or re-parse the source.
Local documents
Tool | What it does |
| Overview of a local PDF/text file — pages, characters, ~tokens, and a heuristic outline — without loading the whole file |
| Find passages by keyword/regex and return just the matching snippets with page numbers |
| Read a bounded page range / chunk, capped at |
These read a large local file the way you'd skim a thick book — get an outline, jump to the
relevant pages by searching, then read a chunk at a time — so only the parts that matter reach
the context. Only files under $HOME are readable by default; add more roots via
PHILOSOPHY_DOC_ROOTS.
Related MCP server: Alexandria MCP
Example
search_papers with { "query": "phenomenal consciousness higher-order", "open_access_only": true, "limit": 2 }:
Found 1,806 match(es) in PhilPapers/PhilArchive; showing 2 (open-access only).
1. The HOROR theory of phenomenal consciousness (2014)
id: BROTNO-9
authors: Richard Brown
philarchive: https://philarchive.org/rec/BROTNO-9
pdf: https://philpapers.org/archive/BROTNO-9.pdfThen get_fulltext with { "id": "BROTNO-9" } returns the paper's extracted full text.
For the canon: search_gutenberg with { "query": "kant critique", "languages": "en" } returns book
ids, and get_gutenberg_text with { "book_id": 4280 } reads The Critique of Pure Reason directly;
search_sep → get_sep_entry reads an encyclopedia entry; fetch_text pulls readable text from
German originals on Zeno.org or translations on marxists.org.
20th-century authors still in copyright (Heidegger, Adorno, Gadamer, Habermas) won't have free full texts here — you'll get metadata, SEP coverage, and read/borrow links.
Setup
Run straight with npx (no clone, once published):
npx -y philosophy-mcpOr from source:
git clone https://github.com/sea9401/philosophy-mcp
cd philosophy-mcp
npm install # the `prepare` hook builds dist/ automaticallyUpdating
dist/ is committed, so an existing source checkout updates with a plain pull — no build step:
cd philosophy-mcp
git pullThen restart the MCP server (reconnect in Claude Code, or restart Claude Desktop) so it
loads the new build. Maintainers: rebuild and commit dist/ whenever you change src/ — CI
fails if the two drift.
Register with Claude Code
# via npx (no clone)
claude mcp add philosophy -- npx -y philosophy-mcp
# from a local build
claude mcp add philosophy -- node /absolute/path/to/dist/index.js
# optional: identify yourself to OpenAlex's "polite pool" for better rate limits
claude mcp add philosophy -e OPENALEX_MAILTO=you@example.com -- npx -y philosophy-mcpThen /mcp inside Claude Code lists philosophy with its tools.
Register with Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"philosophy": {
"command": "node",
"args": ["/home/sea9401/philpapers-mcp/dist/index.js"],
"env": { "OPENALEX_MAILTO": "you@example.com" }
}
}
}Environment variables
Var | Default | Purpose |
|
| Your email — joins OpenAlex's polite pool (recommended). |
|
| Where |
|
| Extra roots the |
Smoke test
npm test # builds, then runs smoke-test.mjssmoke-test.mjs spawns the server over stdio, performs the MCP handshake, and verifies every
expected tool is registered — no network calls, so it's the regression guard CI runs. (The
older node test-client.mjs additionally exercises a couple of live PhilPapers calls.)
Notes & limits
The book/reference tools are keyless and read-only. Search tools return compact lists; the
get_*/fetch_texttools return onemax_charswindow fromoffsetand report the nextoffsetto continue — page through long works instead of pulling them whole.Gutendex (the Project Gutenberg API host) is frequently overloaded;
search_gutenbergprobes it briefly and falls back to gutenberg.org's OPDS feed.get_gutenberg_textreads the text directly from gutenberg.org, so it works even when Gutendex is down.SEP has no keyword API (its on-site search is JavaScript-driven), so
search_sepmatches against the published entry index (contents.html) — i.e. title/topic matching.list_recentfilters on the OAI datestamp, returns only the first OAI page, and not every record has an open-access PDF —get_paperreports availability;fetch_pdffails clearly.
Publishing (maintainers)
CI (.github/workflows/ci.yml) builds on Node 18/20/22 for every push and PR.
To publish a new version to npm:
Add a repo secret
NPM_TOKEN(an npm Automation access token) under Settings → Secrets and variables → Actions.Bump the version and tag:
npm version patch && git push --follow-tags.Cut a GitHub Release —
.github/workflows/publish.ymlrunsnpm publishautomatically.
Or publish manually: npm login then npm publish --access public.
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sea9401/philosophy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server