文档管理工具

DocAssistant是一个基于fastmcp库的轻量级文档管理工具,提供文档列表、内容检索、追加内容和关键词搜索功能,适用于本地和云端部署。

  • by Yug771
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yug771/mcp-server

使用说明

DocAssistant:MCP服务器和客户端

该项目演示了一个使用 fastmcp 图书馆。服务器提供了一组用于与文本文件交互的工具和资源,客户端脚本显示了如何使用它们。客户端和服务器之间的通信通过标准输入/输出(stdio)处理,使其成为本地进程间通信的轻量级高效解决方案。

项目结构

MCP-Server-And-Client/
├── documents/            # Stores all text documents
│   └── notes.txt         # An example document
├── MCP-client.py         # Example script to interact with the server
├── MCP-server.py         # The backend server logic
├── app.py                # Cloud-ready Streamlit app (no MCP dependencies)
├── requirements.txt      # Python dependencies for cloud deployment
├── requirements_local.txt # Full dependencies for local development
└── README.md             # This file

特性

这 DocAssistant 服务器暴露了几个 fastmcp 端点:

资源

  • docs://list:列出所有可用 .txt 文件在 documents 目录。
  • docs://{filename}:检索指定文档的完整内容。

工具

  • append_to_doc:将内容字符串附加到指定文件的末尾。
    • 参数: filename (str), content (str)
  • search_in_doc:在文档中搜索关键字,并返回所有匹配项的行号和内容。
    • 参数: filename (str), keyword (str)

鼓励

  • append_prompt:生成用于附加内容的标准化消息,旨在指导用户或其他人工智能。
  • search_prompt:创建用于搜索内容的标准化消息。

设置和安装

1.先决条件

  • Python 3.8+
  • 已激活的虚拟环境(推荐)

2.安装依赖项

对于云部署(Streamlit cloud):

pip install -r requirements.txt

对于具有完整MCP功能的本地开发:

# First, save the original requirements if needed
cp requirements.txt requirements_local.txt
# Then install from the local requirements
pip install fastmcp mcp

3.运行应用程序

选项1:命令行界面(仅限本地)

客户端和服务器在一个协调的单一进程中运行。要启动应用程序,只需从终端运行客户端脚本:

python MCP-client.py

客户端将自动启动服务器作为子进程,并开始与之交互。您将在终端中看到客户端和服务器的输出,演示 DocAssistant.

选项2:Web界面(适用于云端)

为了获得更用户友好的体验,您可以使用Streamlit web界面:

streamlit run app.py

这将在您的浏览器中打开一个漂亮的web应用程序,您可以在其中:

  • 列出所有可用文档
  • 通过语法高亮显示查看文档内容
  • 在文档中添加新内容
  • 在文档中搜索关键字
  • 下载文档

这 app.py 该版本适用于Streamlit Cloud,因为它不需要MCP子流程通信。

云部署

部署到Streamlit云

  1. 将代码推送到GitHub
  2. 首选 分享.streamlit.io
  3. 连接您的GitHub存储库
  4. 选择 app.py 作为主文件
  5. 部署!

备注:云版本(app.py)直接实现文档操作,无需MCP客户端-服务器架构,使其与云环境兼容。

运作原理

本地版本(MCP-client.py+MCP-server.py)

这 MCP-client.py 脚本初始化 StdioTransport 管理与 MCP-server.py 脚本。然后,它使用 fastmcp 客户:

  1. Ping服务器 以确保其正常运行。
  2. 列出所有可用 工具、资源和提示。
  3. 打电话给 append_to_doc 工具 向添加新行 documents/notes.txt.
  4. 打电话给 search_in_doc 工具 查找单词“Hello”的出现次数。
  5. 阅读全部内容 属于的 documents/notes.txt 使用其资源URI。
  6. 生成提示消息 使用 append_prompt 模板。

云版本(app.py)

云版本直接实现文件操作,不需要单独的服务器进程,使其适合在子流程通信受到限制的Streamlit cloud等平台上部署。