SyncEnv MCP-模型上下文协议演示。网
全面示范实施 模型上下文协议(MCP) 在。网9。此示例应用程序展示了如何使用HTTP和StdIO传输构建MCP服务器,以游戏/体育数据管理的真实数据同步场景为特色。
🤔 什么是MCP?
模型上下文协议(MCP)是一个开放协议,它规范了应用程序如何向大型语言模型(LLM)提供上下文。这使得Claude、ChatGPT等AI助手能够以标准化的方式与应用程序的数据和工具进行交互。
📚 一般资源
📚 安全漏洞
✨ 特性
此演示应用程序演示:
- 双重运输支持:HTTP和StdIO(标准输入/输出)MCP服务器实现
- 自定义MCP工具:用于环境管理和数据同步的即用型工具
- 依赖关系映射:自动解析实体关系以实现复杂的数据同步
- 内存数据存储:具有真实体育/比赛数据的示例数据生成器
- Docker支持:容器化部署就绪
- 综合测试:包括单元和集成测试
🛠️ 已实施MCP工具
环境工具
ListEnvironments-列出所有可用环境(生产环境、本地环境)TestConnection-测试与特定环境的连接GetDatabaseStats-获取环境的数据库统计信息
游戏同步工具
FindGames-按球队名称和日期范围搜索比赛PreviewGameSync-预览要同步的数据(模拟运行模式)SyncGame-在环境之间同步特定游戏及其所有依赖关系
📁 溶液结构
SyncEnvMcp/
SyncEnvMcp/
├── SyncEnv.Mcp/ # Core MCP library
│ ├── Services/ # Data services and dependency mapping
│ ├── Tools/ # MCP tool implementations
│ └── Prompts/ # MCP prompts (future enhancement)
├── SyncEnv.Mcp.Http/ # HTTP transport MCP server
│ ├── Program.cs # HTTP server configuration
│ ├── Examples/ # Example client implementations
│ └── Dockerfile # Container configuration
├── SyncEnv.Mcp.StdIo/ # StdIO transport MCP server
│ ├── Program.cs # StdIO server configuration
│ └── Dockerfile # Container configuration
├── SyncEnv.Mcp.Tests/ # Unit tests
├── SyncEnv.Mcp.Tests.Integration/ # Integration tests
└── MongoDAL/ # Data models and abstractions🚀 技术
- .NET 9 -最新。NET框架与C#13
- ASP。NET核心 -用于HTTP传输服务器
- 模型上下文协议。网 -官方MCP SDK。网
- x单位 -测试框架
- 码头工人 -集装箱化支持
📦 安装和设置
先决条件
- .NET 9 SDK
- Visual Studio 2022或VS代码
- Docker(可选,用于容器化部署)
运行HTTP服务器
cd SyncEnv.Mcp.Http
dotnet run服务器将于启动 http://0.0.0.0:5000 MCP端点位于 /mcp.
测试运行状况端点:
curl http://localhost:5000/health运行StdIO服务器
cd SyncEnv.Mcp.StdIo
dotnet run这将使用标准输入/输出启动MCP服务器,以便与MCP客户端通信。
使用Docker运行
# Build the HTTP server image
docker build -f SyncEnv.Mcp.Http/Dockerfile -t syncenv-mcp-http .
# Run the container
docker run -p 5000:5000 syncenv-mcp-http🧪 运行测试
# Run unit tests
dotnet test SyncEnv.Mcp.Tests/SyncEnv.Mcp.Tests.Unit.csproj
# Run integration tests
dotnet test SyncEnv.Mcp.Tests.Integration/SyncEnv.Mcp.Tests.Integration.csproj
# Run all tests
dotnet test💡 使用示例
示例1:列出可用环境
{
"method": "tools/call",
"params": {
"name": "ListEnvironments",
"arguments": {}
}
}示例2:按团队查找游戏
{
"method": "tools/call",
"params": {
"name": "FindGames",
"arguments": {
"teamName": "Manchester",
"startDate": "2024-01-01",
"environment": "Production"
}
}
}示例3:预览游戏同步
{
"method": "tools/call",
"params": {
"name": "PreviewGameSync",
"arguments": {
"gameId": "game_12345",
"sourceEnvironment": "Production"
}
}
}示例4:将游戏与依赖项同步
{
"method": "tools/call",
"params": {
"name": "SyncGame",
"arguments": {
"gameId": "game_12345",
"sourceEnvironment": "Production",
"targetEnvironment": "Local"
}
}
}🔌 连接MCP客户端
克劳德桌面
添加到您的Claude Desktop配置文件中:
对于HTTP服务器:
{
"mcpServers": {
"syncenv": {
"url": "http://localhost:5000/mcp"
}
}
}对于StdIO服务器:
{
"mcpServers": {
"syncenv": {
"command": "dotnet",
"args": ["run", "--project", "path/to/SyncEnv.Mcp.StdIo"]
}
}
}🎓 关键概念演示
1.MCP工具注册
使用属性和依赖注入注册工具:
[McpServerToolType]
public sealed class EnvironmentTools
{
[McpServerTool, Description("List all available environments")]
public static string ListEnvironments() { ... }
}2.依赖关系映射
自动解析复杂数据同步的实体关系:
public interface IDependencyMapper
{
Task GetGameDependenciesAsync(string gameId, string environment);
}3.双重运输支持
相同的工具适用于HTTP和StdIO传输:
// HTTP Transport
builder.Services.AddMcpServer()
.WithHttpTransport()
.WithTools();
// StdIO Transport
builder.Services.AddMcpServer()
.WithStdioTransport()
.WithTools();🤝 贡献
这是一个示范项目,但请随时:
- 报告问题或提出改进建议
- 使用您自己的MCP工具进行分叉和增强
- 用作您自己的MCP实现的模板
📄 许可证
这是一个示例/演示项目。您可以自由地使用它来学习和构建您自己的MCP实现。
🔮 未来的增强功能
- \[\]添加MCP提示支持
- \[\]实施MCP资源
- \[\]添加身份验证/授权
- \[\]支持MongoDB而不是内存存储
- \[\]与ViewModel实时同步
- \[\]添加更复杂的依赖场景
- \[\]GraphQL集成示例
📧 联系
作为MCP在中的演示而创建。NET-您可以自由地学习并调整此代码以适应您自己的项目!
______________________________________________________________________
备注:这是一个示例应用程序,旨在演示MCP概念。出于学习目的,有意简化内存中的数据存储。在生产场景中,您将与实际数据库集成并实施适当的安全措施。
