Skip to main content
Glama
roddyst

i-net HelpDesk MCP Server

by roddyst

i-net HelpDesk MCP Server

An MCP server that provides the Ticket Web API of i-net HelpDesk as tools for any AI agent: search and read tickets, view processing steps, create new tickets, and execute ticket actions (reply, close, escalate ...) — including file attachments.

The server can be operated in two ways:

Mode

Purpose

Authentication

stdio

local process per agent (Claude Desktop/Code, Cursor, VS Code…)

Token or user/password from environment variables

HTTP (streamable)

centrally hosted, multiple users share one server process

each client sends its own Authorization header, optionally plus the HelpDesk URL


Requirements

  • Python 3.10 or newer

  • An i-net HelpDesk with activated Web API

  • A user with the right "Web API" — without this right, the server responds with HTTP 403. Which tickets are visible and which actions are allowed depends on the roles of this user.

Related MCP server: tickiti-mcp

Installation

# direkt aus dem Repository ausführen (empfohlen für den Einstieg)
uvx --from git+https://github.com/roddyst/i-net_mcp_server inet-helpdesk-mcp --help

# oder klassisch installieren
pip install git+https://github.com/roddyst/i-net_mcp_server

For development:

git clone https://github.com/roddyst/i-net_mcp_server
cd i-net_mcp_server
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest

Quickstart: stdio (local agent)

export INET_BASE_URL="https://helpdesk.example.com:9000"
export INET_TOKEN="VGhpcyBpcyBqdXN0IGEgZGVtbyBhY2Nlc3MgdG9rZW4u"
inet-helpdesk-mcp

Configuration for Claude Desktop / Claude Code (claude_desktop_config.json or .mcp.json) — more examples are in examples/:

{
  "mcpServers": {
    "i-net-helpdesk": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/roddyst/i-net_mcp_server", "inet-helpdesk-mcp"],
      "env": {
        "INET_BASE_URL": "https://helpdesk.example.com:9000",
        "INET_TOKEN": "dein-access-token"
      }
    }
  }
}

Instead of a token, INET_USERNAME and INET_PASSWORD (Basic Auth) also work. The token is sent as Authorization: Bearer <token>, exactly as described in the i-net documentation.

Quickstart: HTTP (centrally hosted)

inet-helpdesk-mcp --transport http --host 0.0.0.0 --port 8000 \
                  --base-url https://helpdesk.example.com:9000

The endpoint is then at http://<host>:8000/mcp. The agent enters this URL and sends its HelpDesk token in the Authorization header — this is exactly the "URL + Bearer Token" process; the server forwards the header to the HelpDesk. Example for an MCP client that supports remote servers:

{
  "mcpServers": {
    "i-net-helpdesk": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer dein-access-token" }
    }
  }
}

Without --base-url, the client additionally determines the target system via the X-Inet-Base-Url header. This is practical for tenants with multiple HelpDesk instances but opens the server as a proxy for arbitrary addresses — in an open network, it is therefore better to set a fixed --base-url (then the header is disabled, unless it is allowed with --allow-url-header).

Note on operation: The server does not terminate TLS itself and does not authenticate clients independently — login happens at the HelpDesk with the passed-through token. If it is to be accessible beyond the local network, a reverse proxy with HTTPS should be placed in front of it.


Tools

Tool

Web-API

Description

server_info

Shows the configuration and checks connection + credentials. First stop for errors.

search_tickets

POST /api/ticket/search

Find tickets via a search phrase (query, limit, start, locale).

get_ticket

GET /api/ticket/<id>

Fields and attributes of a ticket; fields narrows down the response.

list_ticket_actions

GET /api/ticket/<id>/actions

Currently allowed ticket actions as a map "Id → Display name".

list_ticket_steps

GET /api/ticket/<id>/steps

Processing steps of a ticket, optionally from a timestamp since.

get_ticket_step

GET /api/ticket/<id>/steps/<step-id>

A processing step including text.

create_ticket

POST /api/ticket/create

Create a new ticket, returns the ticket ID.

apply_ticket_action

POST /api/ticket/<id>/apply

Execute a ticket action, returns the ID of the new processing step.

create_ticket and apply_ticket_action are not registered at all with --read-only — useful if an agent should only be able to read.

Ticket IDs are accepted both as numbers and in the encoded form that appears in the subject lines of HelpDesk emails.

Typical workflow

  1. search_tickets with a phrase like Drucker or Resource:"First Level Support"

  2. get_ticket / list_ticket_steps / get_ticket_step to read

  3. list_ticket_actions to determine the valid action_id

  4. apply_ticket_action with this ID — the IDs differ per ticket, user, and ticket status, so they must not be guessed.

