Book Store MCP

Book Store MCP

Enables users to search and explore a bookstore catalog including books, authors, categories, stock, prices, and recommendations through natural language.

Category
Visit Server

README

Book Store MCP

PoC de um ChatGPT App construído sobre o Model Context Protocol (MCP). O projeto expõe um MCP Server com ferramentas voltadas a uma livraria, para que o ChatGPT possa consultar livros, autores, estoque, preços e, no futuro, uma base de conhecimento com RAG.

O objetivo desta base é manter a arquitetura simples: o servidor MCP expõe as tools, os services concentram a regra de negócio e os repositories acessam o Supabase.

Visão Geral

Usuário
   │
   ▼
ChatGPT
   │
   ▼
MCP Server (FastMCP)
   │
   ├── Services
   │      └── regra de negócio
   │
   └── Repositories
          └── acesso ao Supabase

Princípios da arquitetura:

  • As tools apenas validam entrada e delegam para services.
  • Os services concentram a lógica de negócio.
  • Os repositories são a única camada que conversa com o banco.
  • A decisão de qual tool usar é responsabilidade do ChatGPT.

Status Atual

  • As tools estruturadas do catálogo estão implementadas de ponta a ponta.
  • O projeto já organiza o código em app/core, app/models, app/services, app/repositories e app/mcp.
  • A tool searchKnowledge representa a futura camada de RAG e faz parte da visão da PoC, mas ainda está em evolução.
  • Autenticação, observabilidade completa e versionamento formal de schema são tratados como próximos passos, não como requisito desta etapa.

Estrutura Do Projeto

book-store-mcp/
├── app/
│   ├── core/          configuração, cliente Supabase, container e exceções
│   ├── mcp/           servidor FastMCP e definição das tools
│   ├── models/        modelos Pydantic de domínio, entrada e saída
│   ├── repositories/  acesso a dados via Supabase
│   ├── rag/           base para ingestão e busca semântica
│   └── services/      regra de negócio
├── supabase/
│   └── migrations/    schema, políticas RLS e seed data
├── tests/             testes de serviços e repositórios
├── pyproject.toml
└── README.md

Tecnologias

Tecnologia Uso
Python 3.13+ Linguagem
MCP Python SDK (FastMCP) Servidor MCP e transporte HTTP
Supabase (Postgres) Persistência dos dados estruturados
pgvector Base para a camada vetorial/RAG
Pytest Testes
uv Gerenciamento do ambiente e execução local

Requisitos

  • Python 3.13 ou superior
  • uv
  • Um projeto Supabase com URL e chave anon/publishable

Configuração

# Instala dependências de desenvolvimento
uv sync --extra dev

# Cria o arquivo de ambiente
cp .env.example .env

Depois, preencha o .env com as variáveis do Supabase e com as configurações do servidor MCP, se necessário.

Banco De Dados

As migrações ficam em supabase/migrations/:

Migração Conteúdo
..._init_schema.sql tabelas, índices, restrições e extensões
..._rls_policies.sql RLS habilitado e políticas públicas de leitura
..._seed_data.sql dados iniciais de livros, autores, editoras, categorias, estoque e avaliações

Você pode aplicar as migrações com o Supabase CLI:

supabase db push

Ou executar os scripts diretamente no editor SQL do Supabase, na ordem em que foram criados.

Como Executar

uv run book-store-mcp
# ou
uv run python -m app.mcp.server

Por padrão, o servidor sobe em http://127.0.0.1:8000 usando transporte HTTP compatível com MCP. O comportamento pode ser ajustado por meio de variáveis de ambiente como MCP_HOST, MCP_PORT e MCP_TRANSPORT.

Para inspecionar a aplicação com a ferramenta de desenvolvimento do MCP:

uv run mcp dev app/mcp/server.py

Tools

Tool Descrição
searchBooks Busca livros por título ou palavra-chave.
searchAuthors Busca autores por nome ou a partir do título de um livro.
searchPublishers Busca ou lista editoras.
searchCategories Busca ou lista categorias e gêneros.
searchByISBN Localiza um livro pelo ISBN.
getBookSynopsis Retorna a sinopse de um livro.
getBookReviews Retorna avaliações e nota média de um livro.
recommendBooks Recomenda livros por autor, categoria ou gênero.
findSimilarBooks Encontra livros semelhantes a um título informado.
checkStock Consulta disponibilidade e quantidade em estoque.
getBookPrice Consulta o preço de um livro.
getBestSellers Lista os livros mais vendidos.
getNewReleases Lista os lançamentos mais recentes.
searchKnowledge Consulta a base de conhecimento via RAG.

As tools retornam um JSON estruturado em caso de sucesso e um objeto de erro previsível em caso de falha, por exemplo:

{"error": "BOOK_NOT_FOUND", "message": "..."}

Testes

uv run pytest

Os testes cobrem as camadas de service e repository com dependências falsas ou mockadas, sem exigir banco de dados ao rodar localmente.

Próximos Passos

  • Evoluir a tool searchKnowledge com ingestão e busca semântica.
  • Adicionar avaliação automática das tools com golden set.
  • Incluir observabilidade mínima por chamada de tool.
  • Definir uma estratégia de autenticação quando o servidor sair do ambiente de desenvolvimento.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured