模型上下文协议工具执行层

MCP Server是Model Context Protocol架构的执行层,提供安全的桌面文件操作、费用数据库管理和PDF文档工具。

  • by umerrafiq04
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 umerrafiq04/MCP_SERVER

使用说明

🛠️ 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_file
  • write_file
  • delete_file
  • list_files

特性

  • 限制对桌面目录的访问
  • 防止路径遍历(..)
  • 仅允许 .txt 文件
  • 删除前需要确认
  • 安全覆盖与追加逻辑

例子:

@mcp.tool()
def read_file(path: str) -> str:

🗄️ 费用管理工具

提供结构化的费用跟踪。

可用工具

  • add_expense
  • view_expenses
  • delete_expense

特性

  • 结构化费用存储
  • 数据库支持的操作
  • 受控删除
  • 安全的财务记录

这些工具使AI系统能够 跟踪自动化成本和财务记录.


📄 PDF文档工具

MCP服务器提供高级 PDF文档智能工具.

可用工具

  • read_pdf
  • search_pdf
  • create_pdf
  • rename_pdf
  • delete_pdf
  • find_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