自然语言API操作后端

AI驱动的自然语言接口,通过模型上下文协议(MCP)对外部API执行CRUD操作,适用于开发者和管理员简化API调用流程。

  • by Nareshtt
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Nareshtt/mcp-server

使用说明

Rathinam MCP服务器-后端

使用模型上下文协议(MCP)在外部API上进行CRUD操作的AI驱动的自然语言接口。

🎯 项目概述

这个Django后端允许管理员/开发人员使用人工智能(Claude/GPT)支持的自然语言查询对现有API执行CRUD操作。用户可以简单地键入以下命令,而不是手动调用API或编写代码:

  • “添加一个名叫Rahul的25岁学生”
  • “更新所有价格低于100的产品,设置10%的折扣”
  • “显示上周的所有订单”

MCP服务器解释这些命令,确定适当的API调用,并自动执行它们。

📋 先决条件

  • Python 3.10或更高版本
  • PostgreSQL 14或更高版本
  • Redis(用于缓存和Celery)
  • Node.js 18+(用于Next.js前端-独立项目)

🚀 安装和设置

1.克隆存储库

git clone <your-repo-url>
cd rathinam-mcp-backend

2.创建虚拟环境

# Using uv (recommended)
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Or using standard venv
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

3.安装依赖项

pip install -r requirements.txt

4.设置PostgreSQL数据库

# Create database
createdb rathinam_mcp

# Or using psql
psql -U postgres
CREATE DATABASE rathinam_mcp;
\q

5.配置环境变量

# Copy the example env file
cp .env.example .env

# Edit .env and update with your values
nano .env  # or use your preferred editor

要更新的重要变量:

  • SECRET_KEY -生成安全密钥
  • DB_PASSWORD -您的PostgreSQL密码
  • ANTHROPIC_API_KEY -Claude的Anthropic API密钥
  • CORS_ALLOWED_ORIGINS -您的Next.js前端URL

6.创建所需目录

mkdir -p logs media staticfiles static

7.运行迁移

python manage.py makemigrations
python manage.py migrate

8.创建初始管理员用户

python manage.py create_initial_admin

这将创建:

  • 超级管理员用户(用户名: admin,密码: Admin@123)
  • 默认MCP配置
  • 默认AI模型(Claude Sonnet 4.5)

⚠️ 重要提示:立即更改默认密码!

9.收集静态文件

python manage.py collectstatic --noinput

10.运行开发服务器

python manage.py runserver

API将于 http://localhost:8000

📚 API文档

服务器运行后,访问:

  • Swagger用户界面: http://localhost:8000/api/docs/
  • ReDoc: http://localhost:8000/api/redoc/
  • OpenAPI 规范: http://localhost:8000/api/schema/

🔐 认证

所有API端点(登录除外)都需要JWT身份验证。

登录

POST /api/v1/auth/login/
Content-Type: application/json

{
  "username": "admin",
  "password": "Admin@123"
}

# Response:
{
  "refresh": "eyJ0eXAiOiJKV1QiLCJ...",
  "access": "eyJ0eXAiOiJKV1QiLCJ...",
  "user": {
    "id": 1,
    "username": "admin",
    "email": "admin@rathinam.edu",
    "role": "SUPER_ADMIN"
  }
}

使用访问令牌

在授权标头中包含令牌:

GET /api/v1/conversations/
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ...

刷新令牌

POST /api/v1/auth/token/refresh/
Content-Type: application/json

{
  "refresh": "eyJ0eXAiOiJKV1QiLCJ..."
}

📁 项目结构

rathinam-mcp-backend/
├── config/                      # Main project settings
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── apps/
│   └── core/                    # Main application
│       ├── models.py           # Database models
│       ├── serializers.py      # DRF serializers
│       ├── views.py            # API views
│       ├── urls.py             # URL routing
│       ├── permissions.py      # Custom permissions
│       ├── admin.py            # Django admin config
│       └── management/
│           └── commands/
│               └── create_initial_admin.py
├── logs/                        # Application logs
├── media/                       # User uploads
├── static/                      # Static files
├── staticfiles/                 # Collected static files
├── requirements.txt
├── .env.example
├── .env
├── .gitignore
├── manage.py
└── README.md

🔑 API关键终结点

