Esme-MCP项目管理系统
使用内置于AI代理中的MCP集成来跟踪您的门票和史诗。Esme的设计考虑到了Claude Code,它可以帮助您在终端内跟踪您正在做什么和计划什么,而无需使用UI。(但如果你想要的话,还有一个UI)
我如何使用Esme
我会让我的克劳德代码通过Esme MCP创作一部史诗。然后,我将获得与上下文相关的信息,并将其保存到史诗的上下文中。然后,我将写下我的史诗般的概述,描述我想实现的目标、我想如何实现它、测试标准和步骤。由此,我将与Claude讨论需要创建哪些票以及需要以什么顺序编写票。我将确定哪些任务可以并行运行,然后在实现过程中使用TDD(测试驱动开发)方法。
快速开始
先决条件
- 已安装Docker和Docker Compose
- Claude Code或Codex(用于MCP集成)
设置分为3个步骤
- 克隆并启动
git clone git@github.com:jacmurphy/Esme.git esme
cd esme
./start.sh- 添加到MCP配置 (
.mcp.json在您的克劳德代码设置中)
{
"mcpServers": {
"Esme": {
"command": "docker",
"args": [
"exec",
"-i",
"project-management-mcp",
"python",
"-m",
"src.server"
],
"env": {
"BACKEND_URL": "http://backend:9000"
}
}
}
}- 重新启动Claude代码 列出你的MCP——你应该看看Esme!
接入点
- 网页用户界面: http://localhost:4000
- API文件: http://localhost:9000/docs
- 主控程序:通过Claude Code命令
特性
核心功能
- 门票:创建、更新、跟踪带有状态、优先级和故事点的票证
- 史诗:将作品组织成带有描述和背景的史诗(支持markdown)
- 短跑:计划冲刺,包括开始/结束日期和目标
- 上下文字段:存储门票和史诗的降价格式上下文信息
- Markdown支持:富文本编辑,实时预览描述和上下文
- 拖放板:用于票务管理的可视化看板
- 自动编号:自动生成票/史诗/冲刺标识符
人工智能集成(通过MCP)
- 票务管理:创建门票、列表门票、获取门票、更新门票、删除门票
- Epic管理:create_epic、list_epics、get_epic、add_ticket_to_epic、remove_ticket_from_epic
- Sprint管理:create_sprint、list_sprints、get_print_status、add_ticket_to_sprint
- 自然语言:使用Claude Code中的对话命令与您的项目交互
MCP使用示例
Create a ticket titled "Add user authentication" with high priority
List all tickets in the current sprint
Create an epic called "Payment Integration" with context about Stripe API requirements
Add ticket 5 to sprint 2
Show me the status of sprint 1建筑
┌─────────────────────┐
│ Claude Code/AI │
│ (via MCP) │
└──────────┬──────────┘
│
▼
┌─────────────────────┐ ┌─────────────────────┐
│ MCP Server │────▶│ FastAPI Backend │
│ (Python/Docker) │ │ (REST API) │
└─────────────────────┘ └──────────┬──────────┘
│
┌──────────▼──────────┐
│ PostgreSQL DB │
│ (Persistent Data) │
└─────────────────────┘
┌─────────────────────┐
│ React Frontend │
│ (http://localhost) │
└─────────────────────┘项目结构
esme/
├── backend/ # FastAPI backend service
│ ├── app/
│ │ ├── api/routes/ # API endpoints
│ │ ├── models/ # Database models
│ │ ├── schemas/ # Pydantic schemas
│ │ └── main.py # Application entry
│ ├── migrations/ # Database migrations
│ └── Dockerfile
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── types/ # TypeScript types
│ │ └── main.tsx # Application entry
│ └── Dockerfile
├── mcp-server/ # MCP server for AI
│ ├── src/
│ │ ├── tools/ # MCP tool implementations
│ │ ├── api_client.py # Backend API client
│ │ └── server.py # MCP server
│ └── Dockerfile
├── docker-compose.yml # Service orchestration
├── .mcp.json # MCP configuration
├── start.sh # Quick start script
└── README.md # This file故障排除
缺少依赖项/导入错误
如果您看到以下错误 Failed to resolve import "@package/name":
# Rebuild the affected service (e.g., frontend)
docker compose build --no-cache frontend
docker compose up -d --force-recreate -V frontend
# Or rebuild all services
./start.shMCP未连接
# Check containers are running
docker compose ps
# Check MCP server logs
docker logs project-management-mcp
# Restart MCP server
docker compose restart mcp-server数据库问题
# Check database health
docker compose exec postgres pg_isready -U admin -d project_management
# Apply pending migrations
docker compose exec backend aerich upgrade
# View migration history
docker compose exec backend aerich history端口冲突
# Check what's using the ports
lsof -i :4000 # Frontend
lsof -i :9000 # Backend
lsof -i :5432 # Database重新启动(package.json更改后)
docker compose down
docker compose build --no-cache
docker compose up -d --force-recreate -V注意:当您添加了新的npm包或Python依赖项时,请使用此选项。
快速重启(无依赖关系更改)
docker compose down
docker compose up -d发展
数据库迁移
- 从不 修改现有迁移
- 总是 通过新的迁移进行修复
- 运行迁移:
docker compose exec backend aerich upgrade - 创建迁移:
docker compose exec backend aerich migrate --name
分支命名
遵循以下模式: JM//
技术栈
- 后端:FastAPI、Tortoise ORM、PostgreSQL、Python 3.11
- 前端:React、TypeScript、Vite、TailwindCSS、@uiw/React-md编辑器
- 主控程序:Python MCP SDK
- 数据库:PostgreSQL 15具有自动递增数字的自定义函数
贡献
- 创建要素分支
- 进行更改
- 使用Docker Compose进行本地测试
- 提交拉取请求
许可证
\[在此处添加您的许可证\]
支持
对于问题和疑问:
- 检查故障排除部分
- 查看现有的GitHub问题
- 创建包含详细信息的新问题
