Skip to main content
Glama
vad-007

MCP + CrewAI Agentic Integration

by vad-007

๐Ÿค– MCP + CrewAI Agentic Integration ๐Ÿš€

A powerful demonstration of Model Context Protocol (MCP) integrated with CrewAI orchestrations, featuring full observability through AgentOps and high-speed inference via Groq.

Python CrewAI FastMCP AgentOps


๐ŸŒŸ Overview

This project bridges the gap between context-aware tools and autonomous agents. It provides a custom MCP server for real-time external data (Weather, News, Notes) while leveraging CrewAI to orchestrate multi-agent workflows.

๐Ÿ—๏ธ Architecture

  • MCP Layer: A FastMCP server exposing tools for real-time data retrieval.

  • Agentic Layer: CrewAI agents specialized in Market Analysis and Research.

  • Inference Layer: Ultra-fast LLMs (Llama 3.1) hosted on Groq.

  • Observability Layer: AgentOps for tracing, cost management, and debugging.


Related MCP server: MCP Tool Server

โœจ Key Features

๐Ÿ› ๏ธ Custom MCP Server Tools

  • โ˜€๏ธ Weather Engine: Real-time meteorology data via WeatherAPI.

  • ๐Ÿ“ฐ News Intelligence: Global news retrieval via Serper (Google Search API).

  • ๐Ÿ“ Contextual Notes: Locally persistent note management for long-term memory.

  • ๏ฟฝ Auto-Summary: Intelligent summarization of collected context.

๐Ÿ‘ฅ Intelligence Crew

  • ๐Ÿ” Market Researcher: Scours data to identify emerging trends.

  • ๐Ÿ“ˆ Data Analyst: Synthesizes research into actionable market insights.

  • ๐Ÿš€ Sequential Workflow: Fully orchestrated execution path for reliable results.


๐Ÿ› ๏ธ Tech Stack


๐Ÿš€ Getting Started

1. Prerequisites

Ensure you have the following installed:

  • uv (Recommended) or Python 3.13+

  • A valid Groq API Key

  • A valid AgentOps API Key

  • A Serper API Key (for News)

2. Installation

Clone the repository and sync dependencies:

git clone https://github.com/vad-007/MCP_Integration_crewai.git
cd MCP_Integration_crewai
uv sync

3. Configuration

Create a .env file in the root directory:

AGENTOPS_API_KEY=your_agentops_key
GROQ_API_KEY=your_groq_key
SERPER_API_KEY=your_serper_key
WEATHER_API_KEY=your_weather_key

4. Running the Project

๐ŸŒ Start the MCP Server

mcp dev main.py

๐Ÿšข Run the CrewAI Integration

python crewai_agentops_integration.py

๐Ÿ” Run Diagnostics

python test_agentops.py

๐Ÿ“Š Observability with AgentOps

This project is fully instrumented. Every run generates a unique replay URL allowed you to:

  • Watch Agent Self-Correction: See exactly how agents reason through tasks.

  • Trace LLM Calls: Monitor every prompt and completion.

  • Analyze Latency: Visualize the execution timeline of your crew.

Check your dashboard at: app.agentops.ai


๐Ÿ“‚ Project Structure

โ”œโ”€โ”€ main.py                    # FastMCP Server implementation
โ”œโ”€โ”€ crewai_agentops_integration.py # Main CrewAI orchestration
โ”œโ”€โ”€ test_agentops.py           # Connectivity & Diagnostic tool
โ”œโ”€โ”€ .env                       # Environment variables (private)
โ”œโ”€โ”€ pyproject.toml             # Project configuration
โ”œโ”€โ”€ uv.lock                    # Dependency lockfile
โ””โ”€โ”€ docs/                      # Troubleshooting & Optimization guides

๐Ÿค Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project

  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)

  3. Commit your Changes (git commit -m 'Add some AmazingFeature')

  4. Push to the Branch (git push origin feature/AmazingFeature)

  5. Open a Pull Request


๐Ÿ›ก๏ธ License

Distributed under the MIT License. See LICENSE for more information.


Developed with โค๏ธ for the AI Community.

Available Tools

4 tools
add_noteB

Append a new note to the note file.

Args: message (str): The note content to be added.

