EngageGov内容MCP服务器
MCP(Model Context Protocol)服务器。NET专注于安全性,最佳实践和清洁架构。该项目演示了遵循 SOLID 和 Clean Code 原则的现代服务器。
📋 特点
- 清洁建筑(Clean Architecture)明确分层责任
- SOLID原则结构良好且可维护的代码
- 安全实施多层安全
- 码头工人使用 Alpine Linux 优化的图像
- 日志记录使用 Serilog 进行强大的配置
- 睾丸使用 xUnit 进行单元测试
- API RESTful记录良好的端点
- 健康检查应用健康监测
🏗️ 建筑
该项目遵循分层的清洁架构(Clean Architecture):
EngageGovContentMcp/
├── src/
│ ├── EngageGovContentMcp.Domain/ # Entidades de domínio e lógica de negócio
│ │ ├── Common/ # Classes base compartilhadas
│ │ ├── Entities/ # Entidades do domínio
│ │ └── Exceptions/ # Exceções do domínio
│ │
│ ├── EngageGovContentMcp.Application/ # Casos de uso e interfaces
│ │ ├── DTOs/ # Data Transfer Objects
│ │ ├── Interfaces/ # Contratos de serviços
│ │ └── Services/ # Implementações de serviços
│ │
│ ├── EngageGovContentMcp.Infrastructure/ # Implementações de infraestrutura
│ │ ├── Data/ # Contexto do banco de dados
│ │ └── Repositories/ # Implementações de repositórios
│ │
│ └── EngageGovContentMcp.Server/ # Camada de apresentação (API)
│ ├── Controllers/ # Controllers da API
│ └── Middleware/ # Middlewares customizados
│
└── tests/
└── EngageGovContentMcp.UnitTests/ # Testes unitários应用原则
SOLID
- S责任:每个班级都有一个责任。
- 哦pen/Closed:打开以进行扩展,关闭以进行修改
- Liskov Substitution:用衍生物替换基类型
- 一、Interface Segregation: 客户端特定接口
- Dependency Inversion:依赖于抽象,而不是实现
清洁代码
- 描述性和有意义的名称
- 小而集中的功能
- 仅在必要时发表评论
- 适当的错误处理
- 一致的格式
🔒 安全资源
安全标头
X-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=blockReferrer-Policy: no-referrerContent-Security-Policy
实施的做法
- Docker 容器中的非 root 用户
- 验证数据输入
- 集中处理例外
- HTTPS重定向
- 健康检查配置
- 结构化日志
- 可配置的 CORS
🚀 如何执行
先决条件
- .NET 9.0 SDK
- 码头工人(可选)
- Docker Compose(可选)
在本地运行
# Clone o repositório
git clone https://github.com/lucas-explica/engage-gov-content-mcp.git
cd engage-gov-content-mcp
# Restaurar dependências
dotnet restore
# Compilar o projeto
dotnet build
# Executar os testes
dotnet test
# Executar o servidor
cd src/EngageGovContentMcp.Server
dotnet run服务器将可在 http://localhost:5000 哦 https://localhost:5001.
使用 Docker 运行
# Build da imagem
docker build -t engagegovcontent-mcp .
# Executar o container
docker run -p 8080:8080 --name engagegovcontent-mcp engagegovcontent-mcpExecutar com Docker编写
# Iniciar os serviços
docker-compose up -d
# Verificar logs
docker-compose logs -f
# Parar os serviços
docker-compose down服务器将可在 http://localhost:8080.
📚 API终点
内容项目
列出所有项目
GET /api/contentitems按 ID 获取项目
GET /api/contentitems/{id}列出已发布项目
GET /api/contentitems/published按类别列出
GET /api/contentitems/category/{category}创建新项目
POST /api/contentitems
Content-Type: application/json
{
"title": "Título do Conteúdo",
"description": "Descrição do conteúdo",
"content": "Conteúdo completo",
"category": "Categoria"
}更新项目
PUT /api/contentitems/{id}
Content-Type: application/json
{
"title": "Novo Título",
"description": "Nova descrição",
"content": "Novo conteúdo",
"category": "Nova categoria"
}Tibetan物品
DELETE /api/contentitems/{id}公共项目
POST /api/contentitems/{id}/publish非公开项目
POST /api/contentitems/{id}/unpublish健康检查
GET /health服务信息
GET /🧪 睾丸
该项目包括使用 xUnit 进行单元测试。要执行测试:
# Executar todos os testes
dotnet test
# Executar com cobertura de código
dotnet test /p:CollectCoverage=true📊 日志记录
该项目使用Serilog进行结构化日志记录。日志记录在 :
- 控制台(开发)
- 旋转文件在
logs/(生产)
设置为 appsettings.json:
{
"Serilog": {
"MinimumLevel": {
"Default": "Information"
}
}
}🔧 配置
环境变量
ASPNETCORE_ENVIRONMENT:定义环境(开发、分期、生产)ASPNETCORE_URLS:URL解除绑定do servidor
应用程序参数
{
"Cors": {
"AllowedOrigins": ["http://localhost:3000"]
},
"Security": {
"EnableRateLimiting": true,
"RateLimitRequests": 100,
"RateLimitPeriodSeconds": 60
}
}🐳 Docker 详情
基础图像
- 构建:
mcr.microsoft.com/dotnet/sdk:9.0-alpine - 运行时:
mcr.microsoft.com/dotnet/aspnet:9.0-alpine
优化
- 多阶段构建以减少图像大小
- 非 root 安全用户
- 健康检查集成
- Alpine Linux 图像( 轻)
大致大小
- 最终图像:~100MB
🤝 贡献
欢迎捐款!请:
- 分叉工程
- 为您的功能创建一个分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推动一个分支(
git push origin feature/AmazingFeature) - Abra um Pull请求
📝 许可证
这个项目是根据麻省理工学院许可证授权的 - 查看文件 许可证 为了细节。
👨💻 作者
卢卡斯·德·利马
📞 支持
有关支持和疑问,请在 GitHub 仓库中打开一个问题。
______________________________________________________________________
背板本项目是一个 MCP 演示服务器,实现开发最佳实践。NET,包括 Clean Architecture、SOLID、安全和 Docker。
