-
Notifications
You must be signed in to change notification settings - Fork 5
[examples] Add agno/airbnb-mcp via template #57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Convert Agno Airbnb MCP example to Agentuity agent structure - Add required dependencies: agno==2.0.8, groq==0.31.1, mcp==1.14.0 - Implement async wrapper with proper MCP tools context management - Update project configuration and README - Follow Python template structure exactly Co-Authored-By: Dhilan Fye <dfye@agentuity.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
WalkthroughAdds a new Airbnb MCP agent project under frameworks/agno/airbnb-mcp with Agentuity integration. Introduces agent entrypoints (welcome/run), core agent orchestration using Agno, Groq, and MCP tools, plus Agentuity config, packaging, and README. No existing public APIs were modified. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant U as User
participant AU as Agentuity Server
participant AM as AirbnbMcp Agent
participant RL as run_agent()
participant AG as Agno Agent
participant GQ as Groq Model
participant MC as MCP Server
U->>AU: Send request (prompt)
AU->>AM: invoke run(request, response, context)
AM->>RL: delegate prompt (async via loop executor)
note right of RL: Setup MCPTools context\nBuild Agno Agent (Groq + Tools)
RL->>AG: agent.run(message)
AG->>GQ: model inference
AG->>MC: tool calls to MCP (as needed)
MC-->>AG: tool results
GQ-->>AG: model output
AG-->>RL: run result
RL-->>AM: normalized result
AM-->>AU: return text response
AU-->>U: reply
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (2)
🧰 Additional context used🧠 Learnings (12)📚 Learning: 2025-06-23T17:16:16.519ZApplied to files:
📚 Learning: 2025-07-17T13:39:58.483ZApplied to files:
📚 Learning: 2025-07-17T13:41:25.437ZApplied to files:
📚 Learning: 2025-07-17T13:41:01.314ZApplied to files:
📚 Learning: 2025-07-17T13:39:39.665ZApplied to files:
📚 Learning: 2025-06-23T17:16:33.550ZApplied to files:
📚 Learning: 2025-06-23T17:14:18.092ZApplied to files:
📚 Learning: 2025-06-23T17:15:46.735ZApplied to files:
📚 Learning: 2025-06-23T17:13:52.368ZApplied to files:
📚 Learning: 2025-06-23T17:15:30.804ZApplied to files:
📚 Learning: 2025-06-23T17:17:12.992ZApplied to files:
📚 Learning: 2025-06-23T17:16:02.063ZApplied to files:
🔇 Additional comments (1)
Tip 👮 Agentic pre-merge checks are now available in preview!Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.
Please see the documentation for more information. Example: reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"
mode: "warning"
instructions: |
Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).Please share your feedback with us on this Discord post. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py (1)
1-24: Fix return typing and correctly handle possible async result from agent.runThe function is annotated as returning None but returns a value. Also, if Agent.run is async in your agno version, it needs awaiting.
Apply:
-import asyncio +from typing import Any +import inspect from textwrap import dedent from agno.agent import Agent from agno.models.groq import Groq from agno.tools.mcp import MCPTools from agno.tools.reasoning import ReasoningTools -async def run_agent(message: str) -> None: +async def run_agent(message: str) -> Any: async with MCPTools( "npx -y @agentuity/mcp-server-airbnb --ignore-robots-txt" ) as mcp_tools: agent = Agent( model=Groq(id="meta-llama/llama-3.3-70b-instruct"), tools=[ReasoningTools(add_instructions=True), mcp_tools], instructions=dedent(""" - Always start by using the think tool to map out the steps needed to complete the task. - After receiving the user's request, use the think tool as a scratchpad to work through your approach. - Before giving a final answer, use the think tool to jot down final thoughts. - Present final outputs in well-organized tables whenever possible. """), ) - - return agent.run(message) + result = agent.run(message) + if inspect.isawaitable(result): + result = await result + return result
🧹 Nitpick comments (2)
frameworks/agno/airbnb-mcp/README.md (1)
47-49: Fix markdownlint MD034: wrap bare URLWrap the URL in Markdown link format.
-This agent is converted from the Agno documentation example: -https://docs.agno.com/examples/use-cases/agents/airbnb_mcp +This agent is converted from the Agno documentation example: +[Agno Airbnb MCP example](https://docs.agno.com/examples/use-cases/agents/airbnb_mcp)frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.py (1)
1-53: Avoid nested asyncio.run in a thread; directly await run_agentRunning a new event loop inside a thread adds complexity and can hinder cancellation/propagation. Since run_agent is async, await it directly and drop the executor hop.
-from agentuity import AgentRequest, AgentResponse, AgentContext -import asyncio +from agentuity import AgentRequest, AgentResponse, AgentContext from agentuity_agents.AirbnbMcp.airbnb_mcp_agent import run_agent def welcome(): @@ async def run(request: AgentRequest, response: AgentResponse, context: AgentContext): prompt = await request.data.text() context.logger.info(f"[AirbnbMcp] prompt: {prompt!r}") try: - loop = asyncio.get_running_loop() - raw = await loop.run_in_executor(None, lambda: asyncio.run(run_agent(prompt))) + raw = await run_agent(prompt) if isinstance(raw, str): output = raw elif hasattr(raw, "content"): output = raw.content
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
frameworks/agno/airbnb-mcp/uv.lockis excluded by!**/*.lock
📒 Files selected for processing (6)
frameworks/agno/airbnb-mcp/README.md(1 hunks)frameworks/agno/airbnb-mcp/agentuity.yaml(1 hunks)frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/__init__.py(1 hunks)frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.py(1 hunks)frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py(1 hunks)frameworks/agno/airbnb-mcp/pyproject.toml(1 hunks)
🧰 Additional context used
🧠 Learnings (26)
📚 Learning: 2025-06-23T17:16:13.875Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:16:13.875Z
Learning: In Agentuity AI Agent Python files (agents/**/*.py), the main entry point should be an async function named `run` that accepts parameters of types AgentRequest, AgentResponse, and AgentContext.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-07-17T13:40:30.298Z
Learnt from: CR
PR: agentuity/examples#0
File: agents/tavily_agent/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-07-17T13:40:30.298Z
Learning: Applies to agents/tavily_agent/agents/**/*.py : The main handler function for an agent should be defined as an async function named 'run' with parameters (request: AgentRequest, response: AgentResponse, context: AgentContext)
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:14:53.981Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/llamaindex/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:14:53.981Z
Learning: When writing Python AI Agent files for the Agentuity platform (in files matching agents/**/*.py), always define an async function named `run` as the entry point.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:14:03.437Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/socialagent/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:14:03.437Z
Learning: In the Agentuity Python SDK, the main agent handler should be an async function named 'run' that accepts 'request: AgentRequest', 'response: AgentResponse', and 'context: AgentContext' as arguments.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:14:31.499Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:14:31.499Z
Learning: In the Agentuity Python SDK, the main agent handler should be an async function named 'run' that accepts 'request: AgentRequest', 'response: AgentResponse', and 'context: AgentContext' as parameters.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:15:43.688Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:15:43.688Z
Learning: When writing Agentuity AI Agents in Python, always define an async function named `run` that serves as the entry point for the agent.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-07-17T13:40:58.033Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/agno/from_agno/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-07-17T13:40:58.033Z
Learning: Applies to frameworks/agno/from_agno/agents/**/*.py : The file should define an async function named `run`
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:16:30.899Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/pydantic/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:16:30.899Z
Learning: In Python agent files under 'agents/**/*.py', always define an async function named 'run' as the entry point for the agent.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:14:15.333Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:14:15.333Z
Learning: When writing Python AI Agent files for Agentuity in the 'agents/' directory, always define an async function named 'run' as the entry point.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:15:53.658Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:15:53.658Z
Learning: In the Agentuity Python SDK, the main entry point for an agent is an async function named 'run' that takes three arguments: request (AgentRequest), response (AgentResponse), and context (AgentContext).
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:16:43.214Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/pydantic/basic/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:16:43.214Z
Learning: In the Agentuity Python SDK, the main handler for an agent is an async function named 'run' that takes 'request', 'response', and 'context' as parameters.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:16:25.368Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:16:25.368Z
Learning: In the Agentuity Python SDK, the main handler function for an agent should be defined as an async function named 'run' with the signature: async def run(request: AgentRequest, response: AgentResponse, context: AgentContext) -> Any.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:15:05.904Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/llamaindex/basic/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:15:05.904Z
Learning: In the Agentuity Python SDK, the main agent handler function should be defined as an async function named 'run' that accepts 'request' (AgentRequest), 'response' (AgentResponse), and 'context' (AgentContext) as parameters.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.pyframeworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-07-17T13:41:39.323Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/socialagent/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-07-17T13:41:39.323Z
Learning: Applies to frameworks/crewai/socialagent/agents/**/*.py : The file should define an async function named `run`
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-07-17T13:40:12.518Z
Learnt from: CR
PR: agentuity/examples#0
File: agents/tavily_agent/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-07-17T13:40:12.518Z
Learning: Applies to agents/tavily_agent/agents/**/*.py : The file should define an async function named `run`
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-07-17T13:41:21.670Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-07-17T13:41:21.670Z
Learning: Applies to frameworks/crewai/basic/agents/**/*.py : The file should define an async function named `run`
Applied to files:
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py
📚 Learning: 2025-06-23T17:16:33.550Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/pydantic/basic/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:33.550Z
Learning: The agentuity.yaml file is a configuration file used by Agentuity to configure the AI Agent project and should not be edited or suggested for edits during code review.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-06-23T17:16:16.519Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:16.519Z
Learning: The Agentuity configuration file (agentuity.yaml) is reserved for configuring the AI Agent project and should not be edited or suggested for edits during code review.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-06-23T17:13:52.368Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/socialagent/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:13:52.368Z
Learning: The 'agentuity.yaml' file is a configuration file used by Agentuity to configure the AI Agent project and should not be edited or suggested for edits.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-06-23T17:14:18.092Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:14:18.092Z
Learning: The file 'agentuity.yaml' is used to configure the Agentuity AI Agent project and should not be edited or suggested for edits.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-06-23T17:15:46.735Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:15:46.735Z
Learning: The Agentuity configuration file (agentuity.yaml) is used to configure the AI Agent project and should not be edited or suggested for edits.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-06-23T17:15:30.804Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/grokLiveSearch/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:15:30.804Z
Learning: In the context of Agentuity AI projects, the 'agentuity.yaml' file is a configuration file that should not be edited or suggested for edits during code review.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-06-23T17:17:12.992Z
Learnt from: CR
PR: agentuity/examples#0
File: patterns/llmAsJury/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:17:12.992Z
Learning: In the context of Agentuity AI projects, the agentuity.yaml file is a configuration file that should not be edited or suggested for edits during code review.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-07-17T13:39:39.665Z
Learnt from: CR
PR: agentuity/examples#0
File: agents/composio/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-07-17T13:39:39.665Z
Learning: Applies to agents/composio/**/agentuity.yaml : Do NOT suggest edits to the Agentuity AI Configuration file (agentuity.yaml)
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-06-23T17:16:02.063Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai-typescript/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:02.063Z
Learning: The Agentuity AI Configuration file (agentuity.yaml) is used to configure the AI Agent project and should not be edited or suggested for edits.
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
📚 Learning: 2025-07-17T13:41:25.437Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/basic/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-07-17T13:41:25.437Z
Learning: Applies to frameworks/crewai/basic/**/agentuity.yaml : Do not suggest edits to the agentuity.yaml configuration file
Applied to files:
frameworks/agno/airbnb-mcp/agentuity.yaml
🧬 Code graph analysis (2)
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.py (1)
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py (1)
run_agent(8-23)
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/airbnb_mcp_agent.py (1)
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/agent.py (1)
run(27-52)
🪛 markdownlint-cli2 (0.18.1)
frameworks/agno/airbnb-mcp/README.md
48-48: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (2)
frameworks/agno/airbnb-mcp/agentuity_agents/AirbnbMcp/__init__.py (1)
1-1: Package placeholder is fineKeeps the package importable without side effects.
frameworks/agno/airbnb-mcp/agentuity.yaml (1)
1-66: LGTM (no edits suggested for Agentuity config)Configuration looks consistent with the project structure and entrypoint.
| [project] | ||
| name = "airbnb-mcp" | ||
| version = "0.1.0" | ||
| description = "Agno Airbnb MCP Agent converted to Agentuity" | ||
| requires-python = ">=3.10, <3.13" | ||
| dependencies = [ | ||
| "agentuity>=0.0.106", | ||
| "agno>=0.1.0", | ||
| "groq>=0.8.0", | ||
| "mcp>=1.0.0", | ||
| ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dependency versions conflict with implementation; likely import/runtime breakage
Code uses ReasoningTools and Groq model IDs that aren’t available in agno>=0.1.0 or groq>=0.8.0. Align to the tested versions declared in the PR description to avoid import errors and API mismatches.
Apply:
[project]
name = "airbnb-mcp"
version = "0.1.0"
description = "Agno Airbnb MCP Agent converted to Agentuity"
requires-python = ">=3.10, <3.13"
dependencies = [
- "agentuity>=0.0.106",
- "agno>=0.1.0",
- "groq>=0.8.0",
- "mcp>=1.0.0",
+ "agentuity>=0.0.106",
+ "agno==2.0.8",
+ "groq==0.31.1",
+ "mcp==1.14.0",
]If you’ve validated newer compatible versions via uv lock, feel free to bump accordingly but keep them pinned for reproducibility.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| [project] | |
| name = "airbnb-mcp" | |
| version = "0.1.0" | |
| description = "Agno Airbnb MCP Agent converted to Agentuity" | |
| requires-python = ">=3.10, <3.13" | |
| dependencies = [ | |
| "agentuity>=0.0.106", | |
| "agno>=0.1.0", | |
| "groq>=0.8.0", | |
| "mcp>=1.0.0", | |
| ] | |
| [project] | |
| name = "airbnb-mcp" | |
| version = "0.1.0" | |
| description = "Agno Airbnb MCP Agent converted to Agentuity" | |
| requires-python = ">=3.10, <3.13" | |
| dependencies = [ | |
| "agentuity>=0.0.106", | |
| "agno==2.0.8", | |
| "groq==0.31.1", | |
| "mcp==1.14.0", | |
| ] |
🤖 Prompt for AI Agents
In frameworks/agno/airbnb-mcp/pyproject.toml lines 1-11, the declared dependency
ranges for agno and groq (and other libs using >=) can cause runtime/import/API
mismatches with the implementation; replace those ranges with the exact tested
versions referenced in the PR description (or the exact versions validated in
the uv lock), pinning agno and groq to those tested versions and likewise pin
agentuity and mcp for reproducibility, and regenerate or commit the lock file if
you validated newer compatible versions so the project installs the precise,
compatible releases.
[examples] Add agno/airbnb-mcp via template
Summary
Converts the Agno Airbnb MCP example from https://docs.agno.com/examples/use-cases/agents/airbnb_mcp to work with the Agentuity platform. This agent uses Model Context Protocol (MCP) tools to search Airbnb listings and provide accommodation assistance.
Key Changes:
frameworks/agno/airbnb-mcp/following Python template exactlyagent.py) around original Agno logic (airbnb_mcp_agent.py)agno==2.0.8,groq==0.31.1,mcp==1.14.0Review & Testing Checklist for Human
agentuity devand verify app starts without errors/welcomeendpoint returns correct JSON format:{ welcome: string, prompts: [{ data: string, contentType: 'text/plain' }, ...] }npx -y @agentuity/mcp-server-airbnbto workasyncio.run_in_executor(None, lambda: asyncio.run(...))pattern needs validationNotes
uv sync, lockfile updatedrun_in_executorto handle MCP tools context manager - needs runtime verificationSession: https://app.devin.ai/sessions/1dec43eb6d2f4d8a9df1e0855485aada
Requested by: Dhilan Fye (dfye@agentuity.com)
Summary by CodeRabbit
New Features
Documentation
Chores