Ticket fields and action arguments

ticket_fields, step_fields, and action_arguments are optional and are normally not needed. If they are, the rules of the Web API apply: keys must correspond to real field keys (or their localized display names), values are strings; JSON values must be encoded as strings. Examples from the i-net documentation:

{
  "ticketextension.dispatchNow": "ALWAYS",           // Ticket sofort disponieren
  "ticketextension.automail": "NO_MAILS_TO_ENDUSER", // keine Auto-Mails an Endanwender
  "processingtimeextension.appointment": "1733875200000", // Wiedervorlage/Termin
  "ticketactionextension.escalate": "{'targetResID':'<GUID>','changeTicketStatus':true}"
}

Unknown ticket fields lead to an error; unknown action arguments are silently discarded by the HelpDesk and only written to the debug log.

Attachments

Attachments are passed as a list, each with content either inline as Base64 or as a path on the server's file system:

{
  "text": "Anfrage mit Anhang",
  "attachments": [
    { "name": "screenshot.png", "content_base64": "iVBORw0KGgo…" },
    { "path": "/tmp/protokoll.pdf", "attachment_type": "Attachment" }
  ]
}

path only works in stdio mode, where the agent and server share the same machine; in HTTP modes it is automatically disabled (and can also be disabled for stdio with --no-local-files). Allowed values for attachment_type: Attachment, EmbeddedImage, Signature, Unknown. Maximum per file: 25 MB.


Configuration

Every option is available as an environment variable and as a command-line switch; the command line wins.

Environment Variable

Switch

Default

Meaning

INET_BASE_URL

--base-url

Base URL of the HelpDesk, e.g. https://helpdesk.example.com:9000

INET_TOKEN

--token

Access token for Authorization: Bearer …

INET_USERNAME / INET_PASSWORD

--username / --password

Basic Auth as an alternative to the token

INET_TRANSPORT

--transport

stdio

stdio, http or sse

INET_HOST

--host

127.0.0.1

Bind address for HTTP transports

INET_PORT

--port

8000

Port for HTTP transports

INET_HTTP_PATH

--http-path

/mcp

Path of the streamable HTTP endpoint

INET_TIMEOUT

--timeout

30

HTTP timeout in seconds

INET_VERIFY_TLS

--no-verify-tls

true

Verify HelpDesk TLS certificate

INET_READ_ONLY

--read-only

false

Hide write tools

INET_ALLOW_URL_HEADER

--allow-url-header

only without INET_BASE_URL

Allow X-Inet-Base-Url header

INET_ALLOW_LOCAL_FILES

--no-local-files

true with stdio, otherwise false

Allow attachments via file path

INET_LOCALE

--locale

en

Default language for search phrase


Troubleshooting

  • Call server_info first — it shows the base URL, auth method, and whether a test query against the HelpDesk works.

  • HTTP 401/403: Token expired or the user lacks the "Web API" right.

  • HTTP 404 for a ticket: Ticket does not exist or is not visible to this user; tickets that are not yet authorized require the dispatcher role.

  • Connection errors: Check the base URL including the port (the HelpDesk default is 9000). For self-signed test systems, --no-verify-tls helps.

  • More details are provided by --log-level DEBUG (logs go to stderr).


Security notes

  • Credentials are stored in environment variables or in the Authorization header and are never logged.

  • The server does exactly what the logged-in user is allowed to do — the rights check remains with the HelpDesk.

  • apply_ticket_action and create_ticket modify data and can, depending on the configuration, trigger emails to end users. For tests, the action argument "ticketextension.automail": "NEVER" or a test system is recommended.

  • get_ticket by default returns all fields of a ticket, including personal data — restrict it deliberately with fields.


English summary

MCP server exposing the i-net HelpDesk Ticket Web-API: search, read, create and act on tickets, with attachment support. Run it over stdio (credentials from INET_BASE_URL + INET_TOKEN) or over streamable HTTP, where each client authenticates by sending its own Authorization: Bearer <token> header — and, when no base URL is configured, selects the HelpDesk instance with an X-Inet-Base-Url header. Tools: server_info, search_tickets, get_ticket, list_ticket_actions, list_ticket_steps, get_ticket_step, create_ticket, apply_ticket_action. Start with --read-only to expose the reading tools only.

License

MIT. Not an official product of i-net software GmbH. Web API documentation: https://docs.inetsoftware.de/helpdesk/help/webapi.ticket/p/ticket-web-api

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.

  • MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/roddyst/i-net_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server