Apple Books
Accede y gestiona tu biblioteca en Apple Books.
Documentación
Apple Books MCP
Servidor de Model Context Protocol (MCP) para Apple Books.
De un vistazo
- Retoma donde lo dejaste — Claude ve el libro que estás leyendo, tu progreso y el capítulo en el que estás, y extrae el texto de ese capítulo (
chapter_id="current") y tus subrayados cuando los necesita. - Encuentra cualquier libro — por título o autor, ignorando mayúsculas, acentos y comillas curvas, con un enlace que lo abre en Apple Books.
- Amplía cualquier subrayado — obtén el párrafo circundante explicado en contexto, con el ancla exacta que marcaste mostrada en
«...». - Revisita un libro — extrae tus subrayados, agrúpalos por tema y cítate tus propias palabras.
- Reflexiona sobre tu lectura — patrones entre libros, ideas recurrentes en tus subrayados, aquello que realmente te atrae.
https://github.com/user-attachments/assets/77a5a29b-bfd7-4275-a4af-8d6c51a4527e
¡Y mucho más!
Herramientas disponibles
Las herramientas de listado y búsqueda devuelven una página a la vez: 50 anotaciones o 200 libros por defecto, limit entre 1 y 500, y offset para la página siguiente. Cuando hay más, la salida lo indica y nombra el siguiente offset.
Cómo funcionan los resultados:
- Los IDs son números enteros: cada fila comienza con uno, como en
[175] Title by Author, para pasarlo comobook_id,annotation_idocollection_id. También se acepta una cadena numérica como"175";true,falsey las fracciones no son IDs. - Un fallo (un ID desconocido, un libro no descargado, un
colorincorrecto) se devuelve como un error MCP (isError) cuyo mensaje indica qué hacer a continuación, a menudo otra herramienta a la que llamar. Un resultado vacío ("No se encontraron libros…") es una respuesta normal, no un error. - El texto extraído de tus libros (texto de capítulo, el pasaje alrededor de un subrayado, una tabla de contenidos, la descripción de un libro) se envuelve en
<book_text>…</book_text>. Las instrucciones del servidor indican a Claude que este texto son datos no confiables del libro, nunca instrucciones a seguir. - Los subrayados de libros que has eliminado de la biblioteca los conserva Apple Books. Se muestran por libro eliminado, como "Libro eliminado (asset 3F2A1B2C…)", después de los libros que aún están en tu biblioteca.
Colecciones
| Herramienta | Descripción | Parámetros |
|---|---|---|
| list_all_collections | Lista todas las colecciones | limit?: int (predeterminado: 200), offset?: int |
| get_collection_books | Obtiene todos los libros de una colección | collection_id: int |
| describe_collection | Obtiene los detalles de una colección | collection_id: int |
| search_collections_by_title | Busca colecciones por título | title: str |
Edición de colecciones (opt-in)
Desactivada por defecto. Actívala añadiendo --enable-writes a los argumentos del servidor:
"args": ["apple-books-mcp", "--enable-writes"]
Con la extensión de Claude Desktop, activa Permitir edición de colecciones en la configuración de la extensión en su lugar.
Apple no proporciona una API de automatización para colecciones, por lo que estas escrituras se realizan directamente en la base de datos de la biblioteca — con protecciones: cada escritura se rechaza mientras Books esté abierto, realiza primero una copia de seguridad automática segura para WAL (~/.py_apple_books/backups/), valida el esquema y aborta si hay desviaciones, y solo toca colecciones creadas por el usuario (además de la membresía de "Quiero leer"). Eliminar una colección nunca elimina los libros que contiene.
⚠️ Si la sincronización de iCloud para colecciones está activada, las ediciones directas pueden no propagarse a otros dispositivos y pueden revertirse con una resincronización en la nube.
| Herramienta | Descripción | Parámetros |
|---|---|---|
| create_collection | Crea una nueva colección | title: str, details?: str |
| rename_collection | Renombra una colección creada por el usuario | collection_id: int, new_title: str |
| delete_collection | Elimina una colección creada por el usuario (los libros no se tocan) | collection_id: int |
| add_book_to_collection | Añade un libro a una colección (idempotente) | collection_id: int, book_id: int |
| remove_book_from_collection | Elimina un libro de una colección (idempotente) | collection_id: int, book_id: int |
Libros
| Herramienta | Descripción | Parámetros |
|---|---|---|
| list_all_books | Lista todos los libros | limit?: int (predeterminado: 200), offset?: int |
| search_books | Encuentra libros cuyo título o autor contenga la consulta, ignorando mayúsculas, acentos y estilo de comillas/guiones | query: str, limit?: int (predeterminado: 200), offset?: int |
| search_books_by_title | Busca libros por título (misma coincidencia, solo títulos) | title: str, limit?: int (predeterminado: 200), offset?: int |
| describe_book | Obtiene los detalles de un libro concreto (metadatos, progreso, número de anotaciones, descripción), si su texto es legible (ver más abajo) y un enlace "Abrir en Books" | book_id: int |
| list_annotations | Anotaciones de un libro en orden de lectura (id + texto + capítulo por fila, con tus notas) | book_id: int, limit?: int (predeterminado: 50), offset?: int |
| get_books_by_genre | Obtiene libros por género (coincidencia de subcadena) | genre: str, limit?: int (predeterminado: 200), offset?: int |
describe_book tiene una línea de Texto legible que indica si las herramientas de capítulos pueden leer el libro y, si no, por qué: yes (EPUB), un PDF, protegido por DRM, no descargado (solo en iCloud, un título de Apple Books Store o nunca descargado) o un archivo faltante. Se calcula a partir de los registros de la biblioteca y los metadatos del archivo, sin abrir el libro: leer un archivo que solo está en iCloud haría que macOS lo descargara.
Los enlaces Abrir en Books (ibooks://assetid/…) abren el libro en Apple Books. Aparecen en describe_book, describe_annotation, get_current_reading_position y en el recurso Leyendo actualmente.
Estado de lectura
| Herramienta | Descripción | Parámetros |
|---|---|---|
| get_books_in_progress | Obtiene los libros que se están leyendo actualmente | limit?: int (predeterminado: 200), offset?: int |
| get_finished_books | Obtiene los libros que se han terminado | limit?: int (predeterminado: 200), offset?: int |
| get_unstarted_books | Obtiene los libros aún no comenzados | limit?: int (predeterminado: 200), offset?: int |
| get_recently_read_books | Obtiene los libros leídos más recientemente | limit?: int (predeterminado: 10), offset?: int |
Anotaciones
| Herramienta | Descripción | Parámetros |
|---|---|---|
| list_all_annotations | Examina cada anotación agrupada por libro, de más reciente a más antigua, con tus notas | limit?: int (predeterminado: 50), offset?: int |
| recent_annotations | Obtiene las anotaciones más recientes (planas, con fecha + libro por fila) | limit?: int (predeterminado: 10), offset?: int |
| describe_annotation | Obtiene los detalles completos de una sola anotación, con el enlace "Abrir en Books" del libro | annotation_id: int |
| get_annotation_context | Ventana de texto alrededor de un subrayado (el párrafo en el que está), con el subrayado marcado «...» | annotation_id: int, chars_before?: int (predeterminado: 500), chars_after?: int (predeterminado: 500) |
| get_highlights_by_color | Subrayados de un color concreto, agrupados por libro | color: yellow|green|blue|pink|purple, limit?: int (predeterminado: 50), offset?: int, order_by?: newest|oldest |
| search_notes | Busca notas del usuario (muestra subrayado + nota en línea) | note: str, limit?: int (predeterminado: 50), offset?: int, order_by?: newest|oldest |
| search_annotations | Busca en subrayados + notas + texto circundante (muestra notas en línea) | text: str, limit?: int (predeterminado: 50), offset?: int, order_by?: newest|oldest |
| get_annotations_by_date_range | Anotaciones dentro de un rango de fechas, inclusive del día before, hora local (planas, con fecha + libro por fila) | after?: YYYY-MM-DD, before?: YYYY-MM-DD, limit?: int (predeterminado: 50), offset?: int, order_by?: newest|oldest |
Estadísticas de la biblioteca
| Herramienta | Descripción | Parámetros |
|---|---|---|
| get_library_stats | Obtiene un resumen de la biblioteca con estadísticas de lectura | None |
Contenido del libro
Solo funciona para EPUB sin DRM descargados en este Mac (libros importados, Project Gutenberg, Standard Ebooks, etc.). Las compras de Apple Books Store suelen estar protegidas por FairPlay y devuelven un error claro, y los libros solo en iCloud una pista de "no descargado"; la línea de "Texto legible" de describe_book lo indica de antemano.
| Herramienta | Descripción | Parámetros |
|---|---|---|
| list_book_chapters | Tabla de contenidos de un libro (títulos de capítulos, orden, anidamiento) | book_id: int |
| get_chapter_content | Contenido en texto plano de un capítulo, con corte opcional de offset + max_chars. chapter_id="current" (el predeterminado) lee el capítulo en el que estás en Apple Books | book_id: int, chapter_id?: str (predeterminado: "current"), offset?: int, max_chars?: int |
| get_current_reading_position | El capítulo donde el usuario dejó la lectura por última vez (mediante el marcador automático CFI de Apple Books), con un enlace "Abrir en Books" | book_id: int |
Recursos disponibles
Objetos de datos adjuntables accesibles desde el selector de recursos de Claude Desktop.
| Recurso | URI | Descripción |
|---|---|---|
| Leyendo actualmente | apple-books://currently-reading | Un puntero breve al libro que estás leyendo ahora mismo (el libro en progreso abierto más recientemente): título, autor, id del libro, progreso, un enlace "Abrir en Books", el capítulo donde lo dejaste con su id de capítulo (para EPUB sin DRM; en caso contrario, por qué no se puede leer su texto) y cuántos subrayados tienes en él. No incluye texto de capítulo ni subrayados; Claude los obtiene bajo demanda con get_chapter_content y list_annotations. Adjúntalo a cualquier conversación para centrar a Claude en tu lectura actual. |
Prompts disponibles
Flujos de trabajo de un clic, accesibles desde el selector de prompts de Claude Desktop.
| Prompt | Descripción | Argumentos |
|---|---|---|
| weekly_digest | Resume lo que he leído y subrayado en la última semana | days?: int (predeterminado: 7) |
| library_snapshot | Una reflexión sobre toda mi vida de lectura | None |
| revisit_book | Revisita tus notas y subrayados de un libro concreto | book_title: str |
Instalación
Requisitos
- macOS, con Apple Books abierto al menos una vez (crea la biblioteca que el servidor lee).
- Python 3.10 o más reciente. uvx y la extensión de Claude Desktop proporcionan uno si es necesario.
- Instalado con el servidor:
mcp>= 1.12 (< 2) andpy-apple-books>= 1.10 (< 2).
Usando uv (recomendado)
uvx ejecuta apple-books-mcp sin un paso de instalación separado.
brew install uv # for macos
uvx apple-books-mcp --version
La primera ejecución descarga unos 14 MB de dependencias y puede tardar hasta un minuto, que es aproximadamente lo que Claude espera a que un servidor se inicie. Ejecutar el comando anterior una vez en Terminal calienta la caché de uv antes de añadir el servidor a Claude. --version imprime las versiones de apple-books-mcp, mcp y py-apple-books que uvx resolvió.
Luego añade el servidor a Claude con la configuración JSON o el comando de Claude Code a continuación.
Extensión de Claude Desktop (.mcpb)
Claude Desktop también puede instalar apple-books-mcp como extensión, sin editar su configuración: descarga apple-books-mcp-<version>.mcpb desde la última versión de GitHub, haz doble clic en él (o abre Configuración → Extensiones → Instalar extensión… y elige el archivo) y haz clic en Instalar. Desktop instala uv y las dependencias bloqueadas por sí mismo. Permitir edición de colecciones en la configuración de la extensión hace lo mismo que --enable-writes.
En Claude gestionado por organizaciones (Team/Enterprise), los administradores pueden limitar las Extensiones de Desktop a una lista de permitidos o desactivarlas. Si se rechaza la instalación del .mcpb, usa la configuración JSON a continuación. Si los servidores MCP añadidos por el usuario también están desactivados por política, pide a tu administrador que apruebe la extensión.
Usando pip
Necesita Python 3.10 o más reciente (el python3 que incluye macOS es 3.9). Instala en un entorno virtual:
python3 -m venv ~/.venvs/apple-books-mcp
~/.venvs/apple-books-mcp/bin/pip install apple-books-mcp
~/.venvs/apple-books-mcp/bin/apple-books-mcp --version
Actualiza más tarde con ~/.venvs/apple-books-mcp/bin/pip install -U apple-books-mcp.
Usando Docker (obsoleto)
⚠️ La imagen de Docker está obsoleta y solo funciona parcialmente: un contenedor Linux no puede recibir el permiso de macOS, no puede acceder a los archivos de libros almacenados en iCloud Drive (por lo que las herramientas que leen texto de libros fallan) y no puede saber si Books está en ejecución (por lo que las escrituras de colecciones no son compatibles). Usa uvx en su lugar. Aún puede servir metadatos de la biblioteca y anotaciones. Monte el contenedor de Apple Books como solo lectura y mantenga stdin abierto con
-i. La imagen se ejecuta como un usuario sin privilegios y lee la biblioteca desde la misma ruta de montaje que antes:
docker run -i --rm -v ~/Library/Containers/com.apple.iBooksX/Data/Documents:/root/Library/Containers/com.apple.iBooksX/Data/Documents:ro ghcr.io/vgnshiyer/apple-books-mcp:latest
En una configuración de Claude, escriba su directorio de inicio completo: Claude no expande ~.
{
"mcpServers": {
"apple-books-mcp": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/Users/YOU/Library/Containers/com.apple.iBooksX/Data/Documents:/root/Library/Containers/com.apple.iBooksX/Data/Documents:ro",
"ghcr.io/vgnshiyer/apple-books-mcp:latest"
]
}
}
}
Solicitud de permiso en el primer inicio (macOS)
La primera vez que el servidor lee su biblioteca, macOS pregunta si el programa que lo inició puede "acceder a datos de otras aplicaciones", porque Apple Books guarda su biblioteca en su propio contenedor de aplicación (~/Library/Containers/com.apple.iBooksX/). Haga clic en Permitir.

