使用说明
MCP协议示例
该项目包括使用Model Context Protocol(MCP)提供天气信息的示例服务器,以及测试这些信息的客户端。 未来将添加多种MCP协议示例。
MCP(模型上下文协议)란?
Model Context Protocol(MCP)是一种开放式协议,用于标准化AI模型与外部数据和工具的交互方式。允许“主机”(如编辑器(VS Code等)或AI应用程序(Claude Desktop等)连接到本地或远程资源(“服务器”)。这使AI模型可以安全地访问各种源,包括本地文件、数据库和Web API。
参考链接
- 官方网站和文档: https://modelcontextprotocol.io/
- GitHub存储库: https://github.com/modelcontextprotocol
MCP基本架构(Basic Architecture)
MCP遵循基于主机(客户端)和服务器之间1:1连接的客户端-服务器体系结构。
-
主机(客户端)
- 启动MCP连接的主体(例如Claude Desktop、VS Code或
weather_client.py). - 接收用户的输入,必要时向服务器请求运行工具或读取资源。
- 浏览并利用服务器提供的功能。
- 启动MCP连接的主体(例如Claude Desktop、VS Code或
-
服务器
- 提供实际数据或功能的主体(例如:
weather_server.py). - 资源:只读数据(文本、图像等)。文件内容或API响应等。
- 工具:可执行函数。还包括外部API调用、计算、数据库查询等具有副作用的操作。
- 提示:预定义的提示模板。允许重复使用复杂的指示。
- 提供实际数据或功能的主体(例如:
-
Transport(通信方式)
- 工作室:通过标准输入输出(Standard Input/Output)进行通信。主要用于本地进程之间的连接。
- SSE(服务器发送事件):基于HTTP的通信。非常适合远程服务器连接。
公共设置(Prerequisites)
此项目中的所有示例都使用通用虚拟环境和依赖性。请在项目根目录中按照以下步骤设置环境:
-
创建和激活虚拟环境
# 프로젝트 루트에서 실행 python -m venv .venv .\.venv\Scripts\Activate.ps1 -
依赖性安装
# 프로젝트 루트에서 실행 pip install -r requirements.txt
1.天气协议(src/mcp-weather)
使用Open-Meteo API提供和查询天气信息的示例。
文件说明
-
src/mcp-weather/weather_server.py:MCP服务器实施方案- 功能(Tools):
get_weather_forecast:基于纬度/经度的天气预报get_weather_by_location:基于地名(例如“首尔”)的天气查询
- 特点:支持STDIO和SSE传输方式
- 功能(Tools):
-
src/mcp-weather/weather_client.py:测试客户端- 连接到服务器,查看并运行工具列表,执行资源读取测试
实施的MCP功能
| 区分 | 功能 | 说明 | 实现方法 |
|---|---|---|---|
| 服务器 | 工具 运行函数(查询天气) @app.list_tools(), @app.call_tool() |
||
| 资源 | 读取数据(状态、天气) | @app.list_resources(), @app.read_resource() |
|
| 资源模板 | 动态URI模式 | @app.list_resource_templates() |
|
| 运输 | 通信方式 | StdioServerTransport, SseServerTransport |
|
| 客户端 | 呼叫工具 | 工具调用Test | session.call_tool() |
| 读取资源 | 资源读取Test | session.read_resource() |
执行方法
-
服务器运行(SSE模式)
# 터미널 1 (가상환경 활성화 상태) python src/mcp-weather/weather_server.py --sse -
客户端测试
# 터미널 2 (가상환경 활성화 상태) python src/mcp-weather/weather_client.py
2.销售助理/CRM(src/mcp-sales-crm)
面向销售代表的Mock CRM系统。支持查看客户配置文件、查看最近的活动历史记录和记录会议笔记。
特点
- 本地JSONDB:
src/mcp-sales-crm/data/customers.json使用文件管理数据。 - 通过Resource提供仪表板:以资源的形式实时查看关键客户信息。
实施的MCP功能(协议细节)
|区分名称说明输入URI
|---|---|---|---|
| 工具 | get_customer_profile |查看客户概要信息和基础信息| cust_name_or_id (客户名称/ID)|
| | get_recent_interactions |查看最近的会议、电子邮件等活动历史记录| cust_name_or_id (客户名称/ID)|
| | add_meeting_note |添加新的会议笔记(数据库更新)| cust_id (ID), note (内容), date |
| 资源 | Sales Dashboard |高风险客户列表摘要| sales://dashboard |
执行方法
- 运行服务器 (端口:8001)
python src/mcp-sales-crm/sales_server.py --sse - 客户端测试
python src/mcp-sales-crm/sales_client.py
3.供应链/ERP(src/mcp-supply-chain)
用于库存管理和紧急订购的Mock ERP系统。提供库存确认、替代品搜索和订购功能。
特点
- 业务逻辑:库存不足时搜索替代产品(
find_alternative_product)的逻辑。 - 更改状态:
place_restock_order工具实际上inventory.json更改文件的库存数量。
实施的MCP功能(协议细节)
| 区分 | 名称 | 说明 | 输入(Arguments) |
|---|---|---|---|
| 工具 | check_product_stock |
确认特定商品的库存和位置 | sku_or_name (SKU或商品名称) |
find_alternative_product |
搜索同一类别的替代产品(过滤最小库存) | category (类别), min_stock (最小数量) |
|
place_restock_order 商品订购(库存数量增加) sku (目标SKU), quantity (数量) |
执行方法
- 运行服务器 (端口:8002)
python src/mcp-supply-chain/supply_server.py --sse - 客户端测试
python src/mcp-supply-chain/supply_client.py
4.人力资源与政策礼宾(src/mcp-hr-policy)
用于内部法规发现和休假管理的Mock HR系统。同时利用结构化数据(DB)和非结构化数据(法规文档)。
特点
- 混合数据:
- 员工信息
employees.json(结构化) - 公司内部规定
policy.md(非结构化/文本)
- 员工信息
- 搜索文档:
search_policy_docs该工具在Markdown文档中搜索关键字并返回相关条款。
实施的MCP功能(协议细节)
| 区分 | 名称 | 说明 | 输入(Arguments) |
|---|---|---|---|
| 工具 | get_employee_balance |
查看员工休假剩余天数 | employee_id (员工ID,例如“emp_001”) |
search_policy_docs |
内部法规搜索(匹配Markdown文档中的关键字) | query (搜索词,例如“假期”) |
|
submit_leave_request |
休假申请(剩余天数递减并保存状态) | employee_id, type (类型), days (天数) |
|
| 数据 | employees.json |
员工假期余额和申请情况数据(韩文)-- | |
policy.md |
公司内部法规文档(文本、韩文)-- |
执行方法
- 运行服务器 (端口:8003)
python src/mcp-hr-policy/hr_server.py --sse - 客户端测试
python src/mcp-hr-policy/hr_client.py
