ITSM报告数据服务

一个RESTful API服务,用于从ServiceNow和GLPI获取票务数据并生成CSV格式的报告。

  • by antuelle78
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 antuelle78/model-context-protocol

使用说明

模型上下文协议(MCP)服务器

该项目实现了一个RESTful API,作为ITSM报告的数据核心。它从ServiceNow和GLPI获取工单数据,并提供工具以生成吸引眼球的CSV格式报告。

特点/特性

  • MCP 终端节点 (POST /api/v1/mcp): 一个统一的端点,适用于所有符合MCP标准的工具。
  • ServiceNow 集成与ServiceNow交互的工具。
  • GLPI集成用于与GLPI实例交互的工具,包括一个获取库存详情的工具。
  • 文件工具用于与本地文件系统交互的工具。

所有终端点均以OpenAPI格式记录,并由FastAPI自动提供服务。

建筑学

在(相关文档/资料中)可以找到一张描绘项目架构的流程图 架构文档.

项目结构

/home/mnelson-ext/model-context-protocol/
├───.env
├───docker-compose.yml
├───mcp.json
├───README.md
├───requirements.txt
├───swagger.json
├───test.db
├───.git/...
├───app/
│   ├───__init__.py
│   ├───api_tool_builder.py
│   ├───config.py
│   ├───database.py
│   ├───main.py
│   ├───mcp_router.py
│   ├───models.py
│   ├───schemas.py
│   ├───services.py
│   ├───tool_utils.py
│   └───yahoo_finance_tools.py
├───data/
│   ├───jokes.txt
│   ├───poem.txt
│   └───story.txt
├───docker/
│   ├───docker-compose.yml
│   ├───Dockerfile
│   └───integration_instructions.md
├───docs/
│   ├───api_documentation.md
│   ├───architecture.md
│   ├───integration_instructions.md
│   ├───open-webui-tool.py
│   └───README.md
├───file_service/
│   ├───Dockerfile
│   ├───main.py
│   └───requirements.txt
├───glpi_service/
│   ├───config.py
│   ├───database.py
│   ├───Dockerfile
│   ├───glpi_api_service.py
│   ├───main.py
│   ├───models.py
│   ├───requirements.txt
│   └───schemas.py
├───mock_glpi_api/
│   ├───app.py
│   ├───Dockerfile
│   └───requirements.txt
├───mock_servicenow_api/
│   ├───app.py
│   ├───Dockerfile
│   └───requirements.txt
├───network_share/
│   ├───config.json
│   ├───logo.png
│   └───report_data.csv
├───servicenow_service/
│   ├───config.py
│   ├───database.py
│   ├───Dockerfile
│   ├───main.py
│   ├───models.py
│   ├───requirements.txt
│   ├───schemas.py
│   └───services.py
└───tests/
    ├───conftest.py
    └───test_main.py

设置与运行

  1. 创建一个虚拟环境:

    python3 -m venv .venv
    source .venv/bin/activate
    
  2. 安装依赖项:

    pip install -r requirements.txt
    
  3. 创建一个 .env 文件 在项目的根目录中。你可以使用 .env.example 如果有的话,将其作为模板文件。

  4. 运行应用程序:

    uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
    

配置

该应用程序是使用(某种配置方式或工具)进行配置的 .env 在项目根目录中的文件。该 APIs 变量是一个JSON字符串,用于定义要连接的API。

DB_URL="sqlite:///./test.db"
APIs='[
  {
    "name": "servicenow",
    "base_url": "https://your-instance.service-now.com",
    "openapi_url": "https://your-instance.service-now.com/api/now/api-doc",
    "auth_type": "basic",
    "auth_user": "your-username",
    "auth_pass": "your-password"
  },
  {
    "name": "glpi",
    "base_url": "https://your-glpi-instance.com/apirest.php",
    "openapi_url": "https://your-glpi-instance.com/apirest.php/openapi.json",
    "auth_type": "bearer",
    "auth_key": "your-glpi-user-token"
  }
]'

运行测试

  1. 激活虚拟环境:

    source .venv/bin/activate
    
  2. 运行测试:

    PYTHONPATH=. .venv/bin/pytest
    

Open-webui 自定义工具

为了与Open-webui集成,您可以创建一个自定义工具来与MCP服务器进行交互。请参阅 docs/open-webui-tool.py 请参考附带的示例文件。