Discovery Agent MCP Server
Enables MCP-compliant agents to perform data discovery, schema matching, and export via HTTP, with a mock mode for demonstration.
README
Discovery Agent — MCP Server (Render deploy)
Self-contained copy of the Discovery Agent MCP server, ready to host on Render (or any host that runs a Python web service) and drive from any MCP-compliant agent over HTTP.
It exposes the full session lifecycle — connect → upload/pick source schema → choose target model → match → review → export/push — as MCP tools over the streamable-http transport.
What's in here
discovery-agent-mcp-server/
├── backend/app/ # the MCP server + all business logic (Python)
│ ├── mcp/ # FastMCP server, tools, HTTP entrypoint
│ ├── api.py # route functions the tools call into
│ ├── matcher.py # lexical fuzzy/Jaccard matcher
│ ├── parsers.py # CSV / Excel / PDF / XML parsing
│ ├── idmc_client.py # IDMC REST + mock catalogue
│ ├── ootb_schema.json # mock Business Entities
│ └── ...
├── industry-library/ # curated source/target schemas
├── sample-data/ # sample dictionaries for demos
├── requirements.txt # pinned dependencies (Python 3.13)
├── render.yaml # Render blueprint (one-click infra)
├── Procfile # start command
├── runtime.txt # Python version pin
└── README.md
How it runs
The server starts with:
MCP_TRANSPORT=http MCP_HOST=0.0.0.0 MCP_PORT=$PORT PYTHONPATH=backend python -m app.mcp
It then serves MCP at https://<your-service>.onrender.com/mcp.
| Env var | Purpose | Value on Render |
|---|---|---|
MCP_TRANSPORT |
selects the transport | http |
MCP_HOST |
bind address | 0.0.0.0 |
MCP_PORT |
bind port | $PORT (Render injects it) |
MCP_ALLOWED_ORIGINS |
required — DNS-rebinding / CORS allowlist | your Render URL (see step 5) |
IDMC_MODE |
mock for the demo catalogue, or unset for live |
mock |
Important: the MCP SDK blocks any request whose
Hostheader isn't inMCP_ALLOWED_ORIGINS. If you skip step 5 the service will boot but every client request returns a rebinding-protection error.
Deploy to Render (Blueprint — easiest)
1. Put this folder in its own Git repo
cd discovery-agent-mcp-server
git init
git add .
git commit -m "Discovery Agent MCP server"
git branch -M main
git remote add origin https://github.com/<you>/discovery-agent-mcp.git
git push -u origin main
2. Create the service on Render
- Go to the Render dashboard → New + → Blueprint.
- Connect the GitHub repo you just pushed. Render reads
render.yamland proposes a web service nameddiscovery-agent-mcp. - Click Apply. The first build installs
requirements.txt(takes a few minutes —pandas/pdfplumbercompile).
3. Wait for "Live"
When the build finishes, Render shows a URL like
https://discovery-agent-mcp.onrender.com.
4. Set the allowlist and redeploy
- Open the service → Environment → the
MCP_ALLOWED_ORIGINSvar. - Set it to your service URL, e.g.
https://discovery-agent-mcp.onrender.com(comma-separate more origins if a browser UI will connect too). - Save changes → Render redeploys automatically.
5. Verify
curl https://discovery-agent-mcp.onrender.com/mcp
A running MCP endpoint replies with a JSON-RPC / SSE error about a missing session (that's expected — it means the endpoint is alive). A 404 or connection error means the service isn't up yet.
Deploy to Render (manual, without the blueprint)
New + → Web Service → connect the repo, then set:
- Runtime: Python 3
- Build command:
pip install -r requirements.txt - Start command:
MCP_TRANSPORT=http MCP_HOST=0.0.0.0 MCP_PORT=$PORT PYTHONPATH=backend python -m app.mcp - Environment variables:
MCP_ALLOWED_ORIGINS=https://<your-service>.onrender.com,IDMC_MODE=mock
Point an agent at it
Any MCP client that supports streamable-http can connect to
https://<your-service>.onrender.com/mcp.
Example mcp.json (Claude Desktop / Cursor / AI Expert Suite style):
{
"mcpServers": {
"discovery-agent": {
"url": "https://<your-service>.onrender.com/mcp",
"transport": "streamable-http"
}
}
}
For a client that only speaks stdio, use a bridge such as mcp-remote:
{
"mcpServers": {
"discovery-agent": {
"command": "npx",
"args": ["mcp-remote", "https://<your-service>.onrender.com/mcp"]
}
}
}
Once connected, the agent sees all the discovery tools (idmc_use_mock,
list_business_entities, create_session, run_match, get_candidates,
apply_decisions, export_mapping, er_diagram, …) and the start_discovery
prompt.
Notes & limits
- Mock mode works fully out of the box — no IDMC credentials required.
- Live IDMC over REST works if you set real credentials via the
idmc_logintool, but the bundledb360-mdm-server.exebridge is Windows-only and won't run on Render's Linux — live MDM-bridge features are unavailable there. Mock mode and REST-based flows are unaffected. - Sessions are in-memory and do not survive a restart. Render's free plan also spins the service down after inactivity; the first request after a spin cools starts it back up (cold start ~30–60 s).
- Uploaded files must be reachable by the server. Over HTTP, prefer the
industry-library source (
source_mode="industry") or paste-JSON targets, since localfile_pathsrefer to the server's filesystem, not the client's.
Run locally first (optional sanity check)
pip install -r requirements.txt
$env:MCP_TRANSPORT="http"; $env:MCP_HOST="127.0.0.1"; $env:MCP_PORT="8800"; $env:PYTHONPATH="backend"
python -m app.mcp
# → serving on http://127.0.0.1:8800/mcp
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.