Search the BnF open catalogue: authors, works, editions and links to what is digitised.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
💡 Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
data.bnf.fr is the open data service of the Bibliothèque nationale de France. It publishes the authority records the national library maintains: the people it catalogues, with their dates, their places, their languages and their fields of activity; the works they wrote, with the editions each work was published in; and the links to the copies digitised in Gallica. A record states whether the library considers it established or still provisional.
This server connects a chat client to that service. You can search for an author or a work by name, read a record in full, list what an author wrote, list the editions of a work, and find the digitised copies attached to either. It needs no API key and no account.
One-click install
Claude Code
Claude Desktop, Cursor, and any client using the standard config format
Node 24 or later is required, and no environment variable has to be set.
-i keeps stdin open, which is where the protocol travels, and -t is left out
because a TTY rewrites the stream. The container needs outbound HTTPS to
data.bnf.fr, and nothing else: no volume, no port, no credential.
Download mcp-databnf-2.1.2.mcpb from
the latest release and
open it. A client that supports MCP bundles installs it on its own, with no npm
and no configuration file to edit. The bundle carries its dependencies, so
nothing is fetched at install time.
The ordinary path runs from a search to a record: a row carries an id, and
get_author or get_work reads it.
| Tool | What it does |
|---|---|
search_authors | Finds people by name in the authority records. |
get_author | Reads one person's record in full. |
search_works | Finds works by title. |
get_work | Reads one work's record in full. |
list_works | Lists the works one person is credited with. |
list_editions | Lists the editions of one work. |
find_digitised | Finds the copies digitised in Gallica for a person or a work. |
search_authorsFinds people by name in the authority records.
| Argument | Type | Required | What it does |
|---|---|---|---|
name | string, 1 to 200 characters | yes | The name to look for. |
limit | integer, 1 to 50, default 10 | no | Rows to serve. |
page | integer, 1 to 100, default 1 | no | Which page of rows. |
In return: authors, each carrying id, which get_author, list_works
and find_digitised take; name as the service writes it; label, the
authority heading, usually with the dates; birth_year and death_year, null
where the record states none; role; and source_url. words_searched says
what was actually sent, has_more whether further pages exist, and
index_window_full that the index served everything it will serve for this
search.
get_authorReads one person's record in full.
| Argument | Type | Required | What it does |
|---|---|---|---|
author_id | string, 1 to 200 characters | yes | The identifier a row carries. |
include_depictions | boolean, default false | no | Add the portraits the record points to. |
In return: the person with name, label, given_name, family_name,
other_names, birth_date and death_date as published, birth_year and
death_year as numbers, birth_place, death_place,
biographical_information, occupation, languages as ISO 639-2 codes,
countries and fields in the words of the record. A field the record leaves
empty is null.
search_worksFinds works by title.
| Argument | Type | Required | What it does |
|---|---|---|---|
title | string, 1 to 200 characters | yes | The words of the title to look for. |
limit | integer, 1 to 50, default 10 | no | Rows to serve. |
page | integer, 1 to 100, default 1 | no | Which page of rows. |
In return: works, each carrying id, which get_work, list_editions and
find_digitised take; title; date, the year the record gives the work, as
published; creators; status, reading established or provisional; and
source_url. The envelope carries the same words_searched, has_more and
index_window_full a search of people returns.
get_workReads one work's record in full.
| Argument | Type | Required | What it does |
|---|---|---|---|
work_id | string, 1 to 200 characters | yes | The identifier a row carries. |
include_depictions | boolean, default false | no | Add the illustrations the record points to. |
In return: the work with title, label, date as published, first_year,
creators as { id, name }, languages, forms, subjects and
dewey_classes in the words of the record, expression_count, same_as for the
registers the BnF aligns it with, and catalogue_url. status reads
established or provisional, and status_statement says what the library
means by it: a provisional record is one the library has not finished checking.
list_worksLists the works one person is credited with.
| Argument | Type | Required | What it does |
|---|---|---|---|
author_id | string, 1 to 200 characters | yes | The person's identifier. |
limit | integer, 1 to 50, default 10 | no | Rows to serve. |
page | integer, 1 to 100, default 1 | no | Which page of rows. |
In return: works, each carrying id, title, date as published, year
as a number where the record has one, forms, status and source_url, with
has_more to continue.
list_editionsLists the editions of one work.
| Argument | Type | Required | What it does |
|---|---|---|---|
work_id | string, 1 to 200 characters | yes | The work's identifier. |
limit | integer, 1 to 50, default 10 | no | Rows to serve. |
page | integer, 1 to 100, default 1 | no | Which page of rows. |
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-databnf)<a href="https://allmcps.com/mcp/mcp-databnf"><img src="https://allmcps.com/api/badge/mcp-databnf?style=directory" alt="MCP Databnf on AllMCPs" /></a>