魔术卡API平台
概述
一个现代的企业级RESTful API平台,具有JWT身份验证、灵活的双持久性架构,以及通过与本地LLM支持的模型上下文协议(MCP)集成的人工智能驱动的自然语言处理。这个全栈解决方案包括多个客户端接口(Console、WPF、.NET MAUI),以实现全面的跨平台可访问性。
主要特点
🔐 身份验证和安全
- JWT(JSON Web令牌)身份验证:安全的基于令牌的身份验证系统
- 承载令牌授权:行业标准安全实施
- 可配置的过期和安全参数
💾 双持久层
- mysql数据库:生产就绪关系数据库支持
- 内存存储:快速开发和测试能力
- 动态切换:运行时持久性模式切换,无需重新启动
- 开闭原则:遵循SOLID原则的清洁架构
🤖 人工智能集成(MCP协议)
- 模型上下文协议(MCP):用于AI集成的标准JSON-RPC架构
- 本地LLM支持:与LM Studio集成,实现以隐私为中心的人工智能操作
- 自然语言查询:使用会话语言查询魔术卡数据
- 客户端-服务器体系结构:模块化MCP实现可扩展性
📱 多平台接口
- 控制台应用程序:用于快速操作的命令行界面
- WPF桌面:丰富的Windows桌面应用程序
- .NET MAUI:跨平台移动和桌面支持(Windows、Android、iOS、macOS)
📊 数据管理
- Kaggle数据集集成:自动加载魔法:收集卡片数据
- CRUD操作:完成创建、读取、更新、删除功能
- RESTful端点:所有操作的标准HTTP方法
📚 API 文档
- Swagger/OpenAPI:交互式API文档和测试界面
- 全面的端点文档
- 内置测试功能
建筑
ProyectoFinal-EV1-BigData/
├── src/
│ ├── Backend/
│ │ ├── API/ # RESTful API endpoints
│ │ │ ├── Controllers/ # API controllers
│ │ │ ├── Auth/ # JWT authentication services
│ │ │ ├── Services/ # Business logic services
│ │ │ └── Program.cs # Application entry point
│ │ ├── MCP/ # Model Context Protocol implementation
│ │ │ ├── Client/ # MCP client orchestrator
│ │ │ └── Server/ # MCP server (tools & data)
│ │ └── Persistence/ # Data access layer
│ │ ├── Interfaces/ # Repository interfaces
│ │ ├── Models/ # Data models
│ │ ├── Memory/ # In-memory implementation
│ │ └── MySQL/ # MySQL implementation
│ └── Frontend/ # Client applications
│ ├── Console/ # CLI application
│ ├── WPF/ # Windows desktop app
│ └── MAUI/ # Cross-platform app
└── config/ # Configuration files技术栈
- 后端:ASP。NET核心8.0
- 语言:C#12
- 认证:JWT承载代币
- 数据库:MySQL/内存中
- 人工智能集成:模型上下文协议(JSON-RPC)
- LLM:本地LM工作室集成
- API 文档:Swagger/OpenAPI
- 桌面:WPF(Windows演示文稿基础)
- 移动/跨平台: .毛伊网
- 体系结构模式:存储库模式,依赖注入
入门指南
先决条件
- .NET 8.0 SDK或更高版本
- MySQL服务器(可选,用于数据库持久化)
- LM Studio(可选,用于AI功能)
- Visual Studio 2022或JetBrains Rider
安装
- 克隆仓库
git clone https://github.com/Phosky71/ProyectoFinal-EV1-BigData.git
cd ProyectoFinal-EV1-BigData- 配置应用程序
编辑 src/Backend/API/appsettings.json:
{
"Persistence": {
"Mode": "Memory" // or "MySQL"
},
"ConnectionStrings": {
"MySQL": "Server=localhost;Database=proyecto_final;User=root;Password=root;"
},
"Jwt": {
"Secret": "your-secret-key-here",
"Issuer": "ProyectoFinalEV1",
"Audience": "ProyectoFinalEV1Users",
"ExpirationMinutes": 60
},
"Kaggle": {
"DatasetPath": "Data/cards.csv"
}
}- 构建解决方案
dotnet build- 运行API
cd src/Backend/API
dotnet runAPI将于 http://localhost:53620
- 访问Swagger用户界面
引导到 http://localhost:53620 在浏览器中访问交互式API文档。
使用MySQL运行
- 创建数据库
CREATE DATABASE proyecto_final;- 更新应用程序设置
{
"Persistence": {
"Mode": "MySQL"
}
}- 运行API -表将自动创建
为AI功能设置LM Studio
- 下载并安装 LM 工作室
- 加载您首选的本地LLM模型
- 启动本地服务器(默认:
http://localhost:1234) - API将自动连接到LM Studio进行自然语言处理
API终点
认证
POST /api/auth/login-验证并接收JWT令牌POST /api/auth/register-注册新用户
卡片
GET /api/cards-获取所有卡片GET /api/cards/{id}-凭身份证取卡POST /api/cards-创建新卡(需要身份验证)PUT /api/cards/{id}-更新卡(需要身份验证)DELETE /api/cards/{id}-删除卡(需要身份验证)
MCP(人工智能集成)
POST /api/mcp/query-使用AI的自然语言查询GET /api/mcp/tools-列出可用的MCP工具
配置
POST /api/config/persistence-动态切换持久模式GET /api/config/status-获取当前配置状态
使用示例
认证
curl -X POST http://localhost:53620/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"password"}'查询卡片
curl -X GET http://localhost:53620/api/cards \
-H "Authorization: Bearer YOUR_JWT_TOKEN"自然语言查询(AI)
curl -X POST http://localhost:53620/api/mcp/query \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{"query":"Show me all blue mana cards with flying"}'客户端应用程序
控制台应用程序
用于API交互和测试的简单命令行界面。
WPF桌面应用程序
功能齐全的Windows桌面客户端,具有丰富的UI和完整的CRUD操作。
.NET MAUI应用程序
跨平台移动和桌面应用程序支持:
- 视窗
- 安卓
- iOS
- macOS
配置选项
持久模式
- 记忆:用于开发的快速易失性存储
- MySQL:生产级关系数据库
JWT配置
- 令牌签名密钥
- 令牌过期时间
- 发行人和受众索赔
LLM集成
- 本地LM Studio端点
- 选型及参数
- 超时和重试设置
发展
项目结构
该解决方案遵循干净的架构原则:
- 关注点分离:层之间的边界清晰
- 依赖注入:组件之间的耦合松动
- 存储库模式:抽象数据访问
- 开闭原则:易于扩展,无需修改
测试
要运行测试,请执行以下操作:
dotnet test贡献
欢迎投稿!请随时提交拉取请求。
许可证
该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。
要点
- ✅ 免费使用:允许商业和私人使用
- ✅ 修改和分发:创作衍生作品并分发
- ✅ 无担保:“按原样”提供,不作任何保证
- ⚠️ 必须署名:您必须在软件的所有副本或大部分中包含原始版权声明和许可文本
MIT许可证确保该软件保持开放和免费,同时要求正确归属于原始作者。
致谢
- 魔法:从Kaggle收集卡片数据
- 模型上下文协议(MCP)规范
- LM Studio提供本地LLM支持
- ASP。NET核心和。NET MAUI团队
联系
如有疑问或支持,请在GitHub上发布问题。
