找回密码
 立即注册
首页 业界区 业界 15分钟开发一个周报生成mcp,再也不用为写周报发愁了 ...

15分钟开发一个周报生成mcp,再也不用为写周报发愁了

琉艺戕 11 小时前
前言

相信大部分程序员都有这样的经历:周一到周五忙的天昏地暗但是到了周五下班前写周报时又回忆不起来具体干了点啥,像是做了很多事但好像又什么也没做。为了应对这种情况我会在每天完成一件任务或需求时将其记录下来,但是有时候忘记了就不得不再去需求池里翻了。
与其他职业不同,程序员的工作大部分还是和代码打交道的,我们一周内的具体工作内容都反映在项目中的git提交记录里,所以我们可以基于一周内的git提交记录按照周报模版promp生成周报,先给大家看下效果:
1.gif

开发准备

安装python3.12和uv,使用Homebrew安装非常简单,执行两个命令即可:

  • 安装python
  1. brew install python@3.12
复制代码

  • 安装uv
  1. brew install uv
复制代码

  • 新建项目 mcp-git-weekly-report并创建weekly_report.py文件
  • 在weekly_report.py中安装fastmcp依赖并创建mcp
    使用  uv pip install fastmcp 或   pip install fastmcp 安装依赖后创建mcp:
  1. from fastmcp import FastMCP
  2. #默认是Stdio协议,所以我们这个mcp服务器实际上是在本地运行的
  3. mcp = FastMCP("weekly-report")
复制代码
这里简单的介绍下FastMCP框架,FastMCP 是一个 Python 框架,它极大地简化了 MCP 服务器的开发过程。 它的名字中的 “Fast” 就暗示了其目标:让开发者能够快速构建 MCP 服务器。
FastMCP 的核心特点和优势

  • 极简的 API:使用装饰器(如 @mcp.tool)将普通的 Python 函数直接“变成” MCP 工具。你几乎不需要关心底层的协议细节。
  • 基于 Pydantic:天然支持使用 Pydantic 模型来定义工具输入输出的数据类型,确保类型安全和清晰的文档。
  • 资源管理:提供了简单的方式来管理资源(如数据库连接),可以在服务器启动时建立连接,并在结束时自动关闭。
  • 内置常用功能:它预置了许多常见的 MCP 服务器功能,例如:
    1. 文件系统访问:让 AI 可以读写指定目录的文件。
    2. SQL 数据库查询:让 AI 可以直接查询数据库。
    3. 代码执行:提供安全的代码执行环境。
    4. HTTP 请求:简化了对外部 API 的调用。
    复制代码
  • 开发友好:支持简单的命令行指令来运行和测试服务器。
如果你想要对mcp服务做出更精准的控制和定制,可以使用官方提供的更底层的sdk,详情请见官方文档:https://github.com/modelcontextprotocol/python-sdk?tab=readme-ov-file#tools
开发

设计思路

我们使用git log命令获取提交记录,完整的指令格式形如:
  1. git log --author=cube.li --since='3 days ago' --pretty='format:%ad|%s' --date=short
复制代码
为了能够成功执行这条指令,我们需要知道以下参数:
1、 项目地址,由于周报mcp服务是运行在本地的,所以项目地址是一个本地绝对路径,项目地址要做成可配置的且能够灵活更改,所以我们将其作为mcp服务器的环境变量注入,并使用“|”作为分隔符以支持多项目
2、git 用户名称,用户名可通过git config user.name获取,不需要传入
3、日期范围,周报默认是当前周(7天内),但是我们也支持指定日期范围内的工作总结,例如:写3天内的工作总结,写15天内的工作总结,所以我们将其使用大模型识别作为参数传递到mcp服务器中
当我们具备以上信息后就能够成功获取到git提交记录并返回到AI应用了,但是只做到这一步还无法对周报内容、格式、字数进行限制,AI应用获取到提交记录后会自己发挥生成周报,当然我们可以在要求写周报时再输入特定的要求,但这样使用不够方便,所以我们要在mcp服务器中预制好周报模版prompt,返回AI应用时将 周报模版prompt+提交记录 一并返回给AI应用,这样既不用每次输入周报要求也能够生成符合要求的周报了。
周报模版prompt内容如下:
[code]你是一个专业的周报生成器,根据 Git 提交记录生成一份专业的工作周报。##
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册