MCP Server
How to Integrate your Product / Authenticated MCP with Reo.Dev
This guide explains how to integrate an authenticated MCP server (e.g. your product MCP, sitting behind OAuth or login) with Reo.Dev using the MCP Intent Gateway. The integration is lightweight, non-intrusive, and requires no changes to developer workflows beyond embedding our SDK in your codebase.
Looking for the open / docs MCP integration? If your MCP is public and not behind authentication, see the existing How to integrate Docs MCP Gateway with Reo.Dev guide.
Integration Overview

Quickstart
1) Installation
Need another language? Python ships first; Node, Go, and other languages support are next. Request an SDK for your stack →. We prioritise by customer demand.
2) Setup your Reo API key
Generate a Product Usage API key in the Reo.Dev dashboard: [Link]

Expose it as an environment variable in your codebase. Example:
3) Send data to Reo.Dev
You can send two activity types:
MCP_IDENTITY_CAPTURE— fire once, at login or first authenticated request, to register the user against yourproduct_id.MCP_TOOL_CALL— fire on every MCP tool invocation, with the tool name, arguments, and any custom fields you want to track.
3.1) Example Payloads
Identity Capture Sample Payload
Tool call sample
4) Constructor parameters
Parameter
Description
Type
Required
Allowed values
activity_type
Reo.Dev supports two activity types. MCP_IDENTITY_CAPTURE registers the authenticated user — fire it during login or on the first authenticated request. MCP_TOOL_CALL logs the tool the user invoked through your MCP server, along with the prompt and arguments.
string
Yes
"MCP_IDENTITY_CAPTURE", "MCP_TOOL_CALL"
user_id
The authenticated user's identifier (e.g. email address).
string
Yes
users email(e.g. [email protected]), linkedin(e.g. https://linkedin.com/in/rachel-smith) or github id(e.g. rachel-smith)
user_id_type
Type of the user identifier. Use "EMAIL" when passing an email address. Valid ID types are - EMAIL, LINKEDIN, GITHUB
string
Yes
EMAIL, LINKEDIN , GITHUB based on user_id entry
product_id
The product or application identifier registered in the REO platform.
string
Yes
Unique slug kind of name for application
meta.prompts
Custom payload. For MCP_TOOL_CALL, include tool and tool_arguments at minimum. Add any custom fields you want to track.
dict
No
JSON payload containing additional metadata of calls being made to MCP took
blocking
When False (default), log_usage() queues the event and returns immediately. Set True only if you need confirmation in-line.
bool
No
True, False
5) Supported environment variables
Variable
Role
Required
REO_API_KEY
Auth key for the gateway. Required unless you pass api_key to the constructor.
Yes
REO_CENSUS_MCP_ENDPOINT
Override the default ingest URL (for staging or self-hosted setups).
No
REO_PRODUCT_USAGE_USER_AGENT
Payload user_agent fallback
No
PACKAGE_TRACKER_VERBOSE
Debug prints to stderr
No
PACKAGE_TRACKER_ANALYTICS / DO_NOT_TRACK
Control when to activate or deactivate the package at env level
No
Configure Data in Reo.Dev
Reo.Dev needs a metric definition for each activity_type you send so your events are parsed and indexed correctly.
Navigate to Settings → Configurations → Product Usage Metrics: [Link]
Create the two metrics below exactly as shown:

MCP_TOOL_CALL and MCP_IDENTITY_CAPTURE configured in Reo.Dev UI.Metric name
Mode
Meta parameters
MCP_TOOL_CALL
Single
tool (Text / String), tool_arguments (Text / String)
MCP_IDENTITY_CAPTURE
Single
—
Troubleshooting
Requests failing? Verify your routing forwards traffic to the Reo.Dev gateway URL.
Ensure HTTPS is enabled on your branded MCP endpoint.
Confirm no auth middleware is blocking proxy requests at the gateway layer — auth should run inside your MCP server, not at the proxy.
SDK issues: confirm
REO_API_KEYis set in your runtime environmentSDK calls are non-blocking by design — failures will not break MCP responses, but they are logged. Check your application logs for
reo.mcp-gatewayentries.
For additional help, contact your assigned account manager or write to us at [email protected].
FAQs
1. What if our SDK language isn't supported?
We launch with Python and support for more languages & frameworks is coming soon. Request it via this form. We prioritise new SDKs by customer demand.
2. Where exactly do we call the SDK in our code?
At the entry point of your MCP request handler, after the user's identity is resolved.
Entry of tool call
3. Does the SDK add latency to MCP responses?
No. It is a non-blocking call and posts to Reo.Dev asynchronously.
Last updated
Was this helpful?