认证

  • POST /api/v1/auth/login/ -登录
  • POST /api/v1/auth/logout/ -注销
  • POST /api/v1/auth/token/refresh/ -刷新令牌
  • GET /api/v1/auth/me/ -当前用户信息
  • PUT /api/v1/auth/change-password/ -更改密码

对话

  • GET /api/v1/conversations/ -列出对话
  • POST /api/v1/conversations/ -创建对话
  • GET /api/v1/conversations/{id}/ -获取对话
  • POST /api/v1/conversations/{id}/end/ -结束对话

查询

  • GET /api/v1/queries/ -列出查询
  • POST /api/v1/queries/ -创建查询
  • GET /api/v1/queries/{id}/ -获取查询详细信息

外部API

  • GET /api/v1/external-apis/ -列出外部API
  • POST /api/v1/external-apis/ -添加外部API
  • POST /api/v1/external-apis/{id}/health-check/ -检查API运行状况

仪表盘

  • GET /api/v1/dashboard/overview/ -仪表板统计信息
  • GET /api/v1/dashboard/recent-conversations/ -最近的聊天记录
  • GET /api/v1/dashboard/recent-queries/ -最近的查询

监控

  • GET /api/v1/alerts/ -列出警报
  • POST /api/v1/alerts/{id}/acknowledge/ -确认警报
  • GET /api/v1/metrics/latest/ -最新系统指标

🛠️ 配置

添加外部API

  1. 登录到管理面板:http://localhost:8000/admin/
  2. 首选 外部API → 添加外部API
  3. 填写:
    • 名称(例如“学生管理API”)
    • 基本URL(例如,“https://api.yourdomain.com")
    • Auth类型(API_KEY、BEARER_TOKEN等)
    • 身份验证凭据(JSON格式)
  4. 为此API添加API终结点

配置AI模型

  1. 首选 AI模型 在管理面板中
  2. 更新Claude的API密钥或添加OpenAI
  3. 将一个模型设置为默认值
  4. 配置max_tokens和温度

🧪 测试

# Run tests
python manage.py test

# Run with coverage
coverage run manage.py test
coverage report

📊 数据库模型

核心型号

  • 管理员用户 -系统用户(管理员/开发人员)
  • 审计 -完整的审计跟踪
  • MCP对话 -聊天会话
  • MCP消息 -个人聊天消息
  • MCPQuery -自然语言查询
  • API调用 -外部API调用跟踪

配置

  • 外观! -外部API配置
  • API 终点 -API端点目录
  • MCP配置 -系统设置
  • AI模型 -AI模型配置

监控

  • 系统度量 -性能指标
  • 警报 -系统警报
  • 使用统计 -用户使用情况跟踪

🔒 安全特性

  • 带令牌刷新的JWT身份验证
  • 基于角色的访问控制(SUPER_ADMIN、ADMIN、DEVELOPER)
  • 登录尝试失败后帐户锁定
  • 全面的审计日志记录
  • 加密敏感数据
  • CORS保护
  • HTTPS在生产环境中的实施

🚀 生产部署

使用Gunicorn

gunicorn config.wsgi:application --bind 0.0.0.0:8000 --workers 4

使用Docker(即将推出)

docker-compose up -d

生产环境变量

更新您的 .env:

DEBUG=False
ALLOWED_HOSTS=your-domain.com,www.your-domain.com
SECRET_KEY=<generate-secure-key>
CORS_ALLOWED_ORIGINS=https://your-frontend.com

📝 后续步骤

  1. ✅ 后端设置完成
  2. 🔄 设置MCP服务器集成(下一阶段)
  3. 🎨 构建Next.js前端
  4. 🤖 配置AI模型和提示
  5. 🔗 连接到现有的CRUD API

🆘 故障排除

数据库连接错误

# Check PostgreSQL is running
sudo systemctl status postgresql

# Verify database exists
psql -U postgres -l

移民问题

# Reset migrations (DANGER: loses data)
python manage.py migrate --run-syncdb

端口已在使用中

# Kill process on port 8000
lsof -ti:8000 | xargs kill -9

📞 支持

对于问题和疑问:

  • 在GitHub上创建问题
  • 电子邮件:support@rathinam.edu

📄 许可证

[您的许可证在这里]


内置❤️ Rathinam学院