macOS pregunta por el programa que lanza Claude, no por apple-books-mcp en sí:
uvxcon la configuración recomendada de Claude Desktop (el mensaje anterior);- el intérprete de Python con la configuración de pip;
claudecuando el servidor está configurado en Claude Code;- su aplicación de terminal cuando ejecuta el servidor manualmente.
El permiso pertenece a ese programa, por lo que cualquier otra cosa que lance también puede usarlo. apple-books-mcp solo lee la biblioteca, además de los archivos de libros para el texto de los capítulos; no cambia nada a menos que pase --enable-writes.
Para comprobarlo, ejecute uvx apple-books-mcp --doctor en Terminal: informa si el programa que lo ejecuta puede leer la biblioteca y, si no, cómo solucionarlo. Ejecutado de esa manera, verifica el permiso de su aplicación de terminal, que macOS pregunta por separado de uvx o Claude.
¿Le vuelve a preguntar después de una actualización? Los uv/uvx de Homebrew y las compilaciones de Python administradas por Homebrew o uv no están firmadas por un desarrollador registrado, por lo que después de brew upgrade uv (o una actualización de Python) macOS las trata como un programa nuevo y vuelve a preguntar. Haga clic en Permitir.
¿Hizo clic en "No permitir"? Las herramientas fallarán con "macOS denegó el acceso a la biblioteca de Apple Books". (Las versiones anteriores fallaban al inicio, con "No se encontraron archivos sqlite en … Abra Apple Books al menos una vez"). Este permiso no tiene interruptor en Configuración del Sistema. Para que le vuelvan a preguntar, ejecute:
tccutil reset SystemPolicyAppData
Esto borra las decisiones de "datos de otras aplicaciones" para todas las aplicaciones. Luego salga y vuelva a abrir Claude, y haga clic en Permitir. Agregar el programa (por ejemplo, /opt/homebrew/bin/uvx) a Acceso total al disco en Configuración del Sistema > Privacidad y seguridad también funciona, pero otorga mucho más acceso.
Configuración
Configuración de Claude Desktop
Salga de Claude Desktop (Cmd+Q) antes de editar ~/Library/Application Support/Claude/claude_desktop_config.json: Desktop reescribe el archivo mientras se ejecuta, por lo que los cambios realizados mientras está abierto pueden perderse.
Usando uvx (recomendado)
{
"mcpServers": {
"apple-books-mcp": {
"command": "uvx",
"args": [ "apple-books-mcp" ]
}
}
}
El apple-books-mcp simple sigue detectando nuevas versiones: uv verifica PyPI en busca de una versión más reciente siempre que su copia en caché del índice de paquetes tenga más de 10 minutos, que suele ser el caso cuando Claude se inicia. apple-books-mcp@latest no aporta nada sobre eso y hace que uv cree un entorno nuevo en cada inicio (3–12 s en lugar de aproximadamente 1 s).
Inicio más rápido o sin conexión
Debido a que uvx verifica PyPI al inicio, el servidor no se iniciará mientras PyPI sea inalcanzable. Para evitarlo:
- Ejecute
uv tool install apple-books-mcpuna vez. La misma configuración de uvx usará entonces la copia instalada y se iniciará en aproximadamente un segundo sin contactar a PyPI. Las copias instaladas no se actualizan solas: ejecuteuv tool upgrade apple-books-mcppara obtener nuevas versiones. - O use
"args": ["--offline", "apple-books-mcp"]para ejecutar la versión que uv ya tiene en caché (después de al menos una ejecución en línea), sin ningún acceso a la red.
Usando pip
Apunte Claude al script dentro del entorno virtual de Usando pip, con su directorio de inicio completo:
{
"mcpServers": {
"apple-books-mcp": {
"command": "/Users/YOU/.venvs/apple-books-mcp/bin/apple-books-mcp"
}
}
}
Configuración de Claude Code
Claude Code no lee la configuración de Claude Desktop. Agregue el servidor con:
claude mcp add --scope user apple-books-mcp -- uvx apple-books-mcp
y verifíquelo con /mcp.
Variables de entorno
Establézcalas en el "env" del servidor en la configuración de Claude (por ejemplo, "env": {"APPLE_BOOKS_MCP_THREADS": "4"} junto a "args"), o con claude mcp add -e NAME=value.
| Variable | Predeterminado | Qué hace |
|---|---|---|
APPLE_BOOKS_MCP_ENABLE_WRITES | desactivado | 1, true o yes activa la edición de colecciones, como --enable-writes. |
APPLE_BOOKS_MCP_THREADS | 8 | Cuántas llamadas a herramientas se ejecutan a la vez. 0 las ejecuta una a la vez en el bucle de eventos del servidor, como antes de 0.9. Los valores más bajos también limitan la memoria en bibliotecas muy grandes. |
APPLE_BOOKS_DATA_DIR | La propia carpeta de Apple Books | La carpeta Documents de Apple Books para leer (la que contiene BKLibrary/ y AEAnnotation/). |
APPLE_BOOKS_QUERY_TIMEOUT | 30 | Segundos que una consulta de biblioteca puede ejecutarse antes de detenerse; 0 significa sin límite. |
Solución de problemas
Dónde buscar
uvx apple-books-mcp --doctoren Terminal verifica las versiones, encuentra la biblioteca, explica los problemas de permisos de macOS e imprime recuentos de lo que leyó. Solo lee y nunca imprime títulos ni texto.~/Library/Logs/Claude/mcp-server-apple-books-mcp.log(llamado así por su clavemcpServers) tiene la salida propia del servidor, incluidos los rastreos de Python. Para más detalle, agregue"-v"a los argumentos: el servidor entonces registra su versión, las versiones de mcp y py-apple-books con las que se ejecuta, y cada solicitud.~/Library/Logs/Claude/mcp.logenumera fallos. Su línea "El servidor se inició y conectó correctamente" solo significa que el proceso se lanzó, no que funcione.~/Library/Logs/Claude/main.logregistra "Conectado a apple-books-mcp (N herramientas)" cuando una sesión de Claude Code o Cowork en Desktop cargó las herramientas.uvx apple-books-mcp --versionen Terminal muestra qué versiones resuelve uvx.
Problemas comunes
- "Conexión cerrada", "Servidor desconectado" o "El transporte del servidor se cerró inesperadamente": el servidor salió al inicio. Lea el último error en el rastreo en
mcp-server-apple-books-mcp.log.No module named 'mcp.server.fastmcp': uv eligió una versión de apple-books-mcp anterior a 0.8.1 junto con mcp 2.x, que eliminó la API sobre la que se construyeron esas versiones (en Python 3.12 y anteriores, uvx incluso podía retroceder a 0.1.2). 0.8.1 y versiones posteriores funcionan con Python 3.10+ y permanecen en mcp 1.x. Ejecuteuv cache clean apple-books-mcp, verifique queuvx apple-books-mcp --versioninforme 0.8.1 o posterior, luego salga y vuelva a abrir Claude.- Un error de
No module named 'server'delante del real es ruido de versiones anteriores a 0.8.4.
- "No listo después de 60 segundos" o "Tiempo de espera de solicitud agotado" al inicio: el primer lanzamiento aún estaba descargando e instalando dependencias. Ejecute
uvx apple-books-mcp --versionuna vez en Terminal y luego vuelva a abrir Claude. - "macOS denegó el acceso a la biblioteca de Apple Books" (versiones anteriores: "No se encontraron archivos sqlite en …"): consulte Solicitud de permiso en el primer inicio.
- "No se encontró la tienda de la biblioteca de Apple Books": Apple Books aún no ha creado su biblioteca para este usuario de macOS. Abra Books una vez y vuelva a intentarlo.
- Detener una respuesta mientras se ejecuta una herramienta: desde 0.9, una llamada a herramienta detenida se responde de inmediato y el servidor sigue atendiendo otras sesiones; el trabajo restante de la llamada termina en segundo plano (una escritura que ya había comenzado aún se completa; una que no había comenzado nunca se ejecuta).
- "Extensión apple-books-mcp no encontrada en las extensiones instaladas" en
main.loges inofensivo.
Conseguir que Claude reintente
- Chats de Claude Desktop: salga de Claude por completo (Cmd+Q) y vuelva a abrirlo. Un servidor que no se inició no se reintenta de otro modo.
- Sesiones de Claude Code y Cowork en Desktop: inicie una sesión nueva; cada sesión nueva reintenta el servidor.
- Claude Code: ejecute
/mcpy vuelva a conectar apple-books-mcp, o reinicie Claude Code.
Próximas funciones
- Exportación de destacados: los destacados y notas de un libro en orden de lectura, con encabezados de capítulo
- Menos herramientas y más amplias en 1.0, donde hoy varias se superponen
- Títulos de libros eliminados, donde las cachés de Apple Books aún los conservan
- Acceso al contenido PDF (actualmente solo EPUB)
Contribución
¡Gracias por considerar contribuir a este proyecto!
Desarrollo
Clone el repositorio y deje que uv cree el entorno virtual e instale el paquete con sus dependencias:
uv sync
uv run apple-books-mcp --version
uv run pytest
Para compilar la extensión de Claude Desktop localmente, instale el empaquetador fijado y luego compile:
npm ci --ignore-scripts --prefix mcpb
uv run python scripts/build_mcpb.py
Esto escribe dist/apple-books-mcp-<version>.mcpb y el dist/server.json del registro (--out DIR elige otra carpeta). python scripts/build_mcpb.py --smoke dist/apple-books-mcp-<version>.mcpb instala el paquete de la manera en que lo hace Claude Desktop y verifica el servidor que inicia.
Mantenedores: publicar una versión de GitHub ejecuta el flujo de trabajo de publicación, que verifica la etiqueta contra cada campo de versión, publica en PyPI, adjunta el .mcpb a la versión y publica en el Registro MCP.
Depuración
Los registros van a stderr, que Claude Desktop escribe en ~/Library/Logs/Claude/mcp-server-<name>.log. Sin indicadores, el servidor solo registra advertencias y errores; -v agrega detalles de inicio (versiones, si las escrituras están habilitadas) y una línea por solicitud; -vv agrega salida de depuración del SDK de MCP.
Con Claude Desktop
{
"mcpServers": {
"apple-books-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/apple-books-mcp/",
"run",
"apple-books-mcp",
"-v"
]
}
}
}
Con inspector
npx @modelcontextprotocol/inspector uv --directory /path/to/apple-books-mcp run apple-books-mcp
Apertura de problemas
Si encuentra un error, tiene una solicitud de función o quiere discutir algo relacionado con el proyecto, abra un problema en el repositorio de GitHub. Al abrir un problema, proporcione:
Informes de errores: describa el problema en detalle. Incluya pasos para reproducir el error si es posible, junto con mensajes de error o capturas de pantalla.
Solicitudes de funciones: explique claramente la nueva función que le gustaría ver agregada al proyecto. Proporcione contexto sobre por qué esta función sería beneficiosa.
Discusiones generales: siéntase libre de iniciar discusiones sobre temas más amplios relacionados con el proyecto.
Contribuir
1️⃣ Haga un fork del repositorio de GitHub https://github.com/vgnshiyer/apple-books-mcp
2️⃣ Cree una rama nueva para sus cambios (git checkout -b feature/mi-nueva-funcion).
3️⃣ Haga sus cambios y pruébelos a fondo.
4️⃣ Envíe sus cambios y abra una Solicitud de extracción a main.
Proporcione un título y una descripción claros de sus cambios.
Licencia
Apple Books MCP está licenciado bajo la licencia Apache 2.0. Consulte el archivo LICENSE para más detalles.