模型上下文协议服务

MCP(模型上下文协议)服务提供多服务器架构和AI驱动的代理客户端,支持.NET和Python实现,用于票务管理。

  • by nhcloud
  • C#
  • 本地部署
  • 2 星标
  • 更新于

使用说明

MCP研讨会

该项目展示了 模型上下文协议(MCP) 具有多个服务器架构和AI驱动的代理客户端。该实现在两个版本中都可用 .NET 和 python.

架构概述

┌─────────────────────────────────────────────────────────────────┐
│                        MCP Agent Client                         │
│                    (Interactive AI Assistant)                   │
└──────────────┬──────────────────────────┬───────────────────────┘
               │                          │
               │ STDIO                    │ HTTP (Streamable)
               │                          │
┌──────────────▼──────────────┐ ┌─────────▼───────────────────────┐
│       MCP Local Server      │ │        MCP Bridge               │
│    (In-memory tickets)      │ │     (MCP over HTTP)             │
│         :STDIO              │ │         :5070                   │
└─────────────────────────────┘ └─────────────┬───────────────────┘
                                              │ REST API
                                              │
                                ┌─────────────▼───────────────────┐
                                │       Remote Server             │
                                │      (REST API Backend)         │
                                │          :5060                  │
                                └─────────────────────────────────┘

组件

组件 描述 运输
远程服务器 带有票证数据的REST API后端 端口5060
MCP电桥 包装REST API的MCP服务器 端口5070(HTTP)
MCP本地服务器 带有内存数据的独立MCP服务器 STDIO
MCP代理客户端 使用MCP服务器的AI代理 交互式CLI

可用的MCP工具

所有MCP服务器都公开了相同的票证管理工具:

工具 说明
GetAllTickets 获取所有具有可选限制的支持票
GetTicket 通过ID获取支持票(例如,ticket-001)
UpdateTicket 更新工单的状态(打开、进行中、已解决、已关闭)

实现

选择您的首选实施方式:

🔷 .NET实现

  • 内置于 .NET 10 和 ASP。NET核心
  • 用途 模型上下文协议 NuGet包
  • 用途 微软。扩展。人工智能 用于AI集成
  • Azure OpenAI用于代理客户端

🐍 Python实现

  • 内置于 Python 3.x 和 快速API
  • 用途 主控程序 模型上下文协议SDK
  • 用途 天蓝色人工智能项目 用于AI集成
  • Azure OpenAI用于代理客户端

快速开始

每个实现都包含启动所有服务的脚本:

视窗

# For .NET
cd dotnet
start_all.cmd

# For Python
cd python
start_all.cmd

macOS/Linux

# For .NET
cd dotnet
chmod +x start_all.sh   # Make executable (first time only)
./start_all.sh

# For Python
cd python
chmod +x start_all.sh   # Make executable (first time only)
./start_all.sh

有关详细的设置说明,请参阅特定于实现的README。

共享数据

所有实现都从共享JSON文件中读取票证数据:

data/tickets.json

这确保了数据的一致性。NET和Python实现。

练习(可选)

准备好探索更多了吗?结账 练习.md 用于扩展研讨会的实践任务:

  • 添加新的MCP工具(CreateTicket, DeleteTicket)
  • 实施票证过滤和搜索
  • 向MCP网桥添加身份验证
  • 用注释扩展数据模型
  • 还有更多奖励挑战!

许可证

麻省理工学院