logmein-mcp

logmein-mcp

MCP server for LogMeIn Rescue that exposes session, chat log, note, and reporting tools via the vendor's API, requiring per-request credentials.

Category
访问服务器

README

logmein-mcp

MCP server for LogMeIn Rescue (remote support/screen-sharing platform). Exposes the Rescue API's session, chat log, note, and reporting methods as MCP tools.

Naming note: MSPbots' own integration is registered as "LogMeIn" (subjectCode=LOGMEIN); the vendor's current product name is "LogMeIn Rescue" (part of GoTo). This MCP covers exactly the 4 methods MSPbots itself has configured (Report, Session, Chat, Note) — see API Reference below for where the full method catalog lives.

Overview

  • Stateless HTTP service. No credentials are ever persisted — each request supplies its own username/password via headers, used only for the lifetime of that single request.
  • Supports concurrent requests; per-request credential isolation is done via Python contextvars, not a global/shared client instance.
  • Entry points: POST /mcp (MCP protocol) and GET /health (health check).
  • Default port: 8080 (configurable via MCP_HTTP_PORT).

Authentication

The Rescue API is a classic ASP.NET session-cookie API: login.aspx authenticates with an email/username + password and returns an ASP.NET_SessionId cookie, which every subsequent call relies on — there is no bearer token or API key. To keep this server fully stateless (no session cached across MCP calls), it performs a fresh login on every single tool invocation, then makes the real API call(s) on that same short-lived httpx.AsyncClient (and therefore the same cookie) before discarding it entirely.

HEADER 授权参数说明

Header 类型 是否必填 默认值 枚举值 字段描述 Example
X-LogMeIn-Username string LogMeIn Rescue 账号邮箱/用户名 admin@example.com
X-LogMeIn-Password string 对应密码 ••••••••

Missing either header returns 401:

{
  "error": "Missing credentials",
  "message": "This server requires the X-LogMeIn-Username and X-LogMeIn-Password headers",
  "required_headers": ["X-LogMeIn-Username", "X-LogMeIn-Password"],
  "optional_headers": []
}

An invalid username/password surfaces as a tool-level error (Error: LogMeIn Rescue API error: login failed: INVALID), not an HTTP-level error, since the failure only becomes known after the login step inside the tool call.

Environment Variables

Variable 类型 是否必填 默认值 说明
MCP_HTTP_PORT int 8080 HTTP 监听端口
MCP_HTTP_HOST string 0.0.0.0 HTTP 监听地址
LOGMEIN_BASE_URL string https://secure.logmeinrescue.com/API Rescue API 基础 URL

MCP Endpoint

  • POST /mcp — MCP protocol (streamable HTTP transport)
  • GET /health — health check, returns {"status": "ok", "service": "logmein-mcp", "transport": "http"}

Tool List

Tool 功能 参数
logmein_get_report 生成并获取 Rescue 报表(依次调用 setReportArea + 可选 setReportDate_v2 + getReport_v2) report_area(必填,0-10 枚举),node(可选,默认 -2),nodetype(可选,默认 EXTERNALROOT),begin_date/end_date(可选)
logmein_get_session 列出某个节点(技术员/频道)当前/近期的会话 node(必填),noderef(可选,NODE/CHANNEL,默认 NODE
logmein_get_chat 获取指定会话的聊天记录 session(必填,会话 ID)
logmein_get_note 获取指定会话的技术员备注 session(必填,会话 ID)

Responses are the vendor's raw pipe-delimited text (starting with OK or ERROR, never JSON), returned as-is — consistent with how the Rescue API itself replies.

测试示例

# Health check
curl -s http://localhost:8080/health

# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp \
  -H "X-LogMeIn-Username: admin@example.com" \
  -H "X-LogMeIn-Password: <your-password>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: <session-id-from-initialize>" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "logmein_get_session",
      "arguments": {"node": "57554", "noderef": "NODE"}
    }
  }'

Live-verified (2026-07-30) against a real Rescue account (ThrottleNet, Inc): logmein_get_session (node = the account's own AccountID) returned OK with the session table header (no active sessions at test time — a valid empty result, not an error); logmein_get_report with report_area=2 (Login report) chained setReportAreagetReport_v2 and returned OK with the Login report's column header; logmein_get_chat and logmein_get_note were called with a non-existent session ID and correctly returned ERROR (the vendor's documented response for an unknown session — not an auth failure, confirming the login pipeline works). A separate handshake using a deliberately wrong password correctly surfaced Error: LogMeIn Rescue API error: login failed: INVALID.

API Reference

  • Overview (public, no login required): https://support.logmein.com/rescue/help/rescue-api-reference-guide-articles
  • Method-specific pages used by this server:
    • Login: https://support.logmein.com/rescue/help/API_map_account_info
    • Session Management (getSession_v3): https://support.logmein.com/rescue/help/API_map_session_management
    • Reporting (getChat, getNote, getReport_v2, setReportArea, setReportDate_v2): https://support.logmein.com/rescue/help/API_map_reporting

Known Gaps

  • Scope is exactly MSPbots' 4 configured endpoints (Report, Session, Chat, Note), not the vendor's full API surface — the Rescue API also exposes Account Management, CRM integration, and ReportArea configuration methods (date/time/delimiter/output format setters) that MSPbots does not use; those are out of scope here.
  • The authcode field MSPbots also stores for this integration is not used by this server. The Rescue API documents authcode as an alternative to logging in (mainly for the Session Management methods; Reporting methods require login regardless of authcode). Live testing showed that the provided authcode value was rejected (INVALID_SECRETAUTHCODE) when passed, while plain username+password login worked correctly and was sufficient for all 4 endpoints — matching MSPbots' own stored config, which has no auth template defined beyond credentials. This server therefore relies solely on the login-cookie flow.
  • The vendor rate-limits getReport_v2 to once per 60 seconds per account (documented). Calling logmein_get_report more frequently than that will likely fail at the vendor side.
  • node/nodetype defaults for logmein_get_report (-2 / EXTERNALROOT, meaning "the whole External Technicians tree") were chosen to match a whole-account report, mirroring MSPbots' generic "Logmein Report" endpoint naming (MSPbots' own stored config has no specific node/nodetype recorded). Callers needing a report scoped to a single technician or group should override both parameters.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选