# mcp-market **Repository Path**: zeus-maker/mcp-market ## Basic Information - **Project Name**: mcp-market - **Description**: mcp-market - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-09 - **Last Updated**: 2025-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MCP Market MCP Market 是一个企业内部 MCP (Machine Computed Properties) 工具的创建和管理平台。该项目旨在提供一个集中式的界面,让企业用户可以浏览、管理、开通和使用各种 MCP 工具。 ## 项目结构 项目采用前后端分离的架构: ``` mcp-market/ ├── backend/ # Python FastAPI 后端 │ ├── app/ # 应用程序代码 │ │ ├── api/ # API 端点 │ │ ├── core/ # 核心配置 │ │ ├── db/ # 数据库模型和连接 │ │ ├── models/ # 数据模型 │ │ ├── schemas/ # Pydantic 模式 │ │ └── services/ # 业务逻辑 │ ├── tests/ # 测试 │ ├── main.py # 入口点 │ └── requirements.txt # 依赖 └── frontend/ # Vue.js 前端 ├── public/ # 静态资源 ├── src/ # 源代码 │ ├── assets/ # 资源文件 │ ├── components/ # 组件 │ ├── router/ # 路由 │ ├── store/ # Vuex 状态管理 │ ├── views/ # 视图 │ ├── App.vue # 主应用组件 │ └── main.js # 入口点 ├── package.json # 依赖和脚本 └── README.md # 前端说明 ``` ## 功能特性 1. **MCP 工具列表展示** - 首页按分类展示所有 MCP 工具 - 每个工具显示 ICON、名称、描述和分类信息 - 点击工具卡片可查看详情 2. **MCP 工具详情页** - 工具信息概览 - 工具参数设置界面(Tab 切换显示) - 工具参数调试功能 - 运行结果展示 - 工具开通/取消开通功能 3. **MCP 工具管理** - 工具创建和配置 - 工具权限管理 - 工具使用统计 4. **MCP 工具通信与日志** - 与 MCP 服务器稳定通信 - 完整的日志记录与跟踪 - 自动重试和错误恢复机制 - 支持 JSON 和 SSE 格式参数解析 - 会话管理与连接池 ## 技术栈 ### 前端 - Vue.js 框架 - Vue Router 路由管理 - Vuex 状态管理 - Element Plus 组件库 - Axios HTTP 客户端 ### 后端 - Python 3.8+ - FastAPI 框架 - SQLAlchemy ORM - Pydantic 数据验证 - MySQL 数据库 - aiohttp (用于SSE处理) - httpx (HTTP客户端) ## 环境要求 - Python 3.8+ - Node.js 14+ - MySQL 5.7+ - 操作系统:支持 macOS、Linux、Windows ## 开发环境设置 ### 1. 克隆项目 ```bash git clone cd mcp-market ``` ### 2. 数据库设置 1. 安装并配置MySQL: ```bash # 创建数据库 CREATE DATABASE mcp_market CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 创建用户(根据需要调整用户名和密码) CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON mcp_market.* TO 'mcp_user'@'localhost'; FLUSH PRIVILEGES; ``` 2. 配置后端数据库连接,创建 `.env` 文件: ```env MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=mcp_user MYSQL_PASSWORD=your_password MYSQL_DB=mcp_market ``` ### 3. 后端设置 ```bash # 进入后端目录 cd backend # 创建虚拟环境 python -m venv venv # 激活虚拟环境 source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt # 初始化数据库(创建表和示例数据) python -m app.db.init_db # 运行开发服务器 cd .. && uvicorn backend.app.main:app --reload --port 8001 ``` ### 4. 前端设置 ```bash # 进入前端目录 cd frontend # 安装依赖 npm install # 运行开发服务器 npm run serve # 构建生产版本 npm run build ``` ## API 文档 启动后端服务器后,可以通过访问 `http://localhost:8001/docs` 查看自动生成的 Swagger API 文档。 ## 日志系统 MCP Market 实现了全面的日志系统,用于跟踪和调试 MCP 工具交互: ### 日志配置 - 日志配置位于 `backend/app/core/logger.py` - 支持同时输出日志到控制台和文件 - 使用 RotatingFileHandler 进行日志文件轮转,避免文件过大 - 日志文件存储在 `logs` 目录下 - 区分一般日志 (mcp_market.log) 和错误日志 (mcp_market_error.log) ### 日志级别 - ERROR: 严重错误,如连接失败、参数获取失败等 - WARNING: 警告情况,如参数解析异常、自动重试等 - INFO: 一般信息,如请求开始、完成等 - DEBUG: 详细调试信息,如请求和响应的完整内容 ### 查看日志 可以通过以下方式查看日志: ```bash # 实时查看日志 tail -f logs/mcp_market.log # 查看最近的错误 grep ERROR logs/mcp_market.log # 查看专门的错误日志文件 cat logs/mcp_market_error.log ``` ## 常见问题解决 ### 1. 端口占用问题 如果遇到端口被占用的情况,可以: 1. 使用不同的端口启动服务: ```bash uvicorn backend.app.main:app --reload --port 8001 ``` 2. 或者找到并关闭占用端口的进程: ```bash # 查找占用端口的进程 lsof -i :8000 # 关闭进程 kill ``` ### 2. 数据库连接问题 如果遇到数据库连接问题: 1. 确保MySQL服务正在运行 2. 验证数据库用户名和密码正确 3. 检查数据库连接配置(.env文件) 4. 确保数据库和表已正确创建 ### 3. MCP 工具参数获取超时 如果遇到参数获取超时: 1. 检查 MCP 服务器是否可用 2. 增加超时时间(当前为30秒) 3. 查看日志中的具体错误信息 4. 检查SSE连接是否正常 ### 4. 前端API连接问题 如果前端无法连接API: 1. 确保API路径配置正确 2. 检查CORS设置 3. 确认后端服务运行状态 4. 检查网络连接 ## 部署指南 ### 后端部署 1. 使用Gunicorn和Nginx部署FastAPI应用: ```bash # 安装Gunicorn pip install gunicorn # 使用Gunicorn运行应用 gunicorn -w 4 -k uvicorn.workers.UvicornWorker backend.app.main:app ``` 2. 配置Nginx作为反向代理 ### 前端部署 1. 构建前端生产版本: ```bash cd frontend npm run build ``` 2. 将生成的`dist`目录内容部署到Web服务器 ## 开发指南 1. 按照技术规范进行开发 2. 提交前进行代码格式检查和测试 3. 遵循 RESTful API 设计原则 4. 保持前后端接口一致性 ## 贡献指南 1. Fork 项目 2. 创建特性分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件