模型上下文协议服务器

一个基于FastAPI的高级模型上下文协议(MCP)服务器,提供OAuth2认证、动态API发现、OpenAI集成和全面的群组管理功能,适用于智能对话和API操作自动化。

  • by DPoitrast
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 dpoitrast/mcp

使用说明

MCP概念证明

此存储库包含一个复杂的模型上下文协议(MCP)服务器 通过...实现 快速API.该项目展示了先进的API设计模式 包括OAuth2身份验证、动态API发现和全面的群 可以部署到AWS Fargate的管理功能。

特性

🔐 身份验证和安全

  • OAuth2与JWT:承载令牌认证系统
  • 用户管理:内置用户数据库,具有基于角色的访问权限
  • 受保护的端点:需要身份验证的安全API操作
  • 发展模式:与简单令牌身份验证向后兼容

🔍 增强型MCP代理

  • 动态API发现:从OpenAPI元数据中自动发现端点
  • 通用操作支持:执行任何发现的API操作
  • 回退兼容性:静态YAML配置的优雅降级
  • 10倍以上的操作:全面的端点覆盖与静态配置

🤖 OpenAI集成

  • GPT-4o-mini型号:由OpenAI最新迷你模型驱动的快速、经济高效的人工智能
  • 智能对话:具有高级推理的自然语言界面
  • 智能MCP操作:AI理解用户意图并执行适当的MCP操作
  • 会话上下文:维护对话历史记录,以实现更好的互动
  • 模型灵活性:在GPT-4o-mini、GPT-4o和其他型号之间切换
  • API终点:用于聊天和智能查询功能的RESTful端点

💬 交互式界面

  • 交互式CLI:具有流式响应的全功能命令行界面
  • web界面:用于浏览器交互的现代网络聊天界面
  • 统一数据库:两个接口使用相同的MCP数据库和身份验证
  • 会话管理:用户特定的对话保存和恢复
  • 实时流媒体:实时响应流媒体,提供即时反馈
  • 选项卡完成:命令和工具名称的智能完成

📊 综合API

  • CRUD操作:完整的畜群管理(创建、读取、更新、删除)
  • 搜索和筛选:使用灵活的参数按名称搜索畜群
  • 分页:具有跳过/限制控制的高效数据检索
  • 统计:实时牛群分析和报告
  • 健康监测:系统健康检查和数据库状态

🚀 高级操作

  • MCP执行:受保护的操作执行端点
  • 广播系统:向连接的客户端广播消息
  • 模型列表:可用的MCP型号和功能
  • 实时分析:实时系统统计和性能指标

快速开始

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 配置OpenAI(可选):

    export OPENAI_API_KEY="your-openai-api-key-here"
    
  3. 为数据库添加种子:

    python -m app.seed
    
  4. 启动服务器:

    uvicorn app.main:app --reload
    
  5. 获取访问令牌:

    curl -X POST "http://localhost:8000/api/v1/token" \
         -H "Content-Type: application/x-www-form-urlencoded" \
         -d "username=johndoe&password=secret"
    
  6. 尝试交互式代理:

    # Interactive CLI (uses MCP database authentication)
    python interactive_agent.py
    
    # Web interface (in separate terminal, same database)
    python web_interface.py
    # Visit http://localhost:8080 and login with johndoe/secret
    
    # Demo all features
    python demo_agent_usage.py
    
    # Test unified database access
    python test_unified_database.py
    

数据库路径可以通过配置 DATABASE_PATH 环境变量。 如果未设置,则默认为 mcp.db 在工作目录中。

AI模型配置

系统现在使用 GPT-4o-mini 作为最佳性能和成本的默认模型:

🤖 当前型:GPT-4o-mini

  • 演出:对于大多数任务,速度比GPT-4快2倍
  • 成本:每个代币的成本显著降低
  • 质量:交互式聊天和MCP操作的高质量响应
  • 可用性:最新的OpenAI模型,提高了效率

🔄 模型切换

  • 命令行界面:使用 /model <name> 切换模型
  • 可用型号:gpt-4o-mini、gpt-4o、gpt-4涡轮增压、gpt-3.5涡轮增压
  • 会话持续:跨CLI会话保存模型选择
  • web界面:默认情况下使用gpt-4o-mini

💡 模型建议

  • gpt-4o-mini:最适合交互式聊天和一般任务(默认)
  • gpt-4o:用于复杂的推理任务
  • gpt-3.5涡轮增压:基本交互的回退

统一数据库系统

CLI和web界面现在都使用 同一MCP数据库 对于身份验证和操作:

🔑 共享认证

  • 两个接口都对同一用户数据库进行身份验证
  • CLI和web使用相同的JWT令牌系统
  • 跨界面的一致用户管理

