- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Documented (README)
- !No description
claude mcp add mcp-databnf -- npx -y mcp-databnf{
"mcpServers": {
"mcp-databnf": {
"command": "npx",
"args": ["-y", "mcp-databnf"]
}
}
}MCP Servers overview
# mcp-databnf
[](https://www.npmjs.com/package/mcp-databnf)
[](https://github.com/smeet666/mcp-databnf/actions/workflows/ci.yml)
[](./LICENSE)
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.smeet666/mcp-databnf)
[](https://glama.ai/mcp/servers/smeet666/mcp-databnf)
[](https://m8ven.ai/mcp/smeet666-mcp-databnf-abxqfo)
[](https://cursor.com/en/install-mcp?name=databnf&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIm1jcC1kYXRhYm5mIl19)
[](https://insiders.vscode.dev/redirect/mcp/install?name=databnf&config=%7B%22name%22%3A%22databnf%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22mcp-databnf%22%5D%7D)
An MCP server for [data.bnf.fr](https://data.bnf.fr), the open catalogue of the
Bibliothèque nationale de France. Look up an author, find a work, list the
editions the BnF holds of it, list what a person wrote, and gather the links to
what has been digitised.
No API key. No account. Read-only.
---
## What it is for
The BnF publishes its authority file and its bibliographic records as linked
data, and answers questions about them over SPARQL. That dataset knows things a
web search does not: which of two people bearing one name wrote a given book,
what the BnF recorded as somebody's date and place of death, which editions of a
work exist and who printed them, and which of those have been digitised.
This server asks those questions for you, in seven tools, and reports what the
catalogue answers without adding to it.
## Install
```bash
npx mcp-databnf
```
### Claude Desktop, Claude Code, and other stdio clients
```json
{
"mcpServers": {
"databnf": {
"command": "npx",
"args": ["-y", "mcp-databnf"]
}
}
}
```
### With Docker
```json
{
"mcpServers": {
"databnf": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-databnf:2.0.0"]
}
}
}
```
`-i` keeps stdin open, which is where the protocol travels, and no `-t` is
passed: a TTY rewrites the stream and breaks it. The container needs outbound
HTTPS to `data.bnf.fr`, `catalogue.bnf.fr` and `isni.org`, and nothing else: no volume, no port, no environment variable, no credential.
## The seven tools
| Tool | Answers |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `search_authors` | Who does the BnF record under this name, and which record is which |
| `get_author` | Dates, places, occupation, language, country, Dewey class, and the same person in VIAF, IdRef, DBpedia, Wikidata and ISNI |
| `search_works` | Which works have these words in their title |
| `get_work` | Title, creators, date, language, form, subject, and whether the record is established or provisional |
| `list_works` | Which works the catalogue names a person the creator of, with the date and the form code it gives each |
| `list_editions` | Publisher, place, year, edition statement, extent, ISBN, catalogue link, and the Gallica link when there is one |
| `find_digitised` | Every digitised document the catalogue attaches to a person or a work, as links |
A typical exchange asks `search_authors` for a name, reads the rows, and passes
one identifier to `get_author`, to `list_works`, or on to `list_editions`.
## What it does not do, and why
**It never reads Gallica.** The BnF puts its metadata and its digitised contents
under two different regimes. The metadata this server reads may be reused freely
provided the source and the date of retrieval are stated. The contents on
gallica.bnf.fr are governed separately: their terms make use inside an
artificial-intelligence project subject to a paid licence outside academic
research, and the site refuses ClaudeBot and GPTBot at the server, then bans the
calling address after about fifteen requests whatever the pace.
So a Gallica address is treated here as what the catalogue says it is: a piece of
metadata, rendered as a link for a person to open. The server will tell you that
a 1873 Brussels printing of _Une saison en enfer_ has been digitised and give you
its address. It will not tell you what is on page four, whether the scan is
complete, or whether the document opens at all. A `bnf-onto:OCR` link names a
machine-read text of a document; the server reports that the text exists and
leaves it where it is. A test fails if any address on that host is ever built to
be called.
**It does not rank.** The BnF's full-text index answers whether a title or a name
carries the words asked for. It returns no measure of how well, so the rows come
back in the order the index holds them. Searching for `saison enfer` returns a
dozen studies of Rimbaud before Rimbaud, and every one of them is a correct
match. This server says so rather than inventing an order the catalogue does not
support, and it reports no total, because a total on a search that does not rank
reads as a measure of relevance.
**A name is matched letter for letter, and only among the people.** The index
compares the characters given against the characters a cataloguer entered, so
`Dostoïevski`, `Dostoievski` and `Dostoevskij` are three searches reaching three
different sets of records, and a handful of rows under one spelling is no
evidence about the others. `search_authors` says so on every answer, and it reads
the person records alone: an organisation or a conference is outside what it
looked at, so an answer holding no row is never a statement that the authority
file holds no such heading.
**A list of works is one link, not a bibliography.** `list_works` walks
`dcterms:creator`, the statement that ties a work to the person who made it.
That statement is real and it is partial. The catalogue credits a person on a
record in other ways, and the BnF holds printed editions whose work it has never
established as a record of its own, so a title missing from the list is not a
title the person did not write. Every answer says so, and none of them reports a
total: a count of what one link reaches would be read as a count of what somebody
wrote.
**A form code says what a work declares, and an empty one says nothing.** A work
record points at a term of the BnF's work-form vocabulary, and this dataset
publishes no label for those terms. So `roman`, `poesi` and `te` arrive as the
codes they are: some read as words and some do not. The catalogue also states no
form at all on a great many works, and that silence is a form unstated rather
than a genre denied. Keeping the rows that carry one code therefore finds the
works declaring it and never all the works of that form, which is why the codes
are reported and no filter is offered on them.
**It does not write biographies.** The field the BnF calls biographical
information is an occupation on most records: Rimbaud's says _Poète_, and that is
the whole of it. `get_author` returns that word and says what it is.
**It exposes no raw SPARQL tool.** An arbitrary query is an unbounded load on a
service a public institution pays for, and nothing here would control what the
caller wrote. Every query this server sends is one of ten written in advance.
## The licence, and what it asks of you
The BnF states one condition on these metadata:
> L'utilisation de ces métadonnées est libre et gratuite sous réserve du maintien
> de la mention de leur source et de l'indication de leur date de récupération.
Use is free of charge, provided the source is named **and the date of retrieval
is stated**. That second half is a design constraint:
every answer this server produces carries `retrieved_at` in its payload and ends
its text block with the source and that date. A cached answer reports the moment
it was originally read, since that is the date it was retrieved. Repeat both
wherever you show what you got.
## How it treats the service
data.bnf.fr is a query service a public institution runs at its own cost, and a
SPARQL query is a more expensive request than fetching a page.
- One request at a time, never in parallel.
- At least three seconds between two of them. Configuration can widen that and
cannot narrow it, including through the published client entry point.
- The `User-Agent` always carries the project identifier and an address where a
person can be reached, whatever a caller sets.
- Answers are cached in memory for fifteen minutes, so a conversation that walks
back over one author does not ask twice.
The BnF publishes no rate for this endpoint. It publishes `Crawl-delay: 5` on its
other host and enforces it there, which is the only figure it has stated about
how fast it wants to be read, and the floor here was set with that in mind.
## Settings
Every one is optional.
| Variable | Default | Meaning |
| ----------------------- | -------- | --------------------------------------------------------------------------------------------------- |
| `BNF_USER_AGENT` | none | Identify your oWhat people ask about mcp-databnf
What is smeet666/mcp-databnf?
+
smeet666/mcp-databnf is mcp servers for the Claude AI ecosystem with 0 GitHub stars.
How do I install mcp-databnf?
+
You can install mcp-databnf by cloning the repository (https://github.com/smeet666/mcp-databnf) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is smeet666/mcp-databnf safe to use?
+
Our security agent has analyzed smeet666/mcp-databnf and assigned a Trust Score of 77/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains smeet666/mcp-databnf?
+
smeet666/mcp-databnf is maintained by smeet666. The last recorded GitHub activity is dated 2026-08-27, with 2 open issues.
Are there alternatives to mcp-databnf?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy mcp-databnf to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/smeet666-mcp-databnf)<a href="https://claudewave.com/repo/smeet666-mcp-databnf"><img src="https://claudewave.com/api/badge/smeet666-mcp-databnf" alt="Featured on ClaudeWave: smeet666/mcp-databnf" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!