Context7
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
MCP server for GLPI: tickets, ITIL, assets, knowledge base. GLPI 10/11. Not affiliated with Teclib'.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
GLPI_URL, GLPI_USER_TOKEN, GLPI_APP_TOKEN, GLPI_V2_URL, GLPI_V2_CLIENT_ID, GLPI_V2_CLIENT_SECRET, GLPI_V2_USERNAME, GLPI_V2_PASSWORD, GLPI_V2_SCOPE, GLPI_V2_API_VERSION, GLPI_TOOLSETS, GLPI_TOOLS_INCLUDE, GLPI_TOOLS_EXCLUDE, GLPI_READ_ONLY, GLPI_ALLOW_DELETE, GLPI_REQUIRE_DELETE_REASON, GLPI_DEFAULT_PAGE_SIZE, GLPI_MAX_PAGE_SIZE, GLPI_IDEMPOTENCY_WINDOW, GLPI_RESOURCE_CACHE_TTL, GLPI_MAX_RETRIES, GLPI_TIMEOUTค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://mcp.nextoolsolutions.com/mcpเปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"glpi": {
"command": "npx",
"args": [
"-y",
"@nextoolsolutions/mcp-glpi"
],
"env": {
"GLPI_URL": "ใส่ค่าของคุณ",
"GLPI_USER_TOKEN": "ใส่ค่าของคุณ",
"GLPI_APP_TOKEN": "ใส่ค่าของคุณ",
"GLPI_V2_URL": "ใส่ค่าของคุณ",
"GLPI_V2_CLIENT_ID": "ใส่ค่าของคุณ",
"GLPI_V2_CLIENT_SECRET": "ใส่ค่าของคุณ",
"GLPI_V2_USERNAME": "ใส่ค่าของคุณ",
"GLPI_V2_PASSWORD": "ใส่ค่าของคุณ",
"GLPI_V2_SCOPE": "ใส่ค่าของคุณ",
"GLPI_V2_API_VERSION": "ใส่ค่าของคุณ",
"GLPI_TOOLSETS": "ใส่ค่าของคุณ",
"GLPI_TOOLS_INCLUDE": "ใส่ค่าของคุณ",
"GLPI_TOOLS_EXCLUDE": "ใส่ค่าของคุณ",
"GLPI_READ_ONLY": "ใส่ค่าของคุณ",
"GLPI_ALLOW_DELETE": "ใส่ค่าของคุณ",
"GLPI_REQUIRE_DELETE_REASON": "ใส่ค่าของคุณ",
"GLPI_DEFAULT_PAGE_SIZE": "ใส่ค่าของคุณ",
"GLPI_MAX_PAGE_SIZE": "ใส่ค่าของคุณ",
"GLPI_IDEMPOTENCY_WINDOW": "ใส่ค่าของคุณ",
"GLPI_RESOURCE_CACHE_TTL": "ใส่ค่าของคุณ",
"GLPI_MAX_RETRIES": "ใส่ค่าของคุณ",
"GLPI_TIMEOUT": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http glpi https://mcp.nextoolsolutions.com/mcpclaude mcp add glpi --env GLPI_URL='ใส่ค่าของคุณ' --env GLPI_USER_TOKEN='ใส่ค่าของคุณ' --env GLPI_APP_TOKEN='ใส่ค่าของคุณ' --env GLPI_V2_URL='ใส่ค่าของคุณ' --env GLPI_V2_CLIENT_ID='ใส่ค่าของคุณ' --env GLPI_V2_CLIENT_SECRET='ใส่ค่าของคุณ' --env GLPI_V2_USERNAME='ใส่ค่าของคุณ' --env GLPI_V2_PASSWORD='ใส่ค่าของคุณ' --env GLPI_V2_SCOPE='ใส่ค่าของคุณ' --env GLPI_V2_API_VERSION='ใส่ค่าของคุณ' --env GLPI_TOOLSETS='ใส่ค่าของคุณ' --env GLPI_TOOLS_INCLUDE='ใส่ค่าของคุณ' --env GLPI_TOOLS_EXCLUDE='ใส่ค่าของคุณ' --env GLPI_READ_ONLY='ใส่ค่าของคุณ' --env GLPI_ALLOW_DELETE='ใส่ค่าของคุณ' --env GLPI_REQUIRE_DELETE_REASON='ใส่ค่าของคุณ' --env GLPI_DEFAULT_PAGE_SIZE='ใส่ค่าของคุณ' --env GLPI_MAX_PAGE_SIZE='ใส่ค่าของคุณ' --env GLPI_IDEMPOTENCY_WINDOW='ใส่ค่าของคุณ' --env GLPI_RESOURCE_CACHE_TTL='ใส่ค่าของคุณ' --env GLPI_MAX_RETRIES='ใส่ค่าของคุณ' --env GLPI_TIMEOUT='ใส่ค่าของคุณ' -- npx -y @nextoolsolutions/mcp-glpiเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"glpi": {
"url": "https://mcp.nextoolsolutions.com/mcp"
}
}
}วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"glpi": {
"command": "npx",
"args": [
"-y",
"@nextoolsolutions/mcp-glpi"
],
"env": {
"GLPI_URL": "ใส่ค่าของคุณ",
"GLPI_USER_TOKEN": "ใส่ค่าของคุณ",
"GLPI_APP_TOKEN": "ใส่ค่าของคุณ",
"GLPI_V2_URL": "ใส่ค่าของคุณ",
"GLPI_V2_CLIENT_ID": "ใส่ค่าของคุณ",
"GLPI_V2_CLIENT_SECRET": "ใส่ค่าของคุณ",
"GLPI_V2_USERNAME": "ใส่ค่าของคุณ",
"GLPI_V2_PASSWORD": "ใส่ค่าของคุณ",
"GLPI_V2_SCOPE": "ใส่ค่าของคุณ",
"GLPI_V2_API_VERSION": "ใส่ค่าของคุณ",
"GLPI_TOOLSETS": "ใส่ค่าของคุณ",
"GLPI_TOOLS_INCLUDE": "ใส่ค่าของคุณ",
"GLPI_TOOLS_EXCLUDE": "ใส่ค่าของคุณ",
"GLPI_READ_ONLY": "ใส่ค่าของคุณ",
"GLPI_ALLOW_DELETE": "ใส่ค่าของคุณ",
"GLPI_REQUIRE_DELETE_REASON": "ใส่ค่าของคุณ",
"GLPI_DEFAULT_PAGE_SIZE": "ใส่ค่าของคุณ",
"GLPI_MAX_PAGE_SIZE": "ใส่ค่าของคุณ",
"GLPI_IDEMPOTENCY_WINDOW": "ใส่ค่าของคุณ",
"GLPI_RESOURCE_CACHE_TTL": "ใส่ค่าของคุณ",
"GLPI_MAX_RETRIES": "ใส่ค่าของคุณ",
"GLPI_TIMEOUT": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"glpi": {
"type": "http",
"url": "https://mcp.nextoolsolutions.com/mcp"
}
}
}วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"glpi": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@nextoolsolutions/mcp-glpi"
],
"env": {
"GLPI_URL": "ใส่ค่าของคุณ",
"GLPI_USER_TOKEN": "ใส่ค่าของคุณ",
"GLPI_APP_TOKEN": "ใส่ค่าของคุณ",
"GLPI_V2_URL": "ใส่ค่าของคุณ",
"GLPI_V2_CLIENT_ID": "ใส่ค่าของคุณ",
"GLPI_V2_CLIENT_SECRET": "ใส่ค่าของคุณ",
"GLPI_V2_USERNAME": "ใส่ค่าของคุณ",
"GLPI_V2_PASSWORD": "ใส่ค่าของคุณ",
"GLPI_V2_SCOPE": "ใส่ค่าของคุณ",
"GLPI_V2_API_VERSION": "ใส่ค่าของคุณ",
"GLPI_TOOLSETS": "ใส่ค่าของคุณ",
"GLPI_TOOLS_INCLUDE": "ใส่ค่าของคุณ",
"GLPI_TOOLS_EXCLUDE": "ใส่ค่าของคุณ",
"GLPI_READ_ONLY": "ใส่ค่าของคุณ",
"GLPI_ALLOW_DELETE": "ใส่ค่าของคุณ",
"GLPI_REQUIRE_DELETE_REASON": "ใส่ค่าของคุณ",
"GLPI_DEFAULT_PAGE_SIZE": "ใส่ค่าของคุณ",
"GLPI_MAX_PAGE_SIZE": "ใส่ค่าของคุณ",
"GLPI_IDEMPOTENCY_WINDOW": "ใส่ค่าของคุณ",
"GLPI_RESOURCE_CACHE_TTL": "ใส่ค่าของคุณ",
"GLPI_MAX_RETRIES": "ใส่ค่าของคุณ",
"GLPI_TIMEOUT": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://mcp.nextoolsolutions.com/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
GLPI_URL envGLPI_V2_URL envGLPI_V2_CLIENT_ID envGLPI_V2_USERNAME envGLPI_V2_SCOPE envGLPI_V2_API_VERSION envGLPI_TOOLSETS envGLPI_TOOLS_INCLUDE envGLPI_TOOLS_EXCLUDE envGLPI_READ_ONLY envGLPI_ALLOW_DELETE envGLPI_REQUIRE_DELETE_REASON envGLPI_DEFAULT_PAGE_SIZE envGLPI_MAX_PAGE_SIZE envGLPI_IDEMPOTENCY_WINDOW envGLPI_RESOURCE_CACHE_TTL envGLPI_MAX_RETRIES envGLPI_TIMEOUT envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
server ให้ล็อกอินก่อนจึงจะแสดงรายการเครื่องมือ
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ผู้ลงทะเบียน (nextoolsolutions.com) ไม่ใช่เจ้าของ repo (NexTools-Solutions) อาจเป็นคนอื่นที่นำมาลงต่อ
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตอบกลับใน 414 ms (HTTP 401)
ประกาศวิธีล็อกอินแบบ OAuth ให้โปรแกรม AI พาไปล็อกอินเอง
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 2 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: GLPI_USER_TOKEN, GLPI_APP_TOKEN, GLPI_V2_CLIENT_SECRET, GLPI_V2_PASSWORD
ได้ทั้งสองแบบ จะลงในเครื่องหรือต่อผ่านคลาวด์ก็ได้
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (3.5.7) เข้า registry เมื่อวาน
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Context7, Codebase Memory, Exa
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Connect Claude and other MCP clients to your GLPI. One MCP server for both GLPI APIs; each tool family turns on with its own credentials:
| Family | API | Tools | Enabled by |
|---|---|---|---|
glpi_* | classic REST (apirest.php) or api.php/v1 — GLPI 9.5, 10 and 11 | 111 | GLPI_URL + GLPI_USER_TOKEN (+ GLPI_APP_TOKEN) |
glpi_v2_* | High-level API v2 over OAuth2 — GLPI 11 | 55 | GLPI_V2_URL + GLPI_V2_CLIENT_ID/SECRET + GLPI_V2_USERNAME/PASSWORD |
Until 2.x the v2 family was a separate package (mcp-glpi-v2); since 3.0.0 it lives here, with the same tool names and schemas. Both families share the write policy, payload formatting and create idempotency below.
Not affiliated with Teclib'. GLPI is a registered trademark of Teclib'.
Tool selection. GLPI_TOOLSETS picks named presets (tickets,kb; see Toolsets); GLPI_TOOLS_INCLUDE / GLPI_TOOLS_EXCLUDE take comma-separated globs on tool names (glpi_*ticket*,glpi_search, *webhook*). Toolsets and include globs add up; exclude always wins; with neither toolsets nor include globs every tool registers. An unknown toolset name fails at startup. Fewer tools, less context per session.
Several instances can share this one binary with different env files.
| Entry | Transport | Instances | Authentication |
|---|---|---|---|
dist/index.js (mcp-glpi) | stdio | one, from the environment | none (local process) |
dist/http.js (mcp-glpi-http) | Streamable HTTP, /mcp/ | many, from MCP_INSTANCES_FILE | Authorization: Bearer , required |
The HTTP entry is the one meant to serve every NexTool environment from one place. A key opens only the instances it was granted, a session stays bound to the key and instance that opened it, GLPI sessions, OAuth tokens and catalogue caches are kept per credential, and create idempotency is shared per instance across sessions. One JSON audit line per request goes to stdout (key, instance, methods, tools; never arguments or credentials). GET /healthz answers without authentication.
Keys live in the instances file as SHA-256 hashes only (mode 600; it is re-read when it changes):
{
"instances": { "acme": { "env": { "GLPI_URL": "https://glpi.acme.example", "GLPI_USER_TOKEN": "…", "GLPI_APP_TOKEN": "…" } } }, "keys": [{ "name": "laptop", "sha256": " ", "instances": ["acme"] }] }
KEY=$(openssl rand -hex 32) # give it to the client once
printf %s "$KEY" | sha256sum | cut -d' ' -f1 # goes into "sha256" MCP_INSTANCES_FILE=instances.json MCP_HTTP_PORT=8787 npx mcp-glpi-http
A hosted, multi-tenant version with sign-in through the NexTool portal is available at https://mcp.nextoolsolutions.com/mcp.
Other variables: MCP_HTTP_HOST (default 127.0.0.1), MCP_ALLOWED_HOSTS (Host header allowlist), MCP_SESSION_IDLE_MIN (default 30). The file is re-read when it changes.
glpi://entities, glpi://itil-categories, glpi://request-types, glpi://code-maps) so catalogue lookups do not cost a tool call.GLPI_TOOLSETS=kb there is none).glpi_v2_*): entities, ITIL with team members and timeline, users, groups, knowledge base, dropdowns, documents, rules, session and health check.| Need | Tool | Defaults |
|---|---|---|
| "My tickets" (the connected user's) | glpi_list_my_tickets | open only, latest update first, any role |
| Tickets of the whole instance | glpi_list_tickets | every status, latest update first |
| Arbitrary criteria | glpi_search | GLPI search order |
glpi_list_my_tickets: role (any \| requester \| assigned \| observer), status, sort, order, range, users_id (another user; default the session user from getFullSession). Rows carry requesters / assigned / observers as {id, name}, requester_groups, assigned_groups, status_name, type_name and my_roles; the result also has total and user.glpi_list_tickets: new status, sort and order (the old range and expand_dropdowns keep working). With a status filter the result also has total. Rows carry status_name, type_name, priority_name, category_name, and requesters / assigned as {id, name} (one search per 50 tickets, not one call per ticket).status takes one name or a list: new, assigned (= processing), planned, pending, solved, closed, and open (= new + assigned + planned + pending, GLPI's "not old").sort: date_mod (default), date, id, priority, status, name, solvedate, closedate; order: desc (default) or asc.glpi_v2_list_tickets takes the same status names and sorts by date_mod:desc by default. The v2 API cannot filter on the team (GLPI 11.0.7 ignores or rejects a team filter), so "my tickets" is a v1 tool.glpi_list_changes / glpi_list_problems (and the v2 ones) also default to latest update first.Sub-items keep their IDs and gain names: glpi_list_ticket_users (user_name, type_name), glpi_list_ticket_groups (group_name, type_name), followups (user_name), tasks (user_name, tech_name, tech_group_name), validations (user_name, validator_name, status_name), glpi_list_timeline (all of these, plus solutiontype_name and user_name_approval on solutions), glpi_get_ticket (recipient_name, category_name, entity_name, requesttype_name, location_name, status_name, type_name, priority_name, urgency_name, impact_name), problems and changes (category_name, status_name, priority_name; the single item also the people and entity) and glpi_list_assets (location_name, state_name, user_name). Names are read with GET / / through a 5-minute cache per credential; a name the user cannot read stays null.
Labels of codes (*_status, type_name, priority_name...) are in the language of the GLPI session (getFullSession → glpilanguage, cached per credential), with GLPI's own texts: pt_BR, pt_PT, es_ES, fr_FR, it_IT and de_DE have tables (taken from GLPI 11's locales/*.po), a regional variant uses its family (es_MX → es_ES), anything else GLPI's English. Before 3.5.0 the v1 tools always answered in English ("Solved") while the v2 ones answered in the GLPI language ("Solucionado").
The API v2 labels the status itself but sends priority, urgency, impact and the ticket type as numbers. Since 3.5.1 the v2 ticket/change/problem tools add priority_name, urgency_name, impact_name (and type_name on tickets) beside the codes, in the language whose status table matches the status labels the API returned (the v2 session carries no language); the timeline adds status_name to validations and solutions and state_name to tasks, with the language cached per credential (or read from one ticket). English when nothing matches.
glpi_search keys its rows by search option name in the GLPI user's language ("Título", "Status", "Última atualização") by default since 3.5.0; named_columns: false returns the numeric option IDs ("1", "12", "19"). Since 3.5.1 coded columns (status, priority, urgency, impact, ticket type, approval and solution-approval status) hold the label in the session language and the code sits beside it under " (id)": "Status": "Solucionado", "Status (id)": 5. A column is labelled only when its search option points at a known table/field; the markdown table leaves the (id) columns out, and named_columns: false stays the raw search.
Full reference: docs/TOOLS.md (v1) and docs/v2/TOOLS.md (v2); OAuth2 setup in docs/v2/SETUP.md.
Named presets for GLPI_TOOLSETS (or the toolsets option of instanceFromConfig). Domain presets hold both families; a family still needs its credentials to register. A tool can be in more than one preset, and every tool is in at least one besides core (asserted by the tests). core is the lean default for hosted use: every read tool of the everyday presets (no webhook, rule or session internals) plus the non-destructive ticket operations.
Presets are self-contained (asserted by the tests): a tool named in another tool's description or parameters is in every preset that holds the tool naming it. That is why tickets carries glpi_search / glpi_list_search_options and the user/group reads that put names on people, and assets carries the generic search its list tool points to.
| Preset | Tools (v1 + v2) | What |
|---|---|---|
core | 93 (59 + 34) | reads of tickets/itil/assets/kb/documents/users/search + entity and people reads, plus create/update ticket, followup, solution, task, validation, actors |
tickets | 53 (33 + 20) | ticket lifecycle incl. my tickets, plus search and user/group reads |
itil | 46 (24 + 22) | problems and changes, shared timeline and categories, user/group reads |
assets | 15 (14 + 1) | assets, reservations, locations, generic search |
kb | 16 (10 + 6) | knowledge base |
documents | 12 (8 + 4) | documents and document links |
users | 10 (5 + 5) | user and group reads |
search | 3 (3 + 0) | generic search, counts, search options |
admin | 55 (37 + 18) | GLPI administration: create/update users and groups, entities, session/profile, rules, followup templates, webhooks (plus the user/group reads) |
v2 | 55 (0 + 55) | every glpi_v2_* tool |
Administration with writes only in `admin` (3.5.0, owner's decision): creating or changing users and groups, entities, business rules and webhooks is not in core nor in any everyday preset (tickets, itil, assets, kb, documents, users, search); the reads that help with a ticket (users, groups, entities) stay. The v2 preset is the whole family and still holds them. Asserted by the tests (ADMIN_WRITE_TOOLS, EVERYDAY_TOOLSETS).
Before 3.5.0: users 15 (7 + 8), admin 42 (31 + 11). Before 3.4.0: core 92, tickets 42, itil 38, assets 13.
Tools in each preset
Lean default: every read tool of the everyday presets plus the non-destructive ticket operations
v1: glpi_list_tickets, glpi_list_my_tickets, glpi_get_ticket, glpi_list_followups, glpi_list_timeline, glpi_list_ticket_validations, glpi_list_ticket_users, glpi_list_ticket_groups, glpi_list_ticket_tasks, glpi_get_ticket_stats, glpi_list_itil_categories, glpi_get_itil_category, glpi_list_itil_followup_templates, glpi_get_itil_followup_template, glpi_list_changes, glpi_get_change, glpi_list_change_followups, glpi_list_change_tasks, glpi_list_problems, glpi_get_problem, glpi_list_problem_followups, glpi_list_problem_tasks, glpi_list_assets, glpi_get_asset, glpi_get_asset_details, glpi_list_reservation_items, glpi_list_reservations, glpi_get_reservation, glpi_list_locations, glpi_get_location, glpi_list_knowbase_items, glpi_get_knowbase_item, glpi_list_knowbase_categories, glpi_get_knowbase_category, glpi_list_documents, glpi_get_document, glpi_list_document_items, glpi_get_document_item, glpi_get_user, glpi_search_user_by_email, glpi_list_users, glpi_list_groups, glpi_get_group, glpi_search, glpi_count_items, glpi_list_search_options, `glpi_list_entitie
ตัดมาแค่ช่วงต้น อ่านต่อใน repo