We're looking for thoughts and feedback so will be happy to take any questions here! And as the post shows, it's really easy to try this out -- would be grateful for you to try deploying an agent as an MCP server and get your impressions!
193 karma · joined March 25, 2023
We're looking for thoughts and feedback so will be happy to take any questions here! And as the post shows, it's really easy to try this out -- would be grateful for you to try deploying an agent as an MCP server and get your impressions!
So the core idea is the Deep Orchestrator is pretty unopinionated on what to use for searching, as long as it is exposed over MCP. I tried with a basic fetch server that's one of the reference MCP servers (with a single tool called `fetch`), and also tried with Brave.
I think the folks at Jina wrote some really good stuff on the actual search part: https://jina.ai/news/a-practical-guide-to-implementing-deeps... -- and how to do page/url ranking over the course of the flow. My recommendation would be to do all that in an MCP server itself. That keeps the "deep orchestrator" architecture fairly clean, and you can plug in increasingly sophisticated search techniques over time.
I don't know of a usecase where there are such deep recursive agent chains that it becomes unmanageable.
I almost think of mcp-agents as a modern form of scripting – we have agent workflows (e.g. generating a summary of new GitHub issues and posting on Slack), and exposing them as MCP servers has enabled us to use them in our favorite MCP clients.
The nice thing about representing agents as MCP servers is we can leverage distributed tracing via OTEL to log multi-agent chains. Within the agent application, mcp-agent tracing follows the LLM semantic conventions from OpenTelemetry (https://opentelemetry.io/docs/specs/semconv/gen-ai/). For any MCP server that the agent uses, we propagate the trace context along.
Our thoughts here are to handle auth the same way that the MCP spec outlines auth (https://modelcontextprotocol.io/specification/2025-03-26). The key thing is to send authorization requests back to the user in a structured way. For example, if Agent A invokes Agent B, which requires user approval for executing a tool call, that authorization request needs to be piped back to the client, and then propagated back to the agent.
This is technically possible to do with the MCP protocol as it exists today, but I think we will want to add that support in mcp-agent itself so it is easy to pause an agent workflow waiting for authentication/authorization.
One nice property of representing agents as MCP servers is that Agent discovery is the same as server discovery.
In addition to simple abstractions for declaring agents, fastagents has a really nice CLI utility, which can be useful for interaction with MCPs outside of Cursor and Claude Desktop, where they are most popular atm.
It is conceivable that we make it completely dynamic where the agent first decides which set of servers it should need for its task/instruction. Another way of framing that is it should be possible to create agents themselves dynamically based on the objective.
I don’t have a good answer to this yet but if you want to help figure that out we can collaborate
I am open to alternative suggestions for this. I just wanted to make it easy to reference MCP servers by name and hide the logic of how they are initialized, what transport they use, what args are passed to them, into configs
Python isn't my first programming language and I find a lot of it peculiar, but with some of the latest tooling around it (uv, ruff, etc.), I must confess it has grown on me. :)
https://github.com/lastmile-ai/aiconfig
Here’s the currently supported list of models: https://aiconfig.lastmileai.dev/docs/overview/model-parsers
Let me know if we should enable non-HF models in the gradio notebook component by default as well — it should be a simple change
For the core AIConfig, we got feedback from people trying to run it on AWS lambda that the package size got too bloated, so we are trying to have an extension ecosystem that allows us to ship the core framework independently of other models (currently it does ship with OpenAI, Google, and Claude by default though).
Would love your feedback on the space itself, as well on AIConfig!
I wonder if it'll be better with LLaMA-13B instead of 7B.
Also link doesn't render nicely in the text above -- here it is: https://github.com/lastmile-ai/aiconfig/tree/main/cookbooks/...