使用说明
🛠️ MCP服务器
模型上下文协议(MCP)的工具执行层
MCP服务器是模型上下文协议架构的执行层。
它公开了可由MCP客户端通过MCP协议安全执行的结构化工具。
此存储库包含以下工具实现:
- 桌面文件操作
- 费用数据库管理
- PDF文档工具
MCP服务器完全专注于 工具执行和安全,而MCP客户端处理 LLM推理和工具选择.
🏗️ 建筑中的角色
MCP服务器 不包含LLM逻辑.
其职责是公开可由MCP客户端执行的结构化工具。
User
↓
Frontend (Streamlit)
↓
FastAPI Backend
↓
MCP Client (LLM + Tool Selection)
↓
MCP Server (Tool Execution)
MCP客户决定 调用哪个工具,MCP服务器执行 实际执行.
🎯 职责
MCP服务器:
- 使用注册工具
@mcp.tool() - 严格验证输入
- 限制文件系统访问
- 防止不安全的文件操作
- 执行特定于域的逻辑
- 返回结构化输出
服务器充当 人工智能推理和现实操作之间的安全执行层.
📦 项目结构
MCP服务器遵循 模块化工具架构,其中每个域都有自己的工具模块。
MCP_SERVER/
│
├── main.py # MCP server entry point
│
└── app/
├── desktop_tools.py # Desktop file operations
├── expense_tools.py # Expense tracking tools
└── pdf_tools.py # PDF reading and management tools
架构设计
- main.py 初始化MCP服务器
- 每个模块都注册了自己的工具
- 工具按域分组
- 该系统易于扩展
只需在内部创建一个新模块,即可添加新的工具域 app/.
🧩 可用工具域
MCP服务器公开了三个工具域:
| 域 | 描述 |
|---|---|
| 桌面工具 | 桌面上的安全文件管理 |
| 费用工具 | 费用跟踪和数据库操作 |
| PDF工具 | PDF文档阅读、搜索和管理 |
💻 桌面工具
处理桌面上的安全文件操作。
可用工具
read_filewrite_filedelete_filelist_files
特性
- 限制对桌面目录的访问
- 防止路径遍历(
..) - 仅允许
.txt文件 - 删除前需要确认
- 安全覆盖与追加逻辑
例子:
@mcp.tool()
def read_file(path: str) -> str:
🗄️ 费用管理工具
提供结构化的费用跟踪。
可用工具
add_expenseview_expensesdelete_expense
特性
- 结构化费用存储
- 数据库支持的操作
- 受控删除
- 安全的财务记录
这些工具使AI系统能够 跟踪自动化成本和财务记录.
📄 PDF文档工具
MCP服务器提供高级 PDF文档智能工具.
可用工具
read_pdfsearch_pdfcreate_pdfrename_pdfdelete_pdffind_relevant_pdfs_on_desktop
📖 read_pdf
从PDF文件读取全文。
例子:
read_pdf("report.pdf")
特征:
- 多页提取
- 仅限桌面文件访问
.pdf扩展验证
🔍 search_pdf
在PDF中搜索关键字。
例子:
search_pdf("report.pdf", "revenue")
特征:
- 基于页面的搜索
- 不区分大小写的匹配
- 输出大小有限
🧾 create_pdf
根据提供的文本创建新的PDF文件。
例子:
create_pdf("notes.pdf", "AI systems are evolving rapidly.")
特征:
- 自动
.pdf扩展 - 防止覆盖现有文件
- 用途
reportlab用于PDF生成
✏️ 重命名_pdf
重命名PDF文件。
例子:
rename_pdf("report.pdf", "summary.pdf", confirm="RENAME report.pdf")
🗑️ delete_pdf
删除PDF文件。
例子:
delete_pdf("report.pdf", confirm="DELETE report.pdf")
删除需要严格确认。
🔎 桌面查找相关内容
在桌面上搜索所有PDF以获取相关信息。
例子:
find_relevant_pdfs_on_desktop("machine learning")
🔐 安全设计
安全是 核心设计原则 这台服务器。
文件系统安全
服务器强制执行严格的文件系统保护:
- 仅限桌面访问
- 路径遍历预防
- 扩展过滤
- 破坏行为确认
PDF安全
其他保障措施包括:
.pdf扩展验证- 受控重命名和删除
- 创建过程中不覆盖
执行安全
服务器可防止不安全操作:
- 不执行shell
- 无动态代码执行
- 没有任意操作系统命令
⚙️ 工具注册
工具注册使用 FastMCP.
例子:
from fastmcp import FastMCP
server = FastMCP("ExpenseTracker")
每个工具模块都向MCP服务器注册其工具。
🚀 服务器初始化
main.py
from fastmcp import FastMCP
from app.expense_tools import register_tools
from app.desktop_tools import desktop_tools_func
from app.pdf_tools import pdf_tools_func
server = FastMCP("ExpenseTracker")
desktop_tools_func(server)
register_tools(server)
pdf_tools_func(server)
if __name__ == "__main__":
server.run()
这种模块化初始化可以实现:
- 基于领域的工具分离
- 更容易维护
- 可扩展的工具扩展
🚀 运行MCP服务器
使用FastMCP:
fastmcp run main.py --no-banner
开发模式:
fastmcp dev main.py
服务器通过以下方式进行通信 stdio传输.
🔄 交互流程
1.️⃣ MCP客户端连接到MCP服务器。
2.️⃣ 客户端检索可用工具。
3.️⃣ LLM选择合适的工具。
4.️⃣ 工具在MCP服务器内执行。
5.️⃣ 结果返回给客户端。
6.️⃣ 客户端生成最终的AI响应。
📈 设计原则
- 模块化工具架构
- 严格的输入验证
- 受控文件系统访问
- 基于域的工具分组
- AI和执行层的分离
- 生产就绪系统设计
🏢 工程哲学
此服务器由以下组件构建:
- 安全第一架构
- 推理和执行之间的明确分离
- MCP协议合规性
- 可扩展的多工具支持
- 干净的模块化设计
👨💻 作者
乌默·拉菲克
🔗 相关存储库
此MCP服务器与以下设备协同工作:
🎨 前端+FastAPI层
https://github.com/umerrafiq04/MCP_CLIENT_-_FRONTEND
