

There is a quietly beautiful thing about infrastructure that simply works. Code that opens doors rather than closes them. As one of the contributors to the Nuxeo MCP Server, I've watched this project grow from a quick scaffold into a working bridge between Nuxeo and AI. Today, I'm excited to share what it does, how it's built, and how *you* can help shape it into something even more powerful.
What Is Nuxeo MCP?
MCP - Model-Context Protocol - is our effort to give content repositories a clear, configurable way to speak with prompt-driven tools and AI agents.
You define resources (the views of content you expose).
You define prompt templates (reusable instructions that operate over those resources).
You choose transports (HTTP for request/response; SSE for streaming updates).
From there, clients can submit jobs, track progress, and retrieve results - all within their AI tool of choice. The aim is flexibility and safety: iterate quickly on prompts or resource shapes without breaking clients.
Architecture & Components (At a Glance)
Transports:
Prompt Templates & Resource Templates: Keep prompt logic and content shape separate. Tweak one without rewriting the other.
Local Dev & Docker: Spin up MCP (and a local Nuxeo) quickly using Docker compose to test end-to-end.
Tests & Specs: A suite of tests covers prompt registration, resource mapping, edge cases, timeouts, and retries.
A Short Workflow Example
Here's a small outline of the pattern we use when building with MCP.
1. Register a prompt (e.g., summarize a document):
mcp.register_prompt(
name="summarize_document",
template="Summarize the following document: {content}",
resource="document"
)
2. Define a resource template that makes only the fields you want available (title, body, a few metadata flags) so prompts stay lean and secure.
3. Submit jobs (HTTP) and stream progress (SSE) while the work runs.
4. Handle errors & retries gracefully (timeouts, empty answers), and keep your operations idempotent.
5. Iterate locally: adjust templates, add new resources, re-run tests, then deploy.
Strengths & Trade-Offs
What it does well
Modularity: Resource shapes, prompt logic, and transports are decoupled.
Developer experience: Local setup, Docker, and tests reduce friction.
Extensibility: Add new prompt types or resources without touching the core.
Future-proofing: As models improve, you can evolve prompts and resources independently.
What to watch
Scale & performance: For very large datasets or high concurrency, plan caching, rate limits, and parallelism.
Security & permissions: Real deployments need authentication, role based access control, and audit trails.
Observability: You'll want metrics, tracing, and dashboards for latency and failures.
Cost & latency of AI: Be mindful of prompt frequency, model choice, and timeouts.
An Invitation to Contribute
Open source makes this project stronger. If you build something that could help others, please consider a PR.
Great places to contribute:
Monitoring & Analytics: Structured logs, metrics for prompt runtime, retries, and queue depth.
Transports & Adapters: GraphQL, WebSocket, or region-aware backends.
Prompt/Resource Library: Common templates (summarize, tag, translate, classify) that many Nuxeo teams need.
Resilience: Backoff strategies, fallbacks, and partial-success patterns.
How to get started:
Fork the repo and clone it, run the demo locally (Docker) or against a test Nuxeo instance.
Start small: add a prompt template you need, plus tests.
If it's generic enough to help others, open a PR. Documentation - even brief notes - go a long way.
Hands-On: First Steps Checklist
1. Clone & configure the repository connection to connect to your Nuxeo.
2. Register a simple prompt template and a matching resource.
3. Submit a job via HTTP
4. Extend: add one more prompt or resource; write a quick test.
5. Share your template if others might use it.
Looking Ahead
What excites me most is where this can go:
Tools that don't just search content, but understand its context, and history.
Workflows that adapt as models improve. Summarizing, enriching, or migrating content intelligently - using natural language prompts!
Shared libraries of prompts and resources that help teams start fast and stay safe.
Real-time, AI-assisted editing with proper governance, permissions, and audit trails.
MCP isn't trying to be everything. It's a foundation that is open, adaptable, and honest about the work ahead.
Closing
Whether you tinker on a weekend or deploy at scale, I hope MCP feels like infrastructure that gets out of the way. If you build something with it, I'd love to see what you make. If something feels missing, tell us - or better, contribute it. This project belongs to all of us, and the future gets better when we build together.
Links
Keep reading
Already on AWS? Use AgentCore Gateway as a managed MCP server for Nuxeo. Configure inbound/outbound auth and an OpenAPI schema—no self-hosted MCP needed.
Read articleImagine flipping through billions of images, PDFs, and documents—instantly finding exactly what you need, without lifting a finger to tag or classify. That’s the magic we’re unveiling today.
Read articleShort 3-minute demo of an MCP Server for Nuxeo. Claude Opus 4.1 chats with a Nuxeo repo to query, search Elasticsearch, view audit logs, and update docs.
Read articleTell us what you're struggling with, and we'll tell you how we can help you.
Talk to us