UNPKG

mcp-tess

Version:

MCP server for executing Tess AI api

389 lines (303 loc) 10.5 kB
# MCP Tess Server Um servidor MCP (Model Context Protocol) para executar agentes da Tess AI. ## Funcionalidades - **Execute Agent**: Executa um agente da Tess com uma mensagem - **List Agents**: Lista todos os agentes disponíveis - **Get Agent**: Obtém informações detalhadas sobre um agente específico - **Create Memory**: Cria uma nova memória em uma coleção - **Update Memory**: Atualiza uma memória existente - **Delete Memory**: Deleta uma memória - **List Memory Collections**: Lista todas as coleções de memória - **Create Memory Collection**: Cria uma nova coleção de memória - **Update Memory Collection**: Atualiza uma coleção de memória - **Delete Memory Collection**: Deleta uma coleção de memória Ref: [Documentação da API Tess](https://docs.tess.pareto.io/api/introduction/) ## Configuração ### 1. Instalar dependências ```bash npm install ``` ### 2. Configurar API Key Configure sua chave da API da Tess através da variável de ambiente `TESS_API_KEY`: Para obter uma chave da API: 1. Acesse [Tess AI](https://tess.pareto.io) 2. Vá em User Menu → API Tokens 3. Clique em "Add New Token" ### 3. Compilar o projeto ```bash npm run build ``` ## Configuração do MCP Server O projeto suporta duas configurações diferentes: ### Configuração Local (Desenvolvimento) - **Nome**: `tess-test` - **Execução**: Código TypeScript direto via `tsx` - **Ideal para**: Desenvolvimento e testes ### Configuração de Produção - **Nome**: `tess` - **Execução**: Pacote npm publicado - **Ideal para**: Uso em produção ### Arquivo de Configuração Crie ou edite o arquivo `~/.cursor/mcp.json`: ```json { "mcpServers": { "tess-test": { "command": "npx", "args": ["tsx", "/CAMINHO/ABSOLUTO/PARA/SEU/PROJETO/src/index.ts"], "cwd": "/CAMINHO/ABSOLUTO/PARA/SEU/PROJETO", "env": { "TESS_API_KEY": "sua_chave_api_aqui" } }, "tess": { "command": "npx", "args": ["-y", "mcp-tess"], "env": { "TESS_API_KEY": "sua_chave_api_aqui" } } } } ``` **Importante:** - Substitua `/CAMINHO/ABSOLUTO/PARA/SEU/PROJETO` pelo caminho real do seu projeto - Substitua `sua_chave_api_aqui` pela sua chave da API da Tess - Use `tess-test` durante desenvolvimento - Use `tess` em produção (após publicar o pacote npm) ## Como criar uma nova Tool A arquitetura atual organiza os serviços por domínio dentro de `src/services/tess/`. Para criar uma nova tool, siga estes passos: ### 1. Definir tipos (se necessário) Se sua tool requer novos tipos, adicione-os em `src/services/tess/types.ts`: ```typescript export interface MinhaNovaResponse { message: string; data: any; } ``` ### 2. Criar ou atualizar arquivo de serviço Dependendo do domínio da sua nova tool, crie um novo arquivo ou atualize um existente: #### Para um novo domínio - Criar arquivo `src/services/tess/meuDominio.ts`: ```typescript import { tessApiClient, handleTessApiError } from "./base"; import { MinhaNovaResponse } from "./types"; export const minhaNovaFuncao = async ( parametro1: string, parametro2?: number ): Promise<MinhaNovaResponse> => { try { const response = await tessApiClient.post<MinhaNovaResponse>( "/meu-endpoint", { param1: parametro1, param2: parametro2 } ); return response.data; } catch (error) { throw handleTessApiError(error); } }; ``` #### Para um domínio existente - Atualizar arquivo existente: Se a funcionalidade se encaixa em um dos domínios existentes, adicione a nova função ao arquivo correspondente seguindo o mesmo padrão. ### 3. Exportar no index.ts do serviço Atualize `src/services/tess/index.ts` para exportar suas novas funções: ```typescript // ... existing code ... // Se criou um novo arquivo de domínio export * from "./meuDominio"; ``` ### 4. Registrar a tool no servidor principal Em `src/index.ts`, importe e registre a nova tool: ```typescript // 1. Importe a função import { minhaNovaFuncao } from "./services/tess/index.js"; // 2. Registre a tool no servidor server.tool( "minha-nova-tool", "Descrição clara da funcionalidade da tool", { parametro1: z.string().describe("Descrição detalhada do parâmetro 1"), parametro2: z.number().optional().describe("Descrição do parâmetro 2 (opcional)"), }, async (args) => { try { const { parametro1, parametro2 } = args; const result = await minhaNovaFuncao(parametro1, parametro2); return { content: [ { type: "text", text: JSON.stringify(result, null, 2) } ] }; } catch (error) { return { content: [ { type: "text", text: `Error executing minha nova tool: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } } ); ``` ### 5. Padrões recomendados **Estrutura de arquivos:** - Organize por domínio funcional (agents, memories, collections, etc.) - Use o cliente base `tessApiClient` para chamadas à API - Use `handleTessApiError` para tratamento consistente de erros - Mantenha tipos centralizados em `types.ts` **Nomenclatura:** - Tools: `kebab-case` (ex: `create-tess-memory`) - Funções: `camelCase` (ex: `createTessMemory`) - Interfaces: `PascalCase` (ex: `CreateMemoryResponse`) - Arquivos: `camelCase` (ex: `agents.ts`, `myDomain.ts`) **Tratamento de erros:** - Sempre use try/catch nos serviços - Use `handleTessApiError` para erros da API Tess - Retorne mensagens de erro claras nas tools **Validação de parâmetros:** - Use Zod para validação nas tools - Adicione descrições claras para cada parâmetro - Marque parâmetros opcionais corretamente ## Como testar ### Método 1: Teste direto com Node.js ```bash # Executar o servidor em desenvolvimento npm run dev ``` ### Método 2: Teste com Claude Desktop/Cursor (Recomendado) 1. **Configure o arquivo MCP** conforme mostrado na seção "Configuração do MCP Server" 2. **Reinicie a IDE** 3. **Teste o mcp server:** Você pode usar comandos como: - "Liste todos os agentes da Tess disponíveis" - "Execute o agente ID 123 com a mensagem 'Olá, como você pode me ajudar?'" - "Mostre detalhes do agente ID 456" - "Crie uma nova memória com o conteúdo 'Esta é uma memória de teste'" ### Método 3: Teste com MCP Inspector (Para desenvolvimento) ```bash # Instalar o MCP Inspector globalmente npm install -g @modelcontextprotocol/inspector # Executar o inspector mcp-inspector npx tsx src/index.ts ``` ## Estrutura do Projeto ``` mcp-tess/ ├── src/ │ ├── index.ts # Servidor MCP principal - registro das tools │ └── services/ │ └── tess/ # Serviços da API Tess organizados por domínio │ ├── index.ts # Exportações centralizadas │ ├── types.ts # Tipos e interfaces compartilhadas │ ├── config.ts # Configurações da API │ ├── base.ts # Cliente HTTP base e utilitários │ ├── agents.ts # Funcionalidades relacionadas aos agentes │ ├── memories.ts # Funcionalidades de memórias │ └── collections.ts # Funcionalidades de coleções ├── dist/ # Código compilado ├── package.json ├── tsconfig.json └── README.md ``` ## Exemplos de Uso ### Executar um agente ```json { "tool": "Execute Agent", "arguments": { "agentId": 123, "message": "Qual é a previsão do tempo para hoje?", "temperature": "0.5", "model": "tess-5", "fileIds": [1, 2], "memoryCollections": [10, 15] } } ``` ### Listar agentes ```json { "tool": "List Agents", "arguments": { "search": "assistente", "type": "chat", "page": 1, "perPage": 5 } } ``` ### Criar uma memória ```json { "tool": "Create Memory", "arguments": { "memory": "Esta é uma informação importante que deve ser lembrada", "collectionId": 1 } } ``` ### Gerenciar coleções de memória ```json { "tool": "Create Memory Collection", "arguments": { "name": "Projetos importantes" } } ``` ## Parâmetros da API Tess ### Execute Agent - `agentId` (obrigatório): ID do agente da Tess - `message` (obrigatório): Mensagem para enviar ao agente - `rootId` (opcional): ID raiz da execução para criar uma conversa - `temperature` (opcional): Temperatura do modelo (padrão: "1") - `model` (opcional): Modelo a usar (padrão: "tess-5") - `tools` (opcional): Configuração de ferramentas (padrão: "no-tools") - `fileIds` (opcional): Array de IDs de arquivos para anexar - `memoryCollections` (opcional): Array de IDs de coleções de memória para anexar ### Memory Tools - `Create Memory`: Cria nova memória (max 32.000 caracteres) - `Update Memory`: Atualiza memória existente - `Delete Memory`: Remove uma memória - `List Memory Collections`: Lista coleções com paginação - `Create Memory Collection`: Cria nova coleção - `Update Memory Collection`: Atualiza nome da coleção - `Delete Memory Collection`: Remove coleção inteira ## Troubleshooting ### Erro: "Tess API error" - Verifique se sua API key está correta - Confirme se você tem acesso aos agentes que está tentando usar - Verifique se o agentId existe ### Servidor não aparece no Claude Desktop 1. Verifique se o caminho no arquivo MCP está correto e absoluto 2. Certifique-se de que a API key está configurada 3. Para desenvolvimento, use a configuração `tess-test` 4. Para produção, publique o pacote e use a configuração `tess` 5. Reinicie completamente o Claude Desktop 6. Verifique os logs do MCP server ### Erro de sintaxe TypeScript - Execute `npm run build` para verificar erros de compilação - Certifique-se de que todas as dependências estão instaladas ### Configuração Local vs Produção - **Local (`tess-test`)**: Execute `npx tsx src/index.ts` no diretório do projeto - **Produção (`tess`)**: Execute `npx -y mcp-tess` (requer publicação no npm) ## Desenvolvimento ```bash # Executar em modo desenvolvimento (com hot reload) npm run dev # Compilar npm run build # Executar versão compilada npm start ``` ## Documentação da API Tess Para mais informações sobre a API da Tess, consulte: - [Documentação da API Tess](https://docs.tess.pareto.io/api/introduction/)