# mcp-mesh

> Enterprise-grade distributed AI agent framework | Develop → Deploy → Observe | K8s-native | Dynamic DI | Auto-failover | Multi-LLM | Python + Java + TypeScript

- **URL**: https://www.freshcrate.ai/projects/mcp-mesh
- **Author**: dhyansraj
- **Category**: MCP Servers
- **Latest version**: `v2.4.0` (2026-06-04)
- **License**: MIT
- **Source**: https://github.com/dhyansraj/mcp-mesh
- **Homepage**: https://mcp-mesh.ai
- **Language**: Python
- **GitHub**: 33 stars, 6 forks
- **Registry**: github
- **Tags**: `agentic-ai`, `ai-agents`, `ai-agents-framework`, `distributed-ai`, `java`, `kubernetes`, `mcp`, `mcp-mesh`, `python`

## Description

Enterprise-grade distributed AI agent framework | Develop → Deploy → Observe | K8s-native | Dynamic DI | Auto-failover | Multi-LLM | Python + Java + TypeScript

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `v2.4.0` | 2026-06-04 | High | ## LLM contract maturity across the polyglot trilogy — `response_model`, server-enforced structured output, and Java `@mesh.llm` parity.  v2.3 completed the MeshJob lifecycle surface; v2.4 turns to the `@mesh.llm` contract. The schema the model is asked to emit is now cleanly separable from a tool's own return type, structured output is enforced natively by the provider instead of a brittle re-prompt fallback, and Java's `@mesh.llm` reaches feature parity with Python and TypeScript. Spring use |
| `v2.3.0` | 2026-05-23 | High | ## v2.3.0 (2026-05-23)  Lifecycle facades across the polyglot trilogy + unified dependency-injection contract.  v2.2 introduced the MeshJob substrate; v2.3 completes the lifecycle surface so callers that hold only a `job_id` can drive cancel / status / wait through DDDI-clean module-level facades — the same shape `post_event` and `subscribe_events` already had. The DI rules for `McpMeshTool` and `MeshJob` parameters are unified under a single positional contract, eliminating a silent wrong-proxy |
| `v2.2.4` | 2026-05-21 | High | ## v2.2.4 (2026-05-21)  Cross-loop affinity fix for v2.2 adopters using FastAPI lifespan patterns. Apps that create loop-bound resources (`asyncpg.Pool`, `redis.asyncio.Redis`, `aiohttp.ClientSession`) in `lifespan` startup and use them from tool bodies hit "Future attached to a different loop" errors in v2.2.0 — the documented `MCP_MESH_TOOL_WORKERS=1` "escape hatch" did not actually solve it. v2.2.4 fixes the topology so standard FastAPI patterns work as expected.  ### 🪢 Loop topology fix (#1 |
| `v2.0.0` | 2026-05-14 | High | ## The 2.x major release.  Two new flagship surfaces — **MeshJob** (a registry-backed substrate for long-running tasks across the mesh) and **A2A v1.0** (cross-runtime Agent-to-Agent protocol bridge, both producer and consumer sides) — plus a **schema registry** that makes capability matching type-safe across Python, TypeScript, and Java with cross-runtime hash equality. The LLM provider stack moves from direct-mode SDK calls to mesh-delegated providers backed by native vendor SDKs (Anthropic, |
| `v1.4.1` | 2026-04-28 | High | Reliability + provider expansion. The marquee item is a clean-cutover redesign of meshctl's process lifecycle that eliminates a class of bugs around orphaned registry/UI servers, same-name agent re-starts, and watch-mode races. Vertex AI joins the LLM provider lineup across all three runtimes with IAM-based auth instead of API keys. Python and TypeScript agents no longer have their health endpoints blocked by long-running tool calls (k8s pod-restart fix). Claude structured output goes HINT-first |
| `v1.3.4` | 2026-04-18 | High | ### Hardening + Spring AI M4.   - Closes an audit-derived security pass (registry agent_id validation, header-propagation allowlist tightened from prefix-by-default to exact match, TLS auto fail-fast, proxy error sanitization), error-visibility improvements across Python/Java SDKs, meshctl signal handler leak fix, and stale doc/version cleanups. Spring AI upgraded to 2.0.0-M4 — brings the Java integration suite to parity, 5 previously-disabled Java tests re-enabled. |
| `v1.3.3` | 2026-04-16 | High | Release v1.3.3 |
| `v1.3.2` | 2026-04-15 | High | ### Patch release.  - Agent `name` and `agent_id` are now distinct fields across Python, TypeScript, and Java SDKs — previously all three collapsed `name == agent_id`, making replicas behind a K8s Service indistinguishable. The topology dashboard now groups replicas of the same base name into a single node with a ×N badge and an accordion drawer for per-replica details. meshctl `list` / `call` / `status` display and filter by full agent ID so replicas are individually addressable; registry `/pr |
| `v1.3.1` | 2026-04-14 | High | ### Patch release.  - Tutorial download artifacts (zips, tutorial-complete.html/txt) now generate and deploy in CI (#775).  - Version bump script refactored to a handler-based design — catches 363 files per bump vs 184 previously, eliminating the manual cleanup toil from #753. |
| `v1.3.0` | 2026-04-14 | High | ### Reliability and production-readiness release. meshctl stop works reliably across all scenarios, timeouts propagate through multi-hop agent chains, and the TripPlanner tutorial ships end-to-end from first agent to production deployment.  ### 🔗 X-Mesh-Timeout Propagation  - **Header propagation across all SDKs** (#769): Python/TypeScript/Java SDKs set and propagate `X-Mesh-Timeout` header on outgoing mesh calls. Multi-hop LLM chains (gateway → planner → specialist → provider) now respect |

## Citation

- HTML: https://www.freshcrate.ai/projects/mcp-mesh
- Markdown: https://www.freshcrate.ai/projects/mcp-mesh.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/mcp-mesh/deps

_Generated by freshcrate.ai. Indexes github releases for AI-agent ecosystem packages._
