Token导航 LogoToken导航TokenDH.com
Tf Servidor MCP logo
开发工具未说明官方级别未说明来源级核验

Tf Servidor MCP

MCP Server

一个基于Node.js的后端开发框架,提供API开发、数据库迁移、种子数据生成和Docker容器化支持。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
API开发JavaScriptDocker

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Viniciusgigante19

提供方

Viniciusgigante19

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

第14课 - MCP服务器

📑 摘要

- 🧩 创建路线 - 📦 创建控制器 - ⛓️ 创建中间件 - 💻 创建命令 - 📦 项目迁移 - 🌱 项目种子

______________________________________________________________________

安装和运行

按照以下步骤通过 Docker 运行项目:

  1. 克隆仓库 :
   git clone https://github.com/luan-tavares/unifaat-frontend-project
  1. 进入工程文件夹 :
   cd unifaat-frontend-project
  1. 创建文件 .env 复制到项目根 .env.example:

> 无窗口:

   copy .env.example .env

> 没有Linux:

   cp .env.example .env
  1. 打开文件 .env 新创建并填写以下字段:
   POSTGRES_PASSWORD=123456
   JWT_SECRET=segredo
  1. 安装依赖关系 :
   npm install
  1. 在新终端中,运行预编译器
   npm run watch
  1. 使用Docker Compose上传应用程序:

> Docker传统作曲:

   docker-compose up --build

> Docker编写现代版:

   docker compose up --build
  1. 使用以下命令之一执行迁移:

> 容器(Docker Compose传统):

   docker-compose run --rm nodecli-container migrate

> 容器(Docker Compose moderno):

   docker compose run --rm nodecli-container migrate

> 主持人:

   node command migrate
  1. 使用以下命令之一运行种子 :

> 容器(Docker Compose传统):

   docker-compose run --rm nodecli-container seed

> 容器(Docker Compose moderno):

   docker compose run --rm nodecli-container seed

> 主持人:

   node command seed
  1. 在主机上全局安装螺丝并运行( 可选)
npm install -g vite
vite

______________________________________________________________________

访问

重要提示: 文件 ./Insomnia.yml 它应该用于失眠测试路线。

______________________________________________________________________

🚀 如何创建元素

🧩 创建路线

  1. 设定路径路径为 routes/web.jsroutes/api.js
  2. 将控制器关联到 app/Http/Controllers/

例子(routes/api.js):

router.get('/exemplo', MeuController);

📦 创建控制器

  1. 在创建新文件 app/Http/Controllers/...
export default async function(request, response) {
  ...
  # Minha Lógica
  ...
  response.status(200).json({"success": "Minha resposta"});
}

⛓️ 创建中间件

添加到 app/Http/Middlewares/例如:

export default async function (request, response, next) {
  console.log(`[${request.method}] ${request.url}`);
  next();
}

然后在路线上注册。

💻 创建命令

  1. 创建文件于 app/Commands/NomeDoCommand.js:
export default {
    name: 'nome-comando',
    description: 'minha descrição',
    arguments: {
        ...
    },

    handle: async function ({ argument1 }) {
        console.log(argument1);
        ...
        # Minha lógica
        ...
    }
}
  1. 通过终端执行:
node command meu-comando

______________________________________________________________________

📦 项目迁移

此项目的迁移负责以递增和日期排序的方式对数据库结构进行版本化。

📁 位置

所有迁移文件都保存在:

./database/migrations

📄 文件格式

每个迁移都遵循以下命名模式:

YYYY_MM_DD_HH_MM_SS_nome_descritivo.js

例如:

2025_06_07_00_00_00_create_roles_table.js

🧬 代码结构

每个迁移导出两种异步方法: up() e down().

import db from '../../config/db.js';

async function up() {
  await db.query(`
    CREATE TABLE IF NOT EXISTS roles (
        id SERIAL PRIMARY KEY,
        nome VARCHAR(155) UNIQUE NOT NULL,
        created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
    );
  `);
}

async function down() {
  await db.query(`DROP TABLE roles;`);
}

export default { up, down };

🛠 如何创建新的迁移

  1. 在开头设置描述性名称和当前时间
  2. 实现函数 up() e down()
  3. 文件另存为 ./database/migrations

🚀 执行迁移

执行是通过CLI完成的,并遵守时间戳顺序。

✅ 良好做法

  • 按变更迁移
  • 始终执行 down()
  • 不更改旧迁移

______________________________________________________________________

🌱 项目种子

种子是负责用初始或测试数据流行数据库的脚本。

📁 位置

./database/seeds/

🧾 档案名称

001_roles_and_users.js
002_outra_seed.js
...

🧬 文件结构

import bcrypt from 'bcrypt';
import UserModel from '../../app/Models/UserModel.js';

export default {
    up: async () => {

        const senha = "123456";

        await UserModel.bulkCreate([
            { nome: 'User1', email: 'user1@example.com', id_role: rows[0].id, senha: await bcrypt.hash(senha, 10) },
            { nome: 'User2', email: 'user2@example.com', id_role: rows[1].id, senha: await bcrypt.hash(senha, 10) },
        ])
    },

    down: async () => {
        await UserModel.destroy({
            where: {
                email: ['user1@example.com', 'user2@example.com']
            }
        });

       
    }
};

⚠️ 重要

像迁移和种子一样执行。

🚀 执行 Seeds

排序文件并运行 up()通过回滚支持 down().

