A production-grade multi-agent AI system for autonomous enterprise research and analysis across distributed data sources. Built with LangGraph and LangChain, this system orchestrates intelligent agents to search, analyze, and synthesize information from Perforce, JIRA, and Confluence.
- Supervisor Agent: Orchestrates research workflow and delegates tasks
- Research Agents: Perform parallel deep-dive research on specific sections
- Graph-based Orchestration: Dynamic task routing with LangGraph conditional edges
- State Management: TypedDict-based state flow with reducers for complex data aggregation
- Perforce: Search changelists, get details, retrieve file content
- JIRA: Search issues, get ticket details, track relationships
- Confluence: Search documentation, extract page content
- Cross-Source Analysis: Correlate data across all three platforms
- Parallel Execution: Concurrent research across multiple sections
- MCP Protocol: Standardized AI-to-tool communication via Model Context Protocol
- Session Persistence: Singleton pattern for maintaining tool session state
- Dynamic Tool Discovery: Automatic tool registration with conflict resolution
- Comprehensive Logging: Detailed tracing for debugging and monitoring
- Python 3.8+
- Ollama installed and running locally
- Access to enterprise systems (Perforce, JIRA, Confluence)
- API credentials for each enterprise system
git clone https://github.com/aimanyounises1/enterprise-multi-agent-research.git
cd enterprise-multi-agent-researchpython -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activatepip install -r requirements.txtCreate a .env file in the project root:
# Perforce Configuration
P4PORT=your-perforce-server:port
P4USER=your-username
P4CLIENT=your-client
P4PASSWD=your-password
# JIRA Configuration
JIRA_SERVER=https://your-jira-instance.com
JIRA_USERNAME=your-email@company.com
JIRA_API_TOKEN=your-api-token
# Confluence Configuration
CONFLUENCE_URL=https://your-confluence-instance.com
CONFLUENCE_USERNAME=your-email@company.com
CONFLUENCE_API_TOKEN=your-api-token
# Optional: LangSmith for tracing
LANGSMITH_API_KEY=your-langsmith-key
LANGSMITH_PROJECT=your-project-name
LANGCHAIN_TRACING_V2=trueollama pull qwen3:30b-a3bimport asyncio
from src.enterprise_multi_agent import research_with_enterprise_tools
async def main():
query = "Research VIT-60872 and related MTV2005 implementations"
result = await research_with_enterprise_tools(
query=query,
stream_output=True
)
print(result["final_report"])
asyncio.run(main())custom_config = {
"enterprise_server": {
"command": "python",
"args": ["src/mcp/enterprise_mcp_server.py"],
"transport": "stdio",
"env": {
"P4PORT": "custom-server:1666",
# ... other custom settings
}
}
}
result = await research_with_enterprise_tools(
query="Your research query",
mcp_config=custom_config,
stream_output=True
)from src.enterprise_multi_agent import graph
from langchain_core.messages import HumanMessage
initial_state = {
"messages": [HumanMessage(content="Research query")],
"original_query": "Research query"
}
config = {
"configurable": {
"supervisor_model": "qwen3:30b-a3b",
"researcher_model": "qwen3:30b-a3b",
"supervisor_temperature": 0.1,
"researcher_temperature": 0.2
}
}
result = await graph.ainvoke(initial_state, config=config)The demo script in examples/run_examples.py now includes a 360Β° Secondary Search Expansion option inspired by the deep-dive presentation. It issues a sanitized query around customer/v1/updateAccount, showcases how secondary identifiers (for example, documentation tasks such as DOC-1064) are discovered, and demonstrates how the supervisor and researcher agents collaborate to correlate Perforce changelists, JIRA issues, and Confluence pages.
All identifiers in this scenario are anonymized placeholders to ensure corporate data remains secure.
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Supervisor Agent β
β (Orchestrates Research Workflow) β
βββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βββ Creates Research Sections
βββ Delegates to Research Agents
βββ Writes Introduction/Conclusion
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Research Agents (Parallel) β
β (Deep-dive Research per Section) β
βββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βββ Uses Enterprise Tools
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP Server Layer β
β (Enterprise Tool Interface) β
ββββββββββββββββ¬βββββββββββββββ¬βββββββββββββββββββ€
β Perforce β JIRA β Confluence β
ββββββββββββββββ΄βββββββββββββββ΄βββββββββββββββββββ
Configure models in src/enterprise_multi_agent/config/agent_config.py:
supervisor_model: Model for the supervisor agent (default: qwen3:30b-a3b)researcher_model: Model for research agents (default: qwen3:30b-a3b)supervisor_temperature: Temperature for supervisor (default: 0.1)researcher_temperature: Temperature for researchers (default: 0.2)
max_results: Adjust search result limits for each toolsearch_mode: "comprehensive" or "quick" for Perforce searchesinclude_attachments: Enable/disable JIRA attachment fetching
# Enterprise Research Report: VIT-60872 Analysis
## Introduction
This report provides a comprehensive analysis of VIT-60872...
## VIT-60872 Details
Based on research from JIRA [Source: JIRA VIT-60872]:
- Status: In Progress
- Priority: High
- Related MTV: MTV2005, MTV2010
...
## Related Perforce Changes
Analysis of code implementations [Source: Perforce CL 27235273]:
- Implementation of feature X
- Bug fixes for component Y
...
## Conclusion
The research reveals that VIT-60872 is a critical issue...Run the test suite:
pytest tests/Run specific tests:
pytest tests/test_supervisor.py -v
pytest tests/test_researcher.py -v- Architecture Overview
- Enhancement Roadmap
- API Reference
- Configuration Guide
- Technical Deep Dive Examples β sanitized scenarios distilled from the presentation
- Sample Research Session Output
We welcome contributions! Please see CONTRIBUTING.md for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with LangChain and LangGraph
- Powered by Ollama for local LLM inference
- MCP Protocol implementation via FastMCP
Aiman Younis - LinkedIn - aimanyounises@gmail.com
Project Link: https://github.com/aimanyounises1/enterprise-multi-agent-research
β If you find this project useful, please consider giving it a star!