最近折腾 MCP 发现个问题就是好多 AI 客户端太臃肿不够简洁,不够轻量于是就搞了个轻量基于 Web 的 MCP Playground (基于开源的 KChat 二次开发,由于 KChat 只有聊天对话不支持 MCP 于是二开主要增加浏览器端直接调用 MCP 服务器的功能)可以快速访问基于 SSE 和 Streamable HTTP 类型的远程 MCP 服务器,支持一键式导入、配置和连接 MCP 工具。
本项目是一个功能丰富的 AI 聊天应用,基于 Model Context Protocol (MCP) 构建。它允许用户连接和管理多个 MCP 服务器,并通过这些服务器调用各种工具来增强 AI 聊天体验。该应用内置多种 AI 模型包括 OpenAI GPT 、Google Gemini 、ZhipuAI 、Qwen 等系列,并提供个性化的流式响应等功能。项目采用前后端分离架构,前端使用 React 和 TypeScript 构建,后端使用 Node.js 和 Express 实现。
技术栈:
组件结构:
App.tsx
:主应用组件,负责全局状态管理和路由ChatView.tsx
:聊天界面组件,处理消息显示和用户交互ChatInput.tsx
:聊天输入组件,支持文本输入和工具选择McpServerModal.tsx
:MCP 服务器配置模态框,用于添加和编辑服务器Sidebar.tsx
:侧边栏组件,显示聊天历史、文件夹和角色SettingsModal.tsx
:设置模态框,管理应用配置WelcomeView.tsx
:欢迎界面,展示应用介绍ModelSelector.tsx
:模型选择器,支持多种 AI 模型切换状态管理:
useChatMessaging
Hook 处理复杂的聊天逻辑和消息流useSettings
和 useChatData
Hooks 管理设置和聊天数据国际化支持:
contexts/LocalizationContext
提供多语言支持核心服务:
mcpService.ts
:处理 MCP 服务器连接、工具获取和工具调用backendService.ts
:与后端 API 通信,处理聊天请求storageService.ts
:管理本地数据存储和持久化modelService.ts
:管理 AI 模型相关功能技术栈:
核心功能:
API 端点:
/chat/api/completions
:聊天完成接口/chat/mcp/connect
:MCP 服务器连接接口/chat/mcp/tools
:获取 MCP 工具列表接口/chat/mcp/tools/:toolName
:调用 MCP 工具接口/chat/api/settings
:获取应用设置接口/health
:健康检查接口MCP 服务器支持:
用户可以添加、编辑和删除 MCP 服务器配置,包括服务器名称、类型、URL 、请求头等信息。支持通过表单或 JSON 配置方式添加服务器,并能测试服务器连接和工具调用。
McpServerModal
组件提供服务器配置界面用户可以与 AI 模型进行聊天,支持文本输入、工具调用等功能。提供流式响应显示、消息编辑、删除等操作。
useChatMessaging
Hook 处理复杂的聊天逻辑用户可以通过聊天界面调用 MCP 服务器提供的工具,获取外部数据或执行特定操作。支持多种工具参数类型,并能显示工具调用结果。
AI 模型的响应以流式方式显示,提供更好的用户体验。支持显示 AI 的思考过程,让用户了解模型的推理过程。
sendMessageStream
函数处理流式数据用户可以创建、编辑、删除和归档对话,支持文件夹组织对话,方便管理大量对话历史。
Sidebar
组件管理对话历史项目实现了对 MCP (Model Context Protocol) 协议的完整支持,包括:
难点:不同类型的 MCP 服务器需要不同的连接方式和会话管理机制,同时需要处理认证和会话保持。
解决方案:
难点:需要实时处理和显示 AI 模型的流式响应,同时处理工具调用状态和 AI 思考过程。
解决方案:
难点:需要实现多轮工具调用机制,同时避免无限循环和性能问题,确保工具调用结果正确传递。
解决方案:
难点:需要确保前后端数据的一致性,特别是在处理复杂的工具调用和状态更新时。
解决方案:
难点:需要在多个对话中独立管理 MCP 工具配置,同时支持全局和对话级别的配置。
解决方案:
本项目是一个功能完善、设计优雅的 AI 聊天应用,基于 Model Context Protocol (MCP) 构建。它通过直观的用户界面和强大的功能,让用户能够轻松连接和管理多个 MCP 服务器,并通过这些服务器调用各种工具来增强 AI 聊天体验。项目支持多种 AI 模型、个性化角色设置、文件上传、流式响应等高级功能。
项目的技术亮点包括完整的 MCP 协议支持、优雅的用户界面设计、高效的工具调用机制、灵活的配置管理和丰富的功能特性。同时,项目也面临一些技术难点,如 MCP 服务器连接管理、流式响应处理、多轮工具调用和前后端数据同步,但通过合理的架构设计和解决方案,这些难点都得到了有效处理。
总体而言,本项目不仅为用户提供了实用的 AI 聊天和 MCP 工具调用功能,也为开发者提供了一个学习 MCP 协议、现代前端开发技术和 AI 应用开发的优秀案例。项目具有良好的扩展性和可维护性,为未来的功能扩展和性能优化提供了坚实的基础。