MCP server for EAD Factory: qualified evidence, signature, notifications and chat via AI agents.
Connect Runs on your machine
claude mcp add ead-factory -e MCP_ALLOW_INSECURE_FILE_URL=<MCP_ALLOW_INSECURE_FILE_URL> -e MCP_ALLOW_UNVERIFIED_BEARER=<MCP_ALLOW_UNVERIFIED_BEARER> -e MCP_ALLOWED_HOSTS=<MCP_ALLOWED_HOSTS> -e MCP_ALLOWED_ORIGINS=<MCP_ALLOWED_ORIGINS> -e MCP_API_BASE_URL=<MCP_API_BASE_URL> -e MCP_API_BASE_URL_CHAT=<MCP_API_BASE_URL_CHAT> -e MCP_API_BASE_URL_EVIDENCE=<MCP_API_BASE_URL_EVIDENCE> -e MCP_API_BASE_URL_NOTIFICATION=<MCP_API_BASE_URL_NOTIFICATION> -e MCP_API_BASE_URL_SIGNATURE=<MCP_API_BASE_URL_SIGNATURE> -e MCP_HTTP_HOST=<MCP_HTTP_HOST> -e MCP_HTTP_MAX_BODY_BYTES=<MCP_HTTP_MAX_BODY_BYTES> -e MCP_HTTP_PUBLIC=<MCP_HTTP_PUBLIC> -e MCP_SVC_CLIENT_ID=<MCP_SVC_CLIENT_ID> -e MCP_SVC_CLIENT_SECRET=<MCP_SVC_CLIENT_SECRET> -e MCP_SVC_INTROSPECT_URL=<MCP_SVC_INTROSPECT_URL> -e MCP_SVC_SCOPE=<MCP_SVC_SCOPE> -e MCP_SVC_TOKEN_URL=<MCP_SVC_TOKEN_URL> -e PORT=<PORT> -- npx -y @g-digital/[email protected]
{
"mcpServers": {
"ead-factory": {
"command": "npx",
"args": [
"-y",
"@g-digital/[email protected]"
],
"env": {
"MCP_ALLOW_INSECURE_FILE_URL": "<MCP_ALLOW_INSECURE_FILE_URL>",
"MCP_ALLOW_UNVERIFIED_BEARER": "<MCP_ALLOW_UNVERIFIED_BEARER>",
"MCP_ALLOWED_HOSTS": "<MCP_ALLOWED_HOSTS>",
"MCP_ALLOWED_ORIGINS": "<MCP_ALLOWED_ORIGINS>",
"MCP_API_BASE_URL": "<MCP_API_BASE_URL>",
"MCP_API_BASE_URL_CHAT": "<MCP_API_BASE_URL_CHAT>",
"MCP_API_BASE_URL_EVIDENCE": "<MCP_API_BASE_URL_EVIDENCE>",
"MCP_API_BASE_URL_NOTIFICATION": "<MCP_API_BASE_URL_NOTIFICATION>",
"MCP_API_BASE_URL_SIGNATURE": "<MCP_API_BASE_URL_SIGNATURE>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_MAX_BODY_BYTES": "<MCP_HTTP_MAX_BODY_BYTES>",
"MCP_HTTP_PUBLIC": "<MCP_HTTP_PUBLIC>",
"MCP_SVC_CLIENT_ID": "<MCP_SVC_CLIENT_ID>",
"MCP_SVC_CLIENT_SECRET": "<MCP_SVC_CLIENT_SECRET>",
"MCP_SVC_INTROSPECT_URL": "<MCP_SVC_INTROSPECT_URL>",
"MCP_SVC_SCOPE": "<MCP_SVC_SCOPE>",
"MCP_SVC_TOKEN_URL": "<MCP_SVC_TOKEN_URL>",
"PORT": "<PORT>"
}
}
}
}
{
"mcpServers": {
"ead-factory": {
"command": "npx",
"args": [
"-y",
"@g-digital/[email protected]"
],
"env": {
"MCP_ALLOW_INSECURE_FILE_URL": "<MCP_ALLOW_INSECURE_FILE_URL>",
"MCP_ALLOW_UNVERIFIED_BEARER": "<MCP_ALLOW_UNVERIFIED_BEARER>",
"MCP_ALLOWED_HOSTS": "<MCP_ALLOWED_HOSTS>",
"MCP_ALLOWED_ORIGINS": "<MCP_ALLOWED_ORIGINS>",
"MCP_API_BASE_URL": "<MCP_API_BASE_URL>",
"MCP_API_BASE_URL_CHAT": "<MCP_API_BASE_URL_CHAT>",
"MCP_API_BASE_URL_EVIDENCE": "<MCP_API_BASE_URL_EVIDENCE>",
"MCP_API_BASE_URL_NOTIFICATION": "<MCP_API_BASE_URL_NOTIFICATION>",
"MCP_API_BASE_URL_SIGNATURE": "<MCP_API_BASE_URL_SIGNATURE>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_MAX_BODY_BYTES": "<MCP_HTTP_MAX_BODY_BYTES>",
"MCP_HTTP_PUBLIC": "<MCP_HTTP_PUBLIC>",
"MCP_SVC_CLIENT_ID": "<MCP_SVC_CLIENT_ID>",
"MCP_SVC_CLIENT_SECRET": "<MCP_SVC_CLIENT_SECRET>",
"MCP_SVC_INTROSPECT_URL": "<MCP_SVC_INTROSPECT_URL>",
"MCP_SVC_SCOPE": "<MCP_SVC_SCOPE>",
"MCP_SVC_TOKEN_URL": "<MCP_SVC_TOKEN_URL>",
"PORT": "<PORT>"
}
}
}
}
{
"servers": {
"ead-factory": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@g-digital/[email protected]"
],
"env": {
"MCP_ALLOW_INSECURE_FILE_URL": "<MCP_ALLOW_INSECURE_FILE_URL>",
"MCP_ALLOW_UNVERIFIED_BEARER": "<MCP_ALLOW_UNVERIFIED_BEARER>",
"MCP_ALLOWED_HOSTS": "<MCP_ALLOWED_HOSTS>",
"MCP_ALLOWED_ORIGINS": "<MCP_ALLOWED_ORIGINS>",
"MCP_API_BASE_URL": "<MCP_API_BASE_URL>",
"MCP_API_BASE_URL_CHAT": "<MCP_API_BASE_URL_CHAT>",
"MCP_API_BASE_URL_EVIDENCE": "<MCP_API_BASE_URL_EVIDENCE>",
"MCP_API_BASE_URL_NOTIFICATION": "<MCP_API_BASE_URL_NOTIFICATION>",
"MCP_API_BASE_URL_SIGNATURE": "<MCP_API_BASE_URL_SIGNATURE>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_MAX_BODY_BYTES": "<MCP_HTTP_MAX_BODY_BYTES>",
"MCP_HTTP_PUBLIC": "<MCP_HTTP_PUBLIC>",
"MCP_SVC_CLIENT_ID": "<MCP_SVC_CLIENT_ID>",
"MCP_SVC_CLIENT_SECRET": "<MCP_SVC_CLIENT_SECRET>",
"MCP_SVC_INTROSPECT_URL": "<MCP_SVC_INTROSPECT_URL>",
"MCP_SVC_SCOPE": "<MCP_SVC_SCOPE>",
"MCP_SVC_TOKEN_URL": "<MCP_SVC_TOKEN_URL>",
"PORT": "<PORT>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
MCP_ALLOW_INSECURE_FILE_URLOptional | Set to "true" to allow plain http:// fileUrl downloads in evidence_create (default https-only). Private/internal addresses are rejected regardless (resolution-time check; see the documented DNS TOCTOU limitation in the hosted-deployment runbook). |
MCP_ALLOW_UNVERIFIED_BEAREROptional | Escape hatch for MCP_HTTP_PUBLIC=true WITHOUT inbound-token introspection: set to "true" ONLY when an upstream gateway already verifies Bearer tokens. The server logs a prominent warning and forwards tokens upstream unverified. |
MCP_ALLOWED_HOSTSOptional | Comma-separated allowed Host headers. Empty = Host validation disabled (default). When set, requests with a Host outside the list are rejected. |
MCP_ALLOWED_ORIGINSOptional | Comma-separated allowed browser Origins (DNS-rebinding defense). Empty = reject any request carrying an Origin header; non-browser clients (CLI/SDK) send no Origin and are always allowed. Use '*' to allow all. |
MCP_API_BASE_URLOptional | Gateway ROOT URL (e.g. https://api.int.gcloudfactory.com) — each manager's path prefix is appended automatically; do NOT include a manager path here |
MCP_API_BASE_URL_CHATOptional | Full base URL override for the chat manager, used as-is (default: https://api.gcloudfactory.com/chat-bot-manager) |
MCP_API_BASE_URL_EVIDENCEOptional | Full base URL override for the evidence manager, used as-is (default: https://api.gcloudfactory.com/digital-trust) |
MCP_API_BASE_URL_NOTIFICATIONOptional | Full base URL override for the notification manager, used as-is (default: https://api.gcloudfactory.com/notifications) |
MCP_API_BASE_URL_SIGNATUREOptional | Full base URL override for the signature manager, used as-is (default: https://api.gcloudfactory.com/signature-manager) |
MCP_HTTP_HOSTOptional | Interface the HTTP transport binds to. Default 127.0.0.1 (localhost only). Set 0.0.0.0 to expose on all interfaces (containers do this automatically). |
MCP_HTTP_MAX_BODY_BYTESOptional | Maximum accepted POST /mcp request-body size in bytes (default 16777216 = 16 MiB — sized so base64 file uploads within the documented tool limits fit). Oversized requests get a 413 JSON-RPC error before/while reading — closes a memory-exhaustion DoS vector in public deployments. Note: base64 file s… |
MCP_HTTP_PUBLICOptional | Set to "true" for public/multi-tenant deployments. Activates Host validation and refuses to start unless (1) MCP_ALLOWED_ORIGINS or MCP_ALLOWED_HOSTS is set AND (2) inbound Bearer introspection is configured (MCP_SVC_INTROSPECT_URL + MCP_SVC_CLIENT_ID/SECRET) or MCP_ALLOW_UNVERIFIED_BEARER=true is… |
MCP_SVC_CLIENT_IDRequired | OAuth2 client_credentials client ID. |
MCP_SVC_CLIENT_SECRETRequired, secret | OAuth2 client_credentials client secret. (See https://digitaltrust.gcloudfactory.com for credential acquisition.) |
MCP_SVC_INTROSPECT_URLOptional | RFC 7662 token introspection URL for inbound Bearer verification in HTTP mode. Opt-in, and required when MCP_HTTP_PUBLIC=true. Leave empty for stdio (local) use. |
MCP_SVC_SCOPEOptional | Optional OAuth2 scope for the service-account token request. |
MCP_SVC_TOKEN_URLRequired | Token endpoint URL for the OAuth2 client_credentials flow. |
PORTOptional | HTTP port when running in hosted (HTTP) mode; ignored in stdio mode |
Details
| Package | @g-digital/[email protected] (NPM, stdio) |
| First published | 9 Sep 2026 |
| Last updated | 9 Sep 2026 |
| Registry name | io.github.g-digital-by-Garrigues/ead-factory |
More communication servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