✅ 良好做法

  • 每种子的小范围
  • 始终执行 down()
  • 不要重复使用电子邮件/名称
  • 不要在生产逻辑中使用

______________________________________________________________________

📦 使用的库

图书馆目的 |-----------------------|----------------------------------------------------------------------------| | express 用于创建API和HTTP服务器的Node.js网络框架。 | | chalk 图书馆以颜色和强调在终端的输出风格。 | | dotenv 从文件加载环境变量 .env 段落 process.env. | | pg Node.js 的 PostgreSQL 客户端,用于连接和执行查询。 | | sequelize ORM (Object-Relational Mapping) 对象关系映射 | | jsonwebtoken 生成和验证用于身份验证的JWT令牌。 | | bcrypt 加密和安全哈希密码比较。 | | swagger-jsdoc 从代码注释中的 JSDoc 生成 Swagger 规范。 | | swagger-ui-express 中间件,用于 Swagger 用户界面来记录和测试 API。 | | express-fileupload | 中间件来处理文件上传通过 multipart/form-data. | | minimist 解析命令行参数。 | | cli-table3 创建在终端中显示的格式化表。 | | axios 用于向外部 API 发出请求的 HTTP 客户端。 | | amqplib 通过 AMQP 协议与 RabbitMQ 通信的客户端库。 | | nodemon 检测到更改时自动重新启动应用程序的工具。 | | vite 用于现代Web项目的HMR(Hot Module Replacement)开发服务器和捆绑器;快速启动并立即重新加载更改。 |

______________________________________________________________________

📁 目录结构(根)

路径/文件夹描述
app/ 按域组织的应用程序的主要逻辑。
app/Commands/Comandos命令行界面 migrate, seed, dispatch执行于 node command .
app/Http/ 与HTTP请求相关的代码。
app/Http/Controllers/ 处理路由请求和响应的控制器。
app/Http/Middlewares/ 中间件,如身份验证,验证和HTTP记录器。
app/Models/ 序列表示和操作数据库表格的模型。
bootstrap/ 特定于项目的初始化,例如全局设置助手、常量和环境变量。
config/ RabbitMQ、Postgres、JWT、Sequelize、Swagger等服务的配置文件。
Core/ 系统的核心,就好像它是一个由我们自己创建的内部 lib。
database/migrations/ 创建/修改版本化表的脚本。
database/seeds/ 在银行流行的初始数据的脚本。
docker/ 每个应用程序服务的特定Dockerfiles。
docs/(可选) Swagger API JSON 文档。
node_modules/ 自动安装npm软件包。
public/ 公共档案(如 index.html直接通过HTTP服务。
routes/ 路由定义文件,通常按实体组织。
storage/ 应用程序的上传、临时文件或辅助文件夹。
.env 运行时加载的敏感环境变量。
.env.example模板de .env 让新 devs 复制和配置 。
.gitignore Git 应该忽略的文件和文件夹列表。
commanddos命令行界面入口(node command ...).
docker-compose.yml 容器编排文件(web,worker,postgres,rabbit等)。
Insomnia.yaml 导出用于导入Insomnia的API路径。
package.json 依赖列表、npm 脚本和项目元数据。
package-lock.json 锁定已安装的依赖关系的确切版本。
readme.md 项目的主要文档(此文件)。
server.js 应用程序的 HTTP 入口点。启动 Express 并启动 API。

______________________________________________________________________

🧾 如何创建新的 Swagger 文档

该项目使用 Swagger 以模块化方式记录 API。每个端点组都有一个文件 .js 目录内 docs/它们都是动态地联系在一起的。 SwaggerCore.

🗂 预期结构

docs/
├── 01-loginDoc.js
├── 02-colaboradorDoc.js
├── ...

🧑‍💻 创建新文档文件

  1. 以数字前缀和后缀命名文件 Doc.js
  2. 以 OpenAPI 格式(Swagger 3.0)导出对象
  3. 文件另存为 ./docs/
  4. Swagger 将自动挂载

______________________________________________________________________

🐳 容器和 Docker 映像

🔧 应用程序容器

容器Dockerfile功能内部端口
nodeweb-containerdocker/node24-web/Dockerfile.devAPI HTTP主体(server.js).3000
nodecli-containerdocker/node24-cli/Dockerfile 执行命令如 migrate, seed, dispatch短暂的集装箱。
nodevitehmr-containerdocker/node24-vite-hmr/DockerfileHMR Vite服务器5173
nodevitecompiler-containerdocker/node24-vite-compiler/DockerfileJS预编译器

🗄️ 基础设施容器

容器基本图像功能内部门
postgres-containerpostgres:15 应用程序使用的 PostgreSQL 数据库。5432 。
nginx-containernginx:1.25-alpine 反向代理,将HTTP API暴露出来。80 。

💾 恒定体积

使用目的
nodemodules-aula04-volumenodeweb, nodecli, nodevite 避免在每个构建中重新安装依赖关系。
pgdata-aula04-volumepostgres-containerPostgreSQL数据库的持久性

🌐 网络

所有容器都连接到自定义 Docker 网络:

app-network

🌍 户外露出的门

服务内部门外部门外部访问
NGINX808080http://localhost:8080
PostgreSQL54326789usado por客户端(养蜂人、dbeaver等)/ORM/CLI
节点Vite HMR51735173http://localhost:5173

目录标签

目录标签

API开发JavaScriptDocker本地部署Node.js数据库迁移后端框架

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP