使用说明
⚙️
MultiTask — MCP Frontend
A compact, utility-first React SPA (Calculator, File Reader, Text Analyzer, Todo Manager) that communicates with an MCP-style backend.
🌐 Live Demo · ✨ Features · 📂 Project Structure · ⚡ Getting Started · 🔐 Analysis & Security
✨ 特性
- 🧮 计算器 --通过后端计算端点进行基本算术运算。
- 📄 文件读取器 --从服务器请求文件内容以供审查(请谨慎使用)。
- 🧾 文本分析器 --分析文本文件:行、单词、最常见的单词。
- ✅ 计划管理 --通过后端列出/添加/编辑/删除任务。
- ⚡ 使用Create React app+Axios的快速单页应用程序。
🛠 技术栈
- 前端: React(创建React应用程序)、React 19、Axios
- 造型: 自定义CSS(index.CSS/App.CSS)
- 构建/部署: CRA(
npm start,npm run build),Vercel友好 - 后端(预期): REST端点(请参见 API终点 在......下面
📂 项目结构
MultiTask/
├── public/
│ ├── index.html
│ ├── logo192.png
│ └── ...
├── src/
│ ├── components/
│ │ ├── Calculator.js
│ │ ├── FileReader.js
│ │ ├── TextAnalyzer.js
│ │ └── TodoManager.js
│ ├── api.js # axios instance + BASE\_URL
│ ├── App.js
│ ├── index.js
│ └── index.css
├── package.json
└── README.md
📡 API终点(观察/预期)
前端在配置的上调用这些端点
BASE_URL:
-
GET /calculate?a=&b=&op=- 退货
{ result: number }或{ error: string }.
- 退货
-
GET /read_file?path=- 退货
{ content: "file contents..." }或{ error: string }. - 警告: 如果服务器接受任意路径→ 文件泄露风险.
- 退货
-
GET /analyze_text?path=- 返回文本统计信息:
{ lines, words, characters, most_common_words }.
- 返回文本统计信息:
-
GET /todos- 加
/todosPOST/PUT/DELETE取决于后端。
- 加
⚡ 入门(开发人员)
使用Create React应用程序。建议使用节点16+。
# 1. Clone
git clone https://github.com/Harshsfd/Multitask-MCP-Server.git
cd your-repo
# 2. Install
npm install
# 3. Configure API base (recommended: use env)
# Option A: Quick edit (development)
# Edit src/api.js and set BASE_URL to your backend (default: https://mcp-server-qko7.onrender.com)
# Option B: Use an env variable (recommended)
# Create a .env file at project root with:
# REACT_APP_API_BASE_URL=https://your-backend.example.com
#
# Then either update src/api.js to use process.env.REACT_APP_API_BASE_URL (see snippet below)
# 4. Run locally
npm start
# Open http://localhost:3000
建议更改 src/api.js (使用env-var)
将当前硬编码的BASE_URL替换为:
// src/api.js
import axios from "axios";
const BASE_URL = process.env.REACT_APP_API_BASE_URL || "https://mcp-server-qko7.onrender.com";
export const api = axios.create({ baseURL: BASE_URL });
创建 .env.example:
# .env.example
REACT_APP_API_BASE_URL=https://your-backend.example.com
重要:添加
.env向.gitignore永远不要泄露秘密。
🚀 部署
- 对于 维塞尔:将代码推送到GitHub→ 将项目导入Vercel→ add
REACT_APP_API_BASE_URL在环境变量中→ 部署。 - 对于一般节点主机:使用构建
npm run build并服务build/文件夹。
🔍 深度分析和安全说明(可操作)
调查结果摘要
-
客户端代码 干净易读;小型实用程序作为单独的组件实现。
-
src/api.js目前使用a 硬编码后端URL --移动到env变量以获得灵活性和安全性。 -
重大风险:
FileReader组件帖子任意path价值到GET /read_file。如果服务器不清理/白名单允许的路径,这可能会导致:- 目录遍历(例如。
../../etc/passwd) - 泄露机密和系统文件
- 隐私泄露
- 目录遍历(例如。
安全与加固(优先级)
-
绝不允许任意文件系统读取。 后端必须执行:
- A. 白名单 允许的目录或文件ID,或
- 将客户端文件引用映射到内部安全路径(不接受原始路径)。
-
输入验证和净化 在所有端点上(
/read_file,/analyze_text,/calculate(所有端点) -
身份验证和授权:
- 为敏感端点添加身份验证(读取文件,如果不是公开的,则编辑待办事项)。
- 速率限制端点,以防止暴力破解和数据提取。
-
跨域资源共享:限制
Access-Control-Allow-Origin到生产环境中的前端域。 -
记录和监控:记录可疑请求(例如。,
..在……里面path)并添加警报。 -
删除硬编码的后端URL 在客户端--使用
REACT_APP_API_BASE_URL如上所述的env-var。 -
HTTPS&CSP:确保后端证书有效,并考虑CSP
index.html.
代码质量和开发人员改进
- 添加
.env.example,.gitignoreenv文件的规则。 - 添加一个小
README.dev.md使用后端合约(端点+预期的JSON形状)。 - 为添加GitHub操作CI
npm ci,npm run build,基本单元测试(Jest)。 - 为关键流添加端到端烟雾测试(Playwright)。
✅ 快速缓解补丁建议(现在要更改什么)
- 改变
src/api.js使用env-var (参见 入门指南). - 临时UI安全说明 --注释
File Reader并在生产中禁用它,直到后端硬化。示例UI通知FileReader.js:
// Short UI warning (add near input)
<p className="small warning">⚠️ This tool can read server files. Make sure the backend restricts allowed paths before using in production.</p>
-
后端检查表 (如果你能控制它):
- 实现路径规范化+禁止
..片段 - 只允许配置的基本目录:例如。,
/var/app/files并拒绝任何超出它的路径 - 读取终结点需要API密钥或会话
- 实现路径规范化+禁止
📌 最后注意事项和下一步
-
这个前端是 轻量化,生产就绪 一旦后端被验证/保护。
-
如果你愿意,我可以:
- 为生成一个小补丁PR(代码片段)
src/api.js+.env.example+README更新。 - 为起草一个安全的后端处理程序模板
read_file(node/express)强制执行基本目录白名单。
- 为生成一个小补丁PR(代码片段)
Made with ❤️ by Harsh Bhardwaj
