UNPKG

mcp-continuity-tool

Version:

A tool for maintaining context and continuity in MCP-based development across multiple chat sessions

255 lines (211 loc) 11.3 kB
# MCP Continuity Tool Uma ferramenta abrangente para implementar recursos de servidor Model Context Protocol (MCP), otimizando o gerenciamento de contexto e contagem de tokens em aplicações de IA. Este projeto fornece um servidor Node.js que expõe uma API para gerenciar o estado do projeto e gerar prompts de continuidade. ## Installation Instale o `mcp-continuity-tool` globalmente usando npm: ```bash npm install -g mcp-continuity-tool ``` (Observação: Você pode precisar de `sudo` para instalações globais, dependendo da sua configuração do npm.) ## Running the MCP Server Após a instalação, você pode iniciar o servidor MCP usando o seguinte comando: ```bash mcp-server ``` Por padrão, o servidor é executado na porta 3000. Você pode especificar uma porta diferente usando a opção `--port` ou `-p`: ```bash mcp-server --port 4000 ``` Ou usando a variável de ambiente `PORT`: ```bash PORT=4000 mcp-server ``` ### Using with NPX If you prefer not to install the package globally, you can run the server directly using `npx`: ```bash npx mcp-continuity-tool ``` This will download the latest version of the package and run the server. You can also pass arguments like `--port`: ```bash npx mcp-continuity-tool --port 4000 ``` ## Server API Endpoints O servidor MCP expõe os seguintes endpoints HTTP: ### `GET /` Retorna uma mensagem de boas-vindas indicando que o servidor está em execução. * **Example Request:** ```bash curl http://localhost:3000/ ``` * **Example Success Response (200 OK):** ```json { "message": "MCP Server is running. Use specific endpoints to interact." } ``` ### `POST /initialize` Inicializa um novo projeto ou configura um existente para continuidade MCP. Este endpoint chama a função `initializeEnvironment` dos scripts locais. * **Request Body (JSON):** * `repositoryUrl` (string, required): A URL ou identificador do repositório. * `workingDirectory` (string, optional): O subdiretório dentro do projeto para focar. Se não fornecido, o diretório atual onde o servidor foi iniciado será usado para algumas operações (como análise de repositório, se aplicável), e o `project-status.json` será salvo/lido a partir desse diretório. * **Example Request:** ```bash curl -X POST -H "Content-Type: application/json" -d '{ "repositoryUrl": "seu-nome/seu-repositorio", "workingDirectory": "src" }' http://localhost:3000/initialize ``` * **Example Success Response (200 OK):** ```json { "projectState": { "projectInfo": { "name": "seu-repositorio", "repository": "seu-nome/seu-repositorio", "workingDirectory": "src", "lastUpdated": "2023-10-28T12:00:00.000Z" }, "development": { "currentFile": "main.js", "currentComponent": "seu-repositorioComponent", "inProgress": { "type": "feature", "description": "Configuração inicial do projeto seu-repositorio", "remainingTasks": ["Análise de requisitos", "Planejamento da arquitetura"] } }, "components": { /* ... */ }, "context": { /* ... */ }, "mcpTools": { /* ... */ } }, "repoAnalysis": { "fileCount": 10, "categories": { "code": ["main.js", "utils.js"], "config": ["package.json"], "docs": ["README.md"], "web": [], "dirs": ["utils"] }, "analyzedDirectory": "/path/to/your/project/src" }, "continuityPrompt": "Use MCP toolset from https://github.com/Lucasdoreac/mcp-continuity-tool for development continuity:\n\nWorking on: seu-nome/seu-repositorio\nContext: Iniciar o desenvolvimento com foco na arquitetura principal do seu-repositorio\nStatus from project-status.json:\n{\n \"projectInfo\": {\n \"name\": \"seu-repositorio\",\n \"currentTask\": \"Configuração inicial do projeto seu-repositorio\",\n \"lastState\": \"Iniciar o desenvolvimento com foco na arquitetura principal do seu-repositorio\"\n },\n \"development\": {\n \"currentFile\": \"main.js\",\n \"inProgress\": \"feature: Configuração inicial do projeto seu-repositorio\"\n }\n}\n\nContinue development from this state using MCP server tools for context preservation." } ``` * **Error Responses:** * `400 Bad Request`: Se `repositoryUrl` estiver faltando no corpo da requisição ou se o JSON for inválido. * `500 Internal Server Error`: Se ocorrer um erro durante o processo de inicialização. ### `GET /state` Carrega e retorna o estado atual do projeto a partir de um arquivo `project-status.json`. * **Query Parameters:** * `projectPath` (string, optional): O caminho para o arquivo `project-status.json`. Padrão: `project-status.json` no diretório de trabalho do servidor. * **Example Request:** ```bash curl "http://localhost:3000/state?projectPath=src/my-project-status.json" ``` * **Example Success Response (200 OK):** ```json { "projectInfo": { "name": "seu-repositorio", "repository": "seu-nome/seu-repositorio", /* ... mais campos ... */ }, "development": { /* ... */ } /* ... mais seções do estado ... */ } ``` * **Error Responses:** * `500 Internal Server Error`: Se o arquivo de estado não puder ser lido ou se ocorrer outro erro. (Nota: se o arquivo não existir, um estado padrão é retornado com status 200). ### `POST /state` Atualiza campos específicos no estado do projeto e salva o arquivo `project-status.json`. * **Request Body (JSON):** * `updates` (object, required): Objeto contendo os campos a serem atualizados no estado. * `projectPath` (string, optional): O caminho para o arquivo `project-status.json`. Padrão: `project-status.json` no diretório de trabalho do servidor. * **Example Request:** ```bash curl -X POST -H "Content-Type: application/json" -d '{ "updates": { "development": { "currentFile": "new-file.js", "inProgress": { "description": "Trabalhando na nova funcionalidade" } }, "context": { "lastThought": "Isso está quase pronto." } }, "projectPath": "src/my-project-status.json" }' http://localhost:3000/state ``` * **Example Success Response (200 OK):** ```json { "projectInfo": { /* ... */ }, "development": { "currentFile": "new-file.js", "inProgress": { "description": "Trabalhando na nova funcionalidade" } /* ... outros campos preservados ou mesclados ... */ }, "context": { "lastThought": "Isso está quase pronto." }, /* ... mais seções do estado ... */ } ``` (A resposta é o objeto de estado completamente atualizado.) * **Error Responses:** * `400 Bad Request`: Se `updates` estiver faltando ou se o JSON for inválido. * `500 Internal Server Error`: Se ocorrer um erro durante a atualização ou salvamento. ### `GET /continuity-prompt` Gera um prompt de continuidade com base no estado atual do projeto. * **Query Parameters:** * `projectPath` (string, optional): O caminho para o arquivo `project-status.json` para carregar o estado. Padrão: `project-status.json`. * **Example Request:** ```bash curl "http://localhost:3000/continuity-prompt?projectPath=src/my-project-status.json" ``` * **Example Success Response (200 OK):** ```json { "prompt": "Use MCP toolset from https://github.com/Lucasdoreac/mcp-continuity-tool for development continuity:\n\nWorking on: seu-nome/seu-repositorio\nContext: Isso está quase pronto.\nStatus from project-status.json:\n{\n \"projectInfo\": {\n \"name\": \"seu-repositorio\",\n \"currentTask\": \"Trabalhando na nova funcionalidade\",\n \"lastState\": \"Isso está quase pronto.\"\n },\n \"development\": {\n \"currentFile\": \"new-file.js\",\n \"inProgress\": \"feature: Trabalhando na nova funcionalidade\"\n }\n}\n\nContinue development from this state using MCP server tools for context preservation." } ``` * **Error Responses:** * `500 Internal Server Error`: Se o estado não puder ser carregado ou se ocorrer um erro na geração do prompt. ## 🚀 Visão Geral dos Recursos (Expostos via API) - **Gerenciamento de Estado do Projeto:** Carregue, salve e atualize um arquivo `project-status.json` que rastreia o progresso do desenvolvimento, contexto e metadados do projeto. - **Configuração Automática:** Inicialize projetos rapidamente, detectando informações do repositório e configurando um estado inicial. - **Geração de Prompt de Continuidade:** Crie prompts formatados para ajudar a manter o contexto entre sessões de desenvolvimento com modelos de IA. - **Análise de Repositório:** Obtenha uma visão geral da estrutura de arquivos de um diretório de projeto. ## 📋 Como Funciona (Modelo Servidor-Cliente) 1. **Inicie o Servidor MCP:** Execute `mcp-server` no seu terminal. 2. **Use um Cliente HTTP (como `curl` ou Postman) ou integre com outras ferramentas:** * Para iniciar um novo projeto ou registrar um existente, envie uma requisição `POST /initialize`. Isso criará um arquivo `project-status.json` (se não existir) e retornará o estado inicial, análise do repositório e um prompt de continuidade. * Para obter o estado atual de um projeto, envie `GET /state` (especificando `projectPath` se não for o padrão). * À medida que você trabalha, atualize o estado enviando `POST /state` com as alterações. * Para gerar um prompt para a próxima sessão ou para resumir o estado atual, use `GET /continuity-prompt`. 3. **Integração com Modelos de IA:** Use os prompts gerados e as informações de estado para manter o contexto ao interagir com modelos de linguagem grandes como Claude, ChatGPT, etc. ## 🤝 Contribuindo Contribuições são bem-vindas! Veja `docs/INSTRUCTIONS.md` (a ser atualizado para o novo fluxo) para informações detalhadas sobre como contribuir. Por favor, foque em melhorar a funcionalidade do servidor e dos scripts Node.js. ## 📚 Recursos Adicionais (Podem precisar de atualização) - [Prompt Mínimo](docs/MINIMAL_PROMPT.md) - [Início Rápido](docs/QUICK_START.md) - [Configuração Automática](docs/AUTO_SETUP.md) - [Documentação Completa](docs/INSTRUCTIONS.md) - [Templates de Prompt](docs/PROMPT_TEMPLATE.md) - [Recursos e Referências](docs/RESOURCES.md) ## ⚙️ Automação Este projeto utiliza GitHub Actions para automação de tarefas: - Combinação automática de arquivos de instruções - Verificação de sintaxe e formatação - Testes automatizados (Jest) ## Publishing to NPM (For Maintainers) To publish this package to NPM or update an existing version: 1. Ensure you are logged in to NPM with appropriate permissions: ```bash npm login ``` 2. Increment the `version` in `package.json` as per Semantic Versioning (e.g., `1.0.1`, `1.1.0`, `2.0.0`). 3. Commit your changes to Git. 4. Run the publish command: ```bash npm publish ``` This process requires you to be the owner or a collaborator on the `mcp-continuity-tool` package on npmjs.com. ## 📄 Licença MIT License