fieldeffect-mcp
fieldeffect-mcp
MCP server for Field Effect (Covalence MDR — managed detection & response). Exposes the Field Effect MDR Portal REST API's organization, endpoint device, and Active Response reporting endpoints as MCP tools.
Naming note: MSPbots' own integration is registered as "Field Effect" (
subjectCode=FIELDEFFECT); the vendor's product name is "Covalence" / "Field Effect MDR". This MCP covers exactly the 4 GET endpoints MSPbots itself has configured — see Known Gaps below for why the scope stops there.
Overview
Stateless HTTP service. No credentials are ever persisted — each request supplies its own API key via a header, 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) andGET /health(health check).Default port:
8080(configurable viaMCP_HTTP_PORT).
Authentication
Field Effect authenticates with a static API key, created in the API
section of the Field Effect MDR Portal. MSPbots' own integration convention
sends this key as an Authorization: Bearer <api-key> header, and this
server forwards it exactly that way.
HEADER 授权参数说明
Header | 类型 | 是否必填 | 默认值 | 枚举值 | 字段描述 | Example |
| string | 是 | 无 | 无 | Field Effect MDR Portal API Key,转发为上游 |
|
Missing the header returns 401:
{
"error": "Missing credentials",
"message": "This server requires the X-FieldEffect-Api-Key header",
"required_headers": ["X-FieldEffect-Api-Key"],
"optional_headers": []
}Environment Variables
Variable | 类型 | 是否必填 | 默认值 | 说明 |
| int | 否 |
| HTTP 监听端口 |
| string | 否 |
| HTTP 监听地址 |
| string | 否 |
| Field Effect API 基础 URL |
MCP Endpoint
POST /mcp— MCP protocol (streamable HTTP transport)GET /health— health check, returns{"status": "ok"}(pure local probe, does not depend on the Field Effect API)
Tool List
All 4 tools are plain GET calls, matching exactly how MSPbots itself
calls this integration today. All are read-only (readOnlyHint=True).
Tool | 功能 | 参数 |
| 列出该 API Key 可见的所有组织(客户) | 无 |
| 列出所有端点设备(含风险等级/分数),分页返回 |
|
| 获取指定端点设备的杀毒软件状态详情 |
|
| 列出 Active Response 响应事件(如设备隔离),分页返回 |
|
工具返回值统一为紧凑 JSON 字符串(ensure_ascii=False,无 indent),单次返回超过 20,000
字符时会自动截断最大的列表字段并附带 truncated/original_count 标记。出错时返回结构化
错误信封 {"error": {"code", "message", "retryable"}}(code 取自固定词汇表:
not_configured / unauthorized / not_found / invalid_argument / rate_limited /
upstream_error),不抛异常。
测试示例
# 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-FieldEffect-Api-Key: <your-fieldeffect-api-key>" \
-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": "fieldeffect_get_organizations",
"arguments": {}
}
}'Live-verified (2026-07-29) against a real MDR Portal API key: all 4
tools were called end-to-end through this running server —
fieldeffect_get_organizations returned 41 real organizations,
fieldeffect_get_endpoint_devices returned a paginated list (1719 devices
total across 18 pages), fieldeffect_get_endpoint_device_antivirus_details
returned successfully (204, no AV data for that particular device — not an
error), and fieldeffect_get_active_response_actions returned 200.
API Reference
Overview (public, no login required): https://support.fieldeffect.com/en/support/solutions/articles/16000206018-field-effect-apis-overview
The full interactive Swagger/OpenAPI documentation is only accessible from inside the MDR Portal's own Support section — it requires being logged into a Field Effect MDR Portal account, not just having an API key. No public Swagger/OpenAPI spec was found, and probing common spec paths (
/swagger.json,/v1/openapi.json,/v1/api-docs, etc.) directly againstservices.fieldeffect.netall returned404.
Known Gaps
Scope is exactly MSPbots' 4 configured endpoints, not the vendor's full API surface — same situation as
bvoip-mcp/contactscience-mcp/dropsuite-mcpearlier in this program: the vendor's fuller API reference requires a portal login this session doesn't have, so there was no larger accessible spec to weigh a broader scope against.page/per_pageparameters onget_endpoint_devicesandget_active_response_actionsare inferred, not confirmed — the vendor doesn't publish these endpoints' accepted query parameters anywhere accessible. They were added because the live response shape ({"items": [...], "page": 1, "per_page": 100, "total": ..., "pages": ..., "has_next": ..., "has_prev": ...}) strongly suggests a standard page/per_page pagination scheme, but this has not been verified by actually passing those parameters and confirming a changed result. Because the vendor's own real per-page maximum is unconfirmed, this server does not defer to it and instead applies the Vendor MCP SOP's own fallback ceiling:per_pagedefaults to 50 when omitted and is clamped to 200 server-side regardless of what's requested.Response field shapes are whatever the live API returns — not independently verified against a schema, since none is publicly available.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MSPbotsAI/fieldeffect-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server