sapiens-mcp 1.1.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- package/dist/tools/repertorio.js +16 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -36,7 +36,7 @@ const TOOLS = {
|
|
|
36
36
|
handler: meta,
|
|
37
37
|
},
|
|
38
38
|
sapiens_repertorio: {
|
|
39
|
-
description: "Acervo pessoal de filme/série/anime/jogo. Reads: list (
|
|
39
|
+
description: "Acervo pessoal de filme/série/anime/jogo/livro/música (Repertório, o segundo cérebro do user). Reads: list (filtros mediaType/status), search (texto em title/genres/tags), get (detalhe), lists (listas curadas), popArticles, resolve (busca capa/ano/id nos providers server-side: OMDb/IGDB-Twitch/AniList/Google Books/iTunes). Mutations (qualquer logado, mexem no PRÓPRIO acervo): add_item, update_item (status/rating/tags/note/isPublic), remove_item. CAPTURA ONE-SHOT: quando o user fala natural ('acabei de ver Duna 2, nota 9', 'tô jogando Hollow Knight', 'li tal livro'), faça add_item SEM questionário: infira mediaType e status (assisti/zerei/li=completed, quero=backlog, tô jogando/vendo=active, dropei=dropped), pegue rating se citado; (2) chame action=resolve {mediaType, query} pra pegar capa+ano+externalId e grave add_item com o source do candidato (twitch/anilist/googlebooks/itunes, ou manual+imdbID pra filme/série do OMDb) + posterUrl; (3) se resolve vier providerKeyMissing ou vazio, grave source='manual' + UUID em externalId com title/year/genres/overview que você conhece. Upsert/dedup por (userId, source, externalId). Só pergunte se o título for ambíguo.",
|
|
40
40
|
schema: repertorioSchema,
|
|
41
41
|
handler: repertorio,
|
|
42
42
|
},
|
|
@@ -101,7 +101,7 @@ const TOOLS = {
|
|
|
101
101
|
handler: video,
|
|
102
102
|
},
|
|
103
103
|
};
|
|
104
|
-
const server = new Server({ name: "mcp-sapiens", version: "1.
|
|
104
|
+
const server = new Server({ name: "mcp-sapiens", version: "1.8.0" }, { capabilities: { tools: {} } });
|
|
105
105
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
106
106
|
tools: Object.entries(TOOLS).map(([name, t]) => ({
|
|
107
107
|
name,
|
|
@@ -134,4 +134,4 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
134
134
|
});
|
|
135
135
|
const transport = new StdioServerTransport();
|
|
136
136
|
await server.connect(transport);
|
|
137
|
-
console.error("mcp-sapiens v1.
|
|
137
|
+
console.error("mcp-sapiens v1.8.0 rodando via stdio (16 tools)");
|
package/dist/tools/repertorio.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { convexMutation, convexQuery, getSessionToken, } from "../convexClient.js";
|
|
2
|
+
import { convexAction, convexMutation, convexQuery, getSessionToken, } from "../convexClient.js";
|
|
3
3
|
/**
|
|
4
4
|
* Acesso ao Repertório do Sapiens (acervo pessoal de filme/série/anime/jogo/livro/música).
|
|
5
5
|
*
|
|
@@ -29,6 +29,7 @@ export const repertorioSchema = z.object({
|
|
|
29
29
|
"get",
|
|
30
30
|
"lists",
|
|
31
31
|
"popArticles",
|
|
32
|
+
"resolve",
|
|
32
33
|
"add_item",
|
|
33
34
|
"update_item",
|
|
34
35
|
"remove_item",
|
|
@@ -106,6 +107,20 @@ export async function repertorio(args) {
|
|
|
106
107
|
})),
|
|
107
108
|
};
|
|
108
109
|
}
|
|
110
|
+
// resolve: busca metadado (capa/ano/id) nos providers server-side, com as
|
|
111
|
+
// keys que vivem no env do Convex. Faz a captura por conversa de filme/série/
|
|
112
|
+
// jogo entrar COM capa (anime/livro/música já vêm keyless). Devolve
|
|
113
|
+
// { candidates: [...], providerKeyMissing } pro Claude escolher e gravar via
|
|
114
|
+
// add_item; se providerKeyMissing, cai em manual.
|
|
115
|
+
if (args.action === "resolve") {
|
|
116
|
+
const sessionToken = getSessionToken();
|
|
117
|
+
return await convexAction("repertorioResolve:resolveMedia", {
|
|
118
|
+
sessionToken,
|
|
119
|
+
mediaType: need(args.mediaType, "mediaType"),
|
|
120
|
+
query: need(args.query, "query"),
|
|
121
|
+
limit: 8,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
109
124
|
// Mutations: sempre exigem sessionToken
|
|
110
125
|
if (args.action === "add_item" ||
|
|
111
126
|
args.action === "update_item" ||
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "MCP server pra operar o Sapiens Sintéticos (sapiensinteticos.com) pelo Claude Code: gerar imagem, escrever artigo, voz, música e mais, na sua conta. Login pelo código de sapiensinteticos.com/conectar-claude.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|