用户搜索服务

一个基于FastAPI后端和LLM聊天集成的用户搜索服务,提供Web前端界面和MCP服务器实现。

  • by shri0915
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 shri0915/ExampleMCP

使用说明

用户搜索MCP服务器

该项目演示了一个具有FastAPI后端、LLM聊天集成和基于web的前端的模型上下文协议(MCP)服务器。

项目结构

ExampleMCP/
├── FastAPISample.py      # FastAPI backend with user search API
├── MCPSample.py          # MCP server implementation
├── ChatBackend.py        # LLM chat handler with tool calling
├── static/
│   └── index.html        # Web frontend UI
├── launcher.py           # Easy launcher script
├── test_system.py        # System tests
├── test_frontend.py      # Frontend tests
├── toolDefinition.json   # Tool schema definition
├── requirements.txt      # Python dependencies
└── README.md            # This file

特性

  • Web前端:具有聊天和搜索界面的漂亮、响应迅速的用户界面
  • FastAPI后端:用于搜索具有筛选和分页功能的用户的REST API
  • MCP服务器:模型上下文协议服务器将用户搜索作为工具公开
  • 大语言模型集成:具有OpenAI集成和工具调用支持的聊天处理程序
  • 模拟数据库:用于测试的示例用户数据

快速开始

1.安装依赖项

pip install -r requirements.txt

2.启动服务器

python FastAPISample.py

3.打开前端

打开浏览器并转到: http://localhost:8000

您将看到三个选项卡:

  • 💬 AI聊天:与LLM的自然语言聊天(需要OpenAI API密钥)
  • 🔍 直接搜索:直接API搜索(在没有API密钥的情况下工作)
  • ℹ️ 关于:关于演示的信息

4.(可选)启用AI聊天

要使用AI聊天功能,请设置OpenAI API密钥:

# Windows (PowerShell)
$env:OPENAI_API_KEY="your-api-key-here"

# Windows (CMD)
set OPENAI_API_KEY=your-api-key-here

# Linux/Mac
export OPENAI_API_KEY=your-api-key-here

然后重新启动服务器。

API终点

GET/用户/搜索

使用可选过滤功能搜索用户。

查询参数:

  • query (可选):在文本中搜索姓名或电子邮件
  • role (可选):按角色筛选(管理员、成员等)
  • limit (可选):最大结果(默认值:10,最大值:100)
  • offset (可选):分页偏移量(默认值:0)

答复:

{
  "total": 4,
  "items": [
    {
      "id": "u1",
      "name": "Alice Smith",
      "email": "alice@example.com",
      "role": "admin",
      "created_at": "2024-01-01"
    }
  ]
}

MCP工具

搜索用户

按姓名、电子邮件或角色搜索用户。

参数:

  • query (字符串,可选):自由文本搜索
  • role (字符串,可选):按角色筛选
  • limit (整数,可选):最大结果(≤100)
  • offset (整数,可选):分页偏移

退货:

{
  "summary": "Found 2 users",
  "total": 2,
  "returned": 2,
  "users": [...]
}

示例用法

使用聊天后端

import asyncio
from ChatBackend import handle_chat

async def main():
    messages = [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Find all admin users"}
    ]
    
    response = await handle_chat(messages)
    print(response['content'])

asyncio.run(main())

发展

添加更多用户

编辑 MOCK_USERS 列入 FastAPISample.py 以添加更多示例数据。

自定义MCP服务器

修改 MCPSample.py 添加新工具或更改现有工具的行为。

使用不同的LLM提供者

聊天后端默认使用OpenAI,但您可以修改 ChatBackend.py 使用:

  • 安thropic克劳德
  • Groq
  • Azure OpenAI
  • 任何与OpenAI兼容的API

故障排除

端口已在使用中

如果端口8000已在使用中,请在两个文件中更改它:

连接被拒绝

在启动MCP服务器或聊天后端之前,请确保FastAPI后端正在运行。

OpenAI API错误

确保您的 OPENAI_API_KEY 环境变量设置正确。

许可证

这是一个用于演示的示例项目。