Returns: str: Confirmation message indicating the note was saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Append' (implying mutation) and a confirmation return, but lacks details on permissions, file location, error handling, or whether notes are editable/deletable. This is insufficient for a mutation tool without annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and well-structured: a clear purpose statement followed by separate Args and Returns sections. Every sentence adds value without redundancy, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is adequate but not complete. It lacks behavioral context (e.g., file system interactions) and usage guidelines, which are important for a mutation tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context for the single parameter 'message' by explaining it as 'The note content to be added,' which clarifies its purpose beyond the schema's basic type definition. Since schema description coverage is 0%, this compensates well, though it doesn't detail format constraints like length or encoding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Append a new note') and the target resource ('to the note file'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'read_notes' beyond the verb difference, so it doesn't fully achieve sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'read_notes' or other note-related operations. It states what the tool does but offers no context about prerequisites, appropriate scenarios, or exclusions, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_weatherB

Fetch current weather for a city

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions fetching current weather but doesn't specify data sources, accuracy, rate limits, error conditions, or response format. This leaves significant gaps for an agent to understand how the tool behaves beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words, making it easy to parse and front-loaded with the core functionality. It efficiently communicates the essential purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks details on behavioral aspects like reliability or constraints, which are important even for simple tools, especially with no annotations to fill gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds minimal parameter context by implying the 'city' parameter is used to specify location. However, it doesn't clarify format (e.g., city name, coordinates), handling of ambiguous names, or required specificity. With one parameter and low schema coverage, this provides some but incomplete compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('fetch') and resource ('current weather for a city'), making the purpose immediately understandable. It doesn't distinguish from siblings (which are unrelated tools for notes and news), but that's not needed here since they serve completely different domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, prerequisites, or limitations. It simply states what it does without context about timing, constraints, or comparison to other weather-related tools (though none exist among siblings).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_notesB

Read and return all notes from the note file.

Returns: str: All notes as a single string separated by line breaks. If no notes exist, a default message is returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds some context: it describes the return behavior (all notes as a single string with line breaks, or a default message if none exist). However, it doesn't cover important aspects like error handling (e.g., if the file is missing), performance implications, or any side effects, leaving gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with two clear sentences: one stating the purpose and another detailing the return behavior. It avoids unnecessary words and is front-loaded with the main action. However, it could be slightly improved by integrating the return details more seamlessly, but overall it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, no annotations, but has an output schema), the description is somewhat complete but has gaps. It explains the return values adequately, but lacks context on when to use it, error scenarios, or how it interacts with siblings like 'add_note'. The output schema helps, but the description should provide more operational guidance to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the schema description coverage is 100% (as there are no parameters to describe). The description doesn't need to add parameter semantics, so it naturally meets the baseline of 4 for this dimension, as it doesn't introduce confusion or redundancy regarding inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Read and return all notes from the note file.' It specifies the verb ('read and return') and resource ('all notes from the note file'), making the action unambiguous. However, it doesn't explicitly differentiate from its sibling 'add_note' beyond the obvious read vs. write distinction, which is why it doesn't reach a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, such as whether notes must exist or if the file needs to be accessible, nor does it compare to other tools like 'add_note' for related operations. This lack of contextual usage information limits its effectiveness for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_newsB

Fetch search results from Google News via Serper

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Fetch search results') but does not describe any behavioral traits such as rate limits, authentication needs, error handling, or what the output looks like. This leaves significant gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance, which is ideal for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (simple search with one parameter) and the presence of an output schema, the description is somewhat complete for basic understanding. However, with no annotations and low schema coverage, it lacks details on behavioral aspects and parameter semantics, making it adequate but with clear gaps in providing a full context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add any meaning beyond what the input schema provides. The schema has 0% description coverage, but the description does not explain the 'query' parameter's purpose, format, or constraints. Since there is only one parameter and the schema coverage is low, the description fails to compensate, resulting in a baseline score due to the minimal parameter count.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Fetch search results') and the resource ('from Google News via Serper'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'fetch_weather' or 'read_notes', though the domain difference is implied by the name and description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives or in what context it should be applied. It lacks any mention of prerequisites, limitations, or comparisons to sibling tools, leaving usage entirely implicit based on the tool name and general purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.0
    • First observedadd_note
    • First observedfetch_weather
    • First observedread_notes
    • First observedsearch_news

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: add_note and read_notes handle note management, fetch_weather retrieves weather data, and search_news fetches news results. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency4/5

The tool names follow a consistent verb_noun pattern (add_note, fetch_weather, read_notes, search_news), which is predictable and readable. The minor deviation is that 'fetch_weather' and 'search_news' use different verbs ('fetch' vs. 'search'), but the overall pattern remains clear.

Tool Count3/5

With only 4 tools, the set feels thin for a server named 'MCP + CrewAI Agentic Integration', which suggests broader agentic capabilities. While the tools cover basic utilities (notes, weather, news), the scope seems limited compared to the implied integration purpose, bordering on under-scoped.

Completeness2/5

Inferring the domain as agentic integration utilities, there are significant gaps: no tools for agent coordination, task management, or data processing beyond simple fetches. The note tools lack update/delete operations, and overall coverage is incomplete for enabling complex agent workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A FastMCP-based server providing tools for weather queries, random number generation, and real-time stock market data retrieval. It enables AI models to interact with external data and perform specific tasks through the Model Context Protocol.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    A production-ready Python MCP server providing tools for fetching live weather data, querying local SQLite databases, reading files, summarizing webpages, and performing safe mathematical calculations. It enables MCP-compatible LLM clients to execute these tasks autonomously as part of agentic workflows.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Multi-agent AI tools for email automation (Outlook), weather (OpenWeather API), sticky notes, and arithmetic, all served via FastMCP.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A FastMCP server that exposes a locally-hosted llama.cpp LLM as MCP tools, plus utilities for weather, news, web fetching, file I/O, and more. Enables MCP-compatible clients to use a local GGUF model for text generation without external APIs.
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vad-007/MCP_Integration_crewai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server