MCP CRM演示
一个演示MCP(模型上下文协议)服务器实现,为管理简单的客户关系管理(CRM)系统提供工具和资源。本项目展示了如何使用构建MCP服务器。NET 9.0和C#,通过MCP工具和资源公开CRM功能。
概述
此MCP服务器提供了一个完整的CRM解决方案,带有SQLite数据库后端,提供全面的人员/联系人管理功能、分析功能和搜索功能。它演示了使用适当的工具注释、元数据和资源管理创建MCP服务器的最佳实践。
特性
核心功能
- 增删改查操作:创建、读取、更新和删除人员记录
- 搜索功能:按姓名、技能、部门、角色或全文查询搜索
- 分析:技能统计、平均年龄计算、最年长者、最熟练者
- 资源暴露:将CRM数据作为人工智能环境的MCP资源公开
- 实例跟踪:每个服务器运行的唯一实例ID
技术特性
- SQLite数据库:具有自动初始化和种子设定功能的持久存储
- MCP工具:18多种工具,带有详细说明和元数据
- MCP资源:将所有CRM数据作为资源公开
- STDIO传输:使用标准输入/输出进行MCP通信
- 类型安全:使用C#记录和枚举进行强类型输入
- 测试覆盖率:包括全面的单元测试
先决条件
- .NET 9.0 SDK 或以后
- SQLite(通过Microsoft.Data.SQLite包捆绑)
安装
- 克隆存储库:
git clone https://github.com/patriksima/mcp-crm-demo.git
cd McpEcho- 恢复依赖关系:
dotnet restore- 构建项目:
dotnet build用法
运行服务器
使用以下命令运行MCP服务器:
dotnet run --project McpCrmDemo服务器将:
- 初始化SQLite数据库(
crm.db) - 如果数据库为空,则使用样本数据进行种子
- 开始通过STDIO传输监听MCP请求
数据库
服务器自动创建和管理SQLite数据库(crm.db)在项目目录中。在第一次运行时,它为数据库添加了三个样本人员:
- John Doe(高级开发工程师)
- Jane Smith(前端开发工程师,工程)
- 爱丽丝·约翰逊(数据科学家,数据分析)
MCP工具
服务器公开了以下工具:
人员查找
GetPersonById-通过ID获取个人信息GetPersonByName-按名字查找一个人GetPersonBySurname-按姓氏查找某人GetAllPersons-从CRM系统中获取所有人员
搜索操作
SearchPersons-跨姓名和技能的全文搜索GetPersonsBySkill-让所有具有特定技能的人GetPersonsByDepartment-从特定部门获取所有人员GetPersonsByRole-获取具有特定角色/职位的所有人员
分析
GetSkillStatistics-获取技能分布统计数据GetAverageAge-获取所有人的平均年龄GetOldestPerson-找到系统中最年长的人GetMostSkilledPerson-找到最有技能的人
增删改查操作
AddPerson-将新用户添加到CRM系统UpdatePerson-更新现有人员的信息DeletePerson-从CRM系统中删除人员
系统
GetInstanceId-获取此服务器运行的唯一实例标识符
MCP资源
服务器公开以下资源:
CrmData-将CRM系统中的所有人员作为可用于AI上下文的资源返回
项目结构
McpEcho/
├── McpCrmDemo/
│ ├── Program.cs # Application entry point and MCP server setup
│ ├── MyCrm.cs # MCP tools implementation
│ ├── CrmResources.cs # MCP resources implementation
│ ├── CrmDatabase.cs # SQLite database operations
│ └── McpCrmDemo.csproj # Project configuration
├── McpCrmDemo.Tests/
│ ├── MyCrmTests.cs # Unit tests for CRM functionality
│ └── McpCrmDemo.Tests.csproj
├── crm.db # SQLite database (auto-generated)
├── .gitignore
├── McpCrmDemo.sln # Solution file
└── README.md数据模型
个人实体
public class Person
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
public Sex Sex { get; set; } // M or F
public string Role { get; set; }
public string Department { get; set; }
public string CvSummary { get; set; }
public List Skills { get; set; }
}发展
运行测试
执行测试套件:
dotnet test释放建筑
内置发布模式:
dotnet build -c ReleaseMCP元数据
所有工具都包含全面的元数据:
- 类别:对运营进行分类(客户关系管理、分析、系统)
- 操作:操作类型(读取、创建、更新、删除、聚合、搜索)
- 数据源:数据源类型(sqlite)
- 结果类型:工具的返回类型
- 上下文:工具的使用上下文
- 别名:工具的替代名称
配置
服务器可以通过以下方式配置:
- 数据库路径:将自定义数据库路径传递给
CrmDatabase构造函数 - 传输机制:目前使用STDIO(已注释掉HTTP传输可用)
- 日志记录:通过Microsoft将日志记录到stderr。扩展。日志记录
与MCP客户端集成
该服务器可以与任何兼容MCP的客户端(例如Claude Desktop、Cline)集成。配置您的MCP客户端以使用以下方式启动此服务器:
{
"mcpServers": {
"crm-demo": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/McpCrmDemo"]
}
}
}依赖项
- 微软。扩展。托管 (9.0.10)-应用程序托管基础设施
- 微软。数据。SQLite (9.0.10)-SQLite数据库提供程序
- 模型上下文协议 (0.4.0-preview.3)-MCP服务器实现
用例
此演示服务器可用于:
- 了解如何使用构建MCP服务器。网
- 了解MCP工具和资源模式
- 原型CRM与AI助手的集成
- 测试MCP客户端实现
- 作为自定义MCP服务器的模板
许可证
本项目根据知识共享署名-非商业性无衍生产品4.0国际许可协议(CC BY-NC-ND 4.0)获得许可。
这意味着:
- ✅ 您可以共享和重新分发代码
- ✅ 你必须对作者给予适当的赞扬
- ❌ 您不能将其用于商业目的
- ❌ 您无法分发修改后的版本
看 许可证 文件以获取完整详细信息或访问 https://creativecommons.org/licenses/by-nc-nd/4.0/
贡献
这是一个用于学习目的的演示项目。请随时根据自己的用例进行分叉和修改。
支持
对于问题或疑问,请在GitHub存储库上打开问题。
