Frameworks with Marshal SDK
Use the Marshal SDK to load org MCP tools into your agent runtime. Copy the MCP URL and headers from console Marshal → Tools & MCP → Connect (production default below).
Install
Python
pip install "exemplar-harness-sdk[langchain]" # or [agno], [google-adk], …
export EXEMPLAR_API_KEY="eis_your_org_api_key"
# optional: export EXEMPLAR_MCP_URL="https://production-api.exemplar.dev/mcp"from exemplar_harness import Harness
harness = Harness.from_env()
toolkit = harness.tools()
print(toolkit.mcp_url)Prefer MCP for discrete actions. Use A2A connector specialists when an orchestrator should hand off a whole vendor turn — see Connector agents. Full catalog of live demos: Live SDK examples.
Live examples by framework
Customer samples live in exemplar-platform-samples. Set EXEMPLAR_API_KEY (and a provider key). Do not use HARNESS_EXAMPLES_SIMULATED=1.
| Framework | Python (MCP) | Python Relay | TypeScript |
|---|---|---|---|
| LangChain | langchain_mcp.py | langchain.py | ingest · relay |
| LangGraph | — | langgraph.py | (LangChain.js middleware) |
| Agno | agno_mcp.py | agno.py | — |
| Google ADK | google_adk_mcp.py | adk.py | — |
| Claude Agent SDK | claude_agent_mcp.py | claude_sdk.py | ingest · relay |
| OpenAI Agents | — | openai_agents.py | ingest · relay |
| Pydantic AI / CrewAI / SK | — | pydantic_ai · crewai · semantic_kernel | — |
| OpenAI / Anthropic | — | — | openai · anthropic |
| Mastra | — | — | ingest · relay |
| Vercel AI SDK | — | — | ingest/vercel-ai.ts |
| More | See Live SDK examples · python/relay/ |
# Python — live LangChain + MCP
cd exemplar-platform-samples/python
EXEMPLAR_API_KEY=... GOOGLE_API_KEY=... python -m frameworks.langchain_mcp
# TypeScript — live Relay evaluate
cd exemplar-platform-samples/typescript
EXEMPLAR_API_KEY=... npx tsx relay/evaluate.tsProvider map
Python
| Framework | Extra | Entry |
|---|---|---|
| LangChain / LangGraph | [langchain] / [langgraph] | for_provider("langchain") → get_tools() |
| Agno | [agno] | for_provider("agno") |
| Google ADK | [google-adk] | for_provider("google_adk") |
| Claude Agent SDK, Pydantic AI, Autogen, … | matching extra | for_provider(...) |
| OpenAI / Anthropic / LiteLLM adapters | matching extra | for_provider_tools_schema + execute helper |
List names: HarnessTools.supported_providers().
TypeScript
| Framework | Helper area |
|---|---|
| Vercel AI SDK, OpenAI Agents, Anthropic, Claude Agent SDK | ./integrations/… |
| LangChain.js / Mastra | handlers + optional Relay hooks |
| Other chat SDKs | session ingest helpers |
Golden path — LangChain (live)
Matches frameworks/langchain_mcp.py:
import asyncio
from langchain_core.messages import HumanMessage
from langchain_google_genai import ChatGoogleGenerativeAI
from langgraph.prebuilt import create_react_agent
from exemplar_harness import Harness
from exemplar_harness.integrations.langchain import make_langchain_callback_handler
async def main():
harness = Harness.from_env()
toolkit = harness.tools()
mcp = toolkit.for_provider("langchain")
mcp_tools = await mcp.get_tools()
handler = make_langchain_callback_handler(
harness, session_id="demo-session-1", chain_name="sre-orchestrator"
)
llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash", callbacks=[handler])
agent = create_react_agent(llm, mcp_tools)
result = await agent.ainvoke(
{"messages": [HumanMessage(content="List triggered PagerDuty incidents")]},
config={"callbacks": [handler]},
)
print(result["messages"][-1].content)
await toolkit.close_adapters()
asyncio.run(main())Related
- Live SDK examples — full catalog
- Connect clients — IDE MCP config
- Connector agents — MCP vs A2A
- Marshal SDK · SDK client usage
- Getting started
Last updated on