估计器MCP服务器
一种用于在咨询环境中生成软件项目时间估计的模型上下文协议(MCP)服务器系统。该系统使AI代理(如Claude)能够从用户那里收集任务/功能描述,查询工作项目录,并返回每个角色、每个任务的详细时间分解。
项目概述
关键目标: 通过管理映射到实施角色的功能目录和工作量估算,然后通过MCP工具将这些估算提供给基于LLM的接口,从而实现人工智能辅助的项目估算。
项目结构
estimator-mcp/
├── spec/ # Specification documents
│ ├── overview.md # System requirements and MCP tool specs
│ ├── data-structure.md # Data model and JSON schema
│ ├── process-flow.md # Estimation workflow
│ └── innovation.md # Innovation and future ideas
├── docs/ # Additional documentation
│ └── plans/ # Technical planning documents
└── src/ # Source code
├── estimator-mcp/ # MCP Server (stdio transport)
├── CatalogEditor/ # Blazor Web App for catalog management
├── CatalogCli/ # CLI tool for bulk TSV import/export
└── EstimatorMcp.Models/ # Shared data models组件
1.MCP服务器(估计器MCP)
状态: ✅ 全面实施
核心MCP服务器通过stdio传输运行,并向LLM接口公开三个工具:
MCP工具:
GetInstructions-为人工智能助手返回如何进行评估访谈的降价指南GetCatalogFeatures-返回目录功能,可按类别、技术堆栈或标签进行筛选CalculateEstimate-接受T恤尺寸的功能,返回按角色小时细分的详细信息
特征:
- Claude Desktop集成的Stdio传输
- 仅记录Serilog文件(无控制台输出以避免协议干扰)
- 自动加载最新带时间戳的目录文件
- 技术栈和基于标签的过滤
- T恤尺寸的斐波那契缩放(XS、S、M、L、XL)
- 每个角色应用的副驾驶生产力乘数
技术栈:
- 具有可空引用类型的.NET 10
- ModelContextProtocol NuGet包(0.5.0-preview.1)
- 配置和服务的依赖注入
- 使用Serilog进行基于文件的日志记录
运行服务器:
cd src/estimator-mcp
dotnet build
dotnet run2.目录编辑器(CatalogEditor)
状态: ✅ 全面实施
一个用于通过交互式UI管理目录数据的DateTimeWeb应用程序。
特征:
- 使用Copilot生产力倍增器管理实施角色
- 使用基于角色的时间估计创建和编辑目录条目(功能)
- 技术栈分类(Salesforce、HTTP/AAzure、Node.js、共享等)
- 基于标签的多维分类组织
- 带有斐波那契比例的T恤尺码(仅适用于中等基线)
- 实时验证和自动保存
技术栈:
- ASP。NET核心访问接口(.NET 10)
- 交互式服务器渲染模式
- 提供者模式(
ICatalogDataProvider)用于未来的数据库迁移 - 具有自动版本控制的JSON文件存储
运行编辑器:
cd src/CatalogEditor/CatalogEditor/CatalogEditor
dotnet build
dotnet run
# Navigate to https://localhost:50013.目录CLI(CatalogCli)
状态: ✅ 全面实施
通过Excel/电子表格应用程序进行批量编辑的命令行工具。
特征:
- 将目录JSON导出到TSV文件(roles.TSV、entries.TSV)
- 将编辑后的TSV文件导入回JSON格式
- 全面验证数据完整性和角色引用
- 支持技术栈和分号分隔的标签
- 非常适合批量更新50多个目录功能
用例示例:
# Step 1: Export to TSV
dotnet run -- export -i catalog.json -o ./export/
# Step 2: Edit in Excel (techstacks.tsv, roles.tsv, entries.tsv)
# Step 3: Import back to JSON
dotnet run -- import --techstacks ./export/techstacks.tsv --roles ./export/roles.tsv --entries ./export/entries.tsv -o updated.json
# Migrate a v1.0 catalog to v2.0 format
dotnet run -- migrate -i catalog-v1.json -o catalog-v2.json看 目录Cli自述文件 详细用法。
4.共享模型(估计器模型)
状态: ✅ 全面实施
跨所有组件使用的共享数据模型:
CatalogData-具有角色和条目的根目录结构CatalogEntry-带有估算和元数据的功能/工作项Role-Copilot乘数的实施作用TechStack-技术平台分类
数据存储
目录数据存储在JSON文件中,具有基于时间戳的版本控制:
- 位置:
src/CatalogEditor/CatalogEditor/CatalogEditor/data/catalogs/ - 格式:
catalog-{ISO8601_TIMESTAMP}.json - 版本历史记录:保留旧文件;启动时按字典排序加载的最新文件
提供者模式
目录编辑器使用提供程序模式来抽象数据访问:
- 接口:
ICatalogDataProvider - 当前实施情况:
JsonCatalogDataProvider(基于文件的存储) - 未来:轻松迁移到SQL Server、PostgreSQL、Azure存储或API后端
入门指南
先决条件
- .NET 10 SDK或更高版本
- (可选)用于MCP集成的Claude Desktop
- (可选)Excel或兼容的电子表格应用程序,用于CLI批量编辑
快速开始
选项1:使用带Claude Desktop的MCP服务器
- 构建MCP服务器:
cd src/estimator-mcp
dotnet build- 配置Claude Desktop以使用服务器(请参阅 MCP集成 在......下面
- 请Claude帮助估算一个项目——它将自动使用MCP工具
选项2:通过Web UI管理目录
cd src/CatalogEditor/CatalogEditor/CatalogEditor
dotnet run
# Navigate to https://localhost:5001选项3:通过CLI+Excel进行批量编辑
cd src/CatalogCli
dotnet run -- export -i -o ./export/
# Edit TSV files in Excel
dotnet run -- import --roles ./export/roles.tsv --entries ./export/entries.tsv -o updated.json样本目录数据
该系统包括一个全面的目录,其中包括:
- 7个角色:开发人员、DevOps工程师、参与经理、架构师、QA工程师、安全工程师、UX设计师
- 50+目录条目 跨越多个技术栈和类别
- 技术栈:Salesforce、云数据库/Azure、Node.js。NET,共享
- 分类:功能、后端、DevOps、数据、QA、安全
- 标签:基于平台、技术、层和功能的标签
T恤尺码型号
仅存储目录条目 中等(M) 基线估计,以尽量减少数据输入。其他大小是使用斐波那契缩放自动计算的:
| 大小 | 斐波那契 | 乘数 | 示例(M=24h) |
|---|---|---|---|
| XS | 1 | 0.2倍(1/5) | 4.8小时 |
| S | 2 | 0.4倍(2/5) | 9.6小时 |
| M | 5 | 1.0 x | 24小时 |
| L | 8 | 1.6倍(8/5) | 38.4小时 |
| XL | 13 | 2.6倍(13/5) | 62.4小时 |
最后估计 还应用角色的副驾驶乘数(例如,开发人员为0.6=在人工智能的帮助下快40%)。
计算公式:
Final Hours = (Medium Hours × Size Multiplier) × Copilot Multiplier例子:
- 功能:“REST API集成”
- 中等基线:开发人员=24h
- 所选尺寸:大(L)=1.6x
- 开发者复制倍数:0.6(快40%)
- 最终估算:24×1.6×0.6=23.04小时
技术栈和标签组织
系统支持多维分类:
技术栈:
salesforce-Salesforce平台(Apex、LWC、Flows)blazor-azure-HTTP+AAzure(AKS、函数、宇宙数据库)dotnet- .NET/ASP。NET核心nodejs-Node.js生态系统react-aws-React+AWSshared-跨平台功能
标签 (分号分隔):
- 平台:
salesforce,azure,aws - 图层:
frontend,backend,database,api - 功能:
authentication,authorization,crud,search - 技术:
apex,lwc,blazor,terraform - 域名:
devops,security,testing,data
筛选示例:
// Get all Salesforce features
GetCatalogFeatures(techStack: "salesforce")
// Get all frontend features
GetCatalogFeatures(tag: "frontend")
// Get all authentication-related features
GetCatalogFeatures(tag: "authentication")MCP集成
MCP服务器通过stdio传输协议与Claude Desktop集成。
Claude桌面配置
添加到您的Claude Desktop配置文件(claude_desktop_config.json):
窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"estimator": {
"command": "dotnet",
"args": [
"run",
"--project",
"s:\\src\\xebia\\estimator-mcp\\src\\estimator-mcp\\estimator-mcp.csproj"
],
"env": {
"ESTIMATOR_CATALOG_PATH": "s:\\src\\xebia\\estimator-mcp\\src\\CatalogEditor\\CatalogEditor\\CatalogEditor\\data\\catalogs"
}
}
}
}AI工作流
配置后,Claude可以:
- 呼叫
GetInstructions学习如何进行评估面试 - 呼叫
GetCatalogFeatures从目录中检索可用功能 - 采访用户 了解项目范围并选择相关功能
- 帮助用户指定T恤尺寸 (XS、S、M、L、XL)基于复杂性
- 呼叫
CalculateEstimate具有选定的功能和尺寸 - 提供详细明细 每个角色每个功能的小时数,加上总计
对话示例:
User: "I need to estimate a Salesforce project with custom Apex classes and LWC components"
Claude: [Calls GetCatalogFeatures(techStack: "salesforce")]
"I found these Salesforce features in the catalog:
- Apex Class Development
- Lightning Web Component
- Custom Object with Fields
...
Let's go through each one and size them for your project..."
User: "We need 3 Apex classes (Medium), 5 LWC components (Small), and 2 custom objects (Large)"
Claude: [Calls CalculateEstimate with the selections]
"Here's your estimate breakdown:
Developer: 123.4 hours (15.4 days)
DevOps: 8.5 hours (1.1 days)
QA: 24.0 hours (3.0 days)
..."开发状态
✅ 已完成(MVP)
第一阶段:目录管理
- ✅ 用于目录CRUD操作的OutputWeb应用程序
- ✅ JSON存储的提供者模式
- ✅ 采用斐波那契比例的T恤尺码
- ✅ 使用副驾驶乘数进行角色管理
- ✅ 自动目录版本控制(基于时间戳的文件名)
第二阶段:MCP服务器
- ✅ MCP服务器实现(stdio传输)
- ✅ GetInstructions工具(人工智能指导)
- ✅ GetCatalogFeatures工具(带过滤的目录查询)
- ✅ CalculateEstimate工具(按角色/任务的时间细分)
- ✅ 仅记录Serilog文件(stdio安全)
- ✅ 技术栈分类
- ✅ 基于标签的组织和过滤
第三阶段:批量编辑
- ✅ 用于TSV导入/导出的CatalogCli工具
- ✅ 基于Excel的批量编辑工作流程
- ✅ 数据完整性验证服务
- ✅ 支持技术栈和标签
🔄 进行中
第四阶段:高级功能
- 🔄 多目录支持(每个地区/客户的费率表不同)
- 🔄 历史估计跟踪和精度指标
- 🔄 人工智能辅助特征匹配(语义搜索)
📋 未来的增强功能
数据库迁移
- \[\]SQL Server提供程序实现
- \[\]PostgreSQL提供者实现
- \[\]Azure存储提供程序(基于blob)
安全与治理
- \[\]用户身份验证和授权
- \[\]基于角色的访问控制(目录管理员、估计器)
- \[\]审核日志记录(谁更改了什么以及何时更改)
出口和报告
- \[\]PDF导出(格式化估算文件)
- \[\]CSV导出(用于金融系统)
- \[\]人员配置计划生成(包含资源分配的时间表)
成本处理
- \[\]费率表(每个角色每小时的成本)
- \[\]多地区费率(美国、欧盟、亚太地区)
- \[\]货币兑换
- \[\]按功能/角色划分的成本明细
高级估算
- \[\]非功能需求建模(测试、部署提升百分比)
- \[\]风险/意外因素(乐观/悲观情景)
- \[\]特征依赖关系和排序
- \[\]物料清单跟踪(基础设施/许可成本)
整合
- \[\]用于外部系统的REST API
- \[\]Webhook通知(目录更新)
- \[\]基于Git的目录存储(版本控制)
- \[\]Jira/Azure DevOps集成(导入史诗/故事)
文档
产品规格(spec/)
- 概述.md -系统目标、功能、要求和MCP工具定义
- 数据结构.md -完整的数据模型、JSON模式、斐波那契数学
- 流程流量.md -估算工作流程和用户交互
- innovation.md -未来的想法和改进
组件文档
- CLAUDE.md -AI助手的全面项目概述(架构、构建命令、模式)
- 目录编辑器README -DateTimeapp设置、配置和数据模型
- 目录Cli自述文件 -CLI工具使用、TSV格式、Excel工作流程、验证规则
- 目录查询快速参考 -快速命令参考
开发者指南(.github/instructions/)
- 副驾驶指令.md -高层架构、数据流、LINQ模式、MCP工具规范
- dotnet-guidelines.md - .NET 10标准、异步模式、DI设置、DateTimeconfig
配置
环境变量
MCP服务器:
ESTIMATOR_DATA_PATH-数据目录的路径(指令.md)ESTIMATOR_CATALOG_PATH-目录JSON文件的路径ESTIMATOR_LOGS_PATH-日志文件的路径(默认值:logs/)
目录编辑器:
CatalogDataPath-目录JSON文件存储位置
日志记录
MCP服务器使用 Serilog只记录文件 为了避免干扰stdio传输:
- 日志位置:
logs/estimator-mcp-{date}.log - 日志级别:信息(可配置)
- 无控制台输出(会损坏MCP协议)
技术栈
- .NET 10 启用了可以为null的引用类型
- 模型上下文协议 NuGet包(0.5.0-preview.1)
- Blazor -交互式服务器渲染模式
- Serilog -结构化日志记录
- 幽灵。控制台 -CLI格式化和验证
- 依赖注入 -微软。扩展。依赖注入
架构模式
工具实施(MCP服务器)
[McpServerToolType]
public sealed class MyTool(IConfiguration config, ILogger logger)
{
[McpServerTool, Description("Tool description for LLM")]
public async Task MyMethod([Description("Param description")] string param)
{
// Implementation
}
}提供者模式(目录编辑器)
// Interface for abstraction
public interface ICatalogDataProvider
{
Task LoadCatalogAsync();
Task SaveCatalogAsync(CatalogData catalog);
}
// JSON implementation (current)
public class JsonCatalogDataProvider : ICatalogDataProvider { ... }
// Easy to add SQL, Azure, API implementations later贡献
这是一个内部Xebia项目。如需更改:
- 创建要素分支:
git checkout -b feature/your-feature-name - 跟着。NET 10和ExpressRoute约定(参见
.github/instructions/) - 使用所有三个组件(MCP服务器、web应用程序、CLI)进行测试
- 如果添加功能,请更新相关的README文件
- 提交明确的信息,描述变更
支持和故障排除
常见问题
MCP服务器未连接:
- 检查Claude Desktop配置文件的路径是否正确
- 验证
ESTIMATOR_CATALOG_PATH指向目录目录 - 检查日志:
src/estimator-mcp/logs/estimator-mcp-*.log
目录未加载:
- 确保配置的目录中存在目录JSON文件
- 检查文件名格式:
catalog-{ISO8601_TIMESTAMP}.json - 验证JSON是否有效(使用JSON验证器)
CLI导入失败:
- 检查TSV文件格式是否符合规范
- 验证entries.tsv中的角色ID是否与roles.tsv匹配
- 在输出中查找验证错误
DateTimeapp未启动:
- 确保。NET 10 SDK已安装
- 检查appsettings以获取有效的CatalogDataPath
- 验证端口5001是否未使用
获取帮助
如需额外支持:
- 检查特定于组件的README文件
- 查看CLAUDE.md以了解体系结构概述
- 检查
spec/详细规格文件夹 - 查看日志中的错误消息
许可证
版权所有©2025 Xebia。保留所有权利。
