Book Store MCP
Enables users to search and explore a bookstore catalog including books, authors, categories, stock, prices, and recommendations through natural language.
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/repositorieseapp/mcp. - A tool
searchKnowledgerepresenta 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
searchKnowledgecom 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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。