AlgoMD
March 23, 2025 · View on GitHub
AlgoMD 是一个基于 MCP (Model Control Protocol) 的工具集,旨在简化算法代码分析与文档生成的流程。
功能特点
AlgoMD 提供了以下主要功能:
- 代码读取:自动读取指定目录下所有 C++ 算法代码文件
- 内容保存:将大语言模型(LLM)生成的内容保存为结构化的 Markdown 文件
- 元数据管理:自动添加时间戳、用户信息和提示词等元数据到输出文件中
安装要求
- Python 3.7+
- uv
- 安装以下依赖:
- mcp
- httpx
uv add mcp[cli] httpx
设置与配置
- 克隆此仓库到本地
- 在
algomd.py中设置以下路径(根据需要调整):- 算法文件目录:默认为
D:\code\luogu - 输出文件目录:默认为
D:\code\ai_outputs
- 算法文件目录:默认为
使用方法
配置 MCP 服务器
在 Claude Desktop 的设置中添加以下配置:
{
"mcpServers": {
"algomd": {
"command": "uv",
"args": [
"--directory",
"D:\\code\\mcp\\algomd", // AlgoMD 的路径
"run",
"algomd.py"
]
}
}
}
读取算法代码
调用 read_algo() 函数,它将:
- 递归扫描
D:\code\luogu目录下的所有.cpp文件 - 读取每个文件的内容
- 返回一个字典,键为文件路径,值为文件内容
code_files = await read_algo()
保存 LLM 内容
await save_to_markdown(
content="# 算法分析\n\n这是对冒泡排序的分析...",
prompt="解释这段排序算法的时间复杂度",
filename="bubble_sort_analysis"
)
此函数将:
- 在
D:\code\ai_outputs目录下创建 Markdown 文件 - 添加包含创建时间、用户和提示词的元数据头
- 保存 LLM 生成的内容
- 返回文件保存状态信息
工作流示例
- 使用
read_algo()读取算法代码文件 - 将代码传递给 LLM 进行分析
- 让 LLM 生成算法解释、复杂度分析或优化建议
- 使用
save_to_markdown()将分析结果保存为结构化文档
# 工作流示例
code_files = await read_algo()
algorithm_code = code_files["D:\\code\\luogu\\sorting\\bubble_sort.cpp"]
# 使用 LLM 分析代码(这部分在 Claude 中完成)
analysis = "# 冒泡排序分析\n\n## 算法原理\n\n冒泡排序通过重复遍历要排序的数列,比较相邻元素并交换它们的位置...\n\n## 时间复杂度\n\n- 最坏情况:O(n²)\n- 最好情况:O(n)"
# 保存分析结果
result = await save_to_markdown(
content=analysis,
prompt="分析这段冒泡排序代码的原理和复杂度",
filename="bubble_sort_analysis"
)
print(f"文档已保存至 {result['file_path']}")
输出示例
生成的 Markdown 文件包含以下结构:
---
created: 2025-03-24 15:30:45
user: LOTUSSSB
prompt: |
分析这段冒泡排序代码的原理和复杂度
---
# 冒泡排序分析
## 算法原理
冒泡排序通过重复遍历要排序的数列,比较相邻元素并交换它们的位置...
## 时间复杂度
- 最坏情况:O(n²)
- 最好情况:O(n)
PhyGen
PhyGen 是一个基于 MCP (Model Control Protocol) 的工具集,旨在简化物理学或其他学科报告的生成和处理流程。
功能特点
PhyGen 提供了以下主要功能:
- PDF 转 Markdown:自动将 PDF 文档转换为结构化的 Markdown 格式
- 内容保存:将大语言模型(LLM)生成的内容保存为 Markdown 文件
- Markdown 转 Word:使用 pandoc 将 Markdown 内容转换为格式化的 Word 文档
安装要求
- Python 3.7+
- uv
- 安装以下依赖:
- mcp
- httpx
- pandoc (命令行工具)
uv add mcp[cli] httpx
同时确保系统中已安装 pandoc。
设置与配置
- 克隆此仓库到本地
- 在
phygen.py中设置以下常量:
使用方法
配置 MCP 服务器
在 Claude Desktop 的设置中添加以下配置:
{
"mcpServers": {
"phygen": {
"command": "uv",
"args": [
"--directory",
"D:\\code\\mcp\\phygen", // PhyGen 的路径
"run",
"phygen.py"
]
}
}
}
PDF 转 Markdown
- 将要转换的 PDF 文件放在工作目录下,并命名为
input.pdf - 调用
convert_pdf_to_markdown()函数 - 转换结果将保存为
output.md
result = await convert_pdf_to_markdown()
print(result) # 显示转换状态和摘要
保存 LLM 内容
await save_llm_content(
content="# 我的报告\n\n这是由 LLM 生成的内容...",
prompt="生成一份关于量子力学的报告"
)
保存的内容将位于 result.md 文件中。
Markdown 转 Word 文档
await convert_to_docx(
input_file="result.md",
output_file="final_report.docx",
template_file="template.docx"
)
此功能使用 pandoc 将 Markdown 转换为 Word 文档,并可应用自定义模板样式。
工作流示例
- 将实验手册或文献保存为 PDF 并命名为
input.pdf - 使用
convert_pdf_to_markdown()将其转换为 Markdown - 准备template.docx文件来实现你想要的模板,用于生成最终的word文档
- 让 LLM 生成或修改内容并通过
save_llm_content()保存 - 最后使用
convert_to_docx()将结果转换为格式化的 Word 文档
# 转换PDF到Markdown
pdf_result = await convert_pdf_to_markdown()
# LLM处理内容(在Claude中进行)
# ...
# 保存LLM生成的内容
save_result = await save_llm_content(
content="# 实验报告\n\n## 引言\n\n本实验旨在测量...",
prompt="基于PDF内容生成标准实验报告"
)
# 转换为Word文档
docx_result = await convert_to_docx(
input_file="result.md",
output_file="实验报告.docx",
template_file="template.docx"
)
print(f"Word文档已生成: {docx_result}")