💾 数据库一致性

  • 用户帐户:在CLI和web界面之间共享
  • MCP操作:两者都使用相同的API终结点
  • 工具发现:两个界面中都有相同的工具集
  • 对话历史:界面特定但用户隔离

🔄 跨界面优势

  • 登录 johndoe/secret 或 alice/wonderland 在两个界面中
  • 通过web界面执行的MCP操作会影响与CLI相同的数据库
  • 一致的工具可用性和功能
  • 每个用户的统一会话管理

认证

可用用户

  • 约翰多 / 秘密 -活跃用户帐户
  • 爱丽丝 / 仙境 -活跃用户帐户

OAuth2流

# Get access token
curl -X POST "http://localhost:8000/api/v1/token" \
     -d "username=johndoe&password=secret"

# Use token in requests
curl -H "Authorization: Bearer YOUR_TOKEN" \
     "http://localhost:8000/api/v1/herd"

增强的代理使用

动态发现模式(推荐)

# List all dynamically discovered operations
python -m agent http://localhost:8000 --list-tools

# Execute any operation with parameters
python -m agent http://localhost:8000 --execute health_check_api_v1_health_get --token YOUR_TOKEN

# Create new herd
python -m agent http://localhost:8000 --execute create_herd_api_v1_herd_post \
       --params '{"name": "New Farm", "location": "Colorado"}' --token YOUR_TOKEN

静态配置模式

# Traditional static configuration
python -m agent http://localhost:8000 --token YOUR_TOKEN

增强型代理演示

体验全部功能:

python demo_enhanced_agent.py

这表明:

  • 动态与静态发现比较
  • 所有可用操作执行
  • 错误处理和回退机制
  • 实时牛群管理操作

交互式代理演示

体验AI驱动的交互式代理:

CLI界面:

python interactive_agent.py
# Default: GPT-4o-mini model
# Use /model gpt-4o to switch models

功能:实时聊天、流式响应、命令系统、标签完成

Web界面:

python web_interface.py
# Visit http://localhost:8080
# Login with johndoe/secret or alice/wonderland
# Uses GPT-4o-mini by default

特点:现代web UI、MCP数据库身份验证、实时消息传递

功能演示:

python demo_agent_usage.py

这表明:

  • OpenAI集成和聊天功能
  • 智能MCP操作执行
  • 自然语言查询处理
  • API端点使用示例

API操作

核心畜群管理

  • GET /api/v1/herd -按页码列出畜群
  • POST /api/v1/herd -创建新群
  • GET /api/v1/herd/{id} -获取特定畜群
  • PUT /api/v1/herd/{id} -更新畜群
  • DELETE /api/v1/herd/{id} -删除畜群

高级功能

  • GET /api/v1/herd/search/name -按名称搜索畜群
  • GET /api/v1/herd/stats -获取牛群统计数据
  • GET /api/v1/health -系统健康检查

受保护的MCP操作

  • POST /api/v1/mcp/execute -执行MCP操作
  • POST /api/v1/mcp/broadcast -广播消息
  • GET /api/v1/mcp/models -列出可用型号

OpenAI代理端点

  • POST /api/v1/agent/chat -与OpenAI代理直接聊天
  • POST /api/v1/agent/query -使用自然语言的智能MCP查询
  • GET /api/v1/agent/capabilities -代理功能和配置
  • GET /api/v1/agent/tools -可用的MCP工具
  • GET /api/v1/agent/status -代理运行状态

身份验证端点

  • POST /api/v1/token -OAuth 2令牌登录
  • GET /api/v1/users/me -当前用户信息
  • GET /api/v1/users/me/profile -详细简介

测试

# Run all tests
pytest -q

# Run specific test files
pytest tests/test_agent.py -v
pytest tests/test_list_herd.py -v

容器部署

# Build container
docker build -t mcp .

# Run container
docker run -p 8000:80 mcp

基础设施

这 terraform/ 目录提供AWS部署配置:

  • ECR存储库:容器图像存储
  • Fargate服务:无服务器容器部署
  • 负载均衡器:高可用性和可扩展性
cd terraform
terraform init
terraform plan
terraform apply

文档

项目结构

├── app/                    # FastAPI application
│   ├── api/v1/endpoints/   # API route handlers
│   ├── core/               # Configuration and security
│   ├── models.py           # Database models
│   ├── schemas.py          # Pydantic schemas
│   └── services/           # Business logic
├── agent/                  # Enhanced MCP agent
├── tests/                  # Test suite
├── terraform/              # AWS infrastructure
└── demo_enhanced_agent.py  # Full capabilities demo

MCP发现文件可在以下网址获得 model_context.yaml 用于静态配置。