debasisdwivedy commited on
Commit
847a4f8
·
1 Parent(s): feb5fc6

Adding README

Browse files
Files changed (5) hide show
  1. .gitattributes +1 -0
  2. README.md +116 -1
  3. app.py +1 -1
  4. static/Architecture.png +3 -0
  5. static/UI.png +3 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -13,9 +13,124 @@ tags:
13
  - mcp-in-action-track-enterprise
14
  - mcp-in-action-track-consumer
15
  - mcp-in-action-track-creative
 
 
16
  - gradio-hackathon
17
  - vibe-coding
18
  - autonomous-software
 
 
19
  ---
 
20
 
21
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  - mcp-in-action-track-enterprise
14
  - mcp-in-action-track-consumer
15
  - mcp-in-action-track-creative
16
+ - MCP protocol
17
+ - MCP
18
  - gradio-hackathon
19
  - vibe-coding
20
  - autonomous-software
21
+ - A2A protocol
22
+ - A2A
23
  ---
24
+ # CODERAMA
25
 
26
+ > *⚠️ DISCLAIMER: DO NOT TRY IN PRODUCTION. THIS DEMO IS INTENDED FOR DEMONSTRATION PURPOSES ONLY.*
27
+ > *⚠️ Important: MCP and A2A protocols in action.*
28
+
29
+ This project highlights how an enterprise could implement software development lifecycle using Agents. It demonstrates
30
+ the intricate working of a enterprise team where there might be different teams dealing with the entire software development lifecycle.For this project we have assumed three separate teams working to implement the application. These teams communicate via
31
+ Agent2Agent (A2A) protocol. This simulates the scenario where each team can have different structure, policy, and could be using a different language internally.
32
+
33
+ These teams collaborate and seamlessly work together to accomplish a goal. Within a team they may use their internal tools to accomplish their task. These tools are exposed via a MCP server (FastMCP). Each team can have their own set of tools or use tools exposed via MCP that they need.
34
+
35
+ The project highlights the interoperability between A2A protocol and MCP protocol which serves very different purpose but can work together to achieve a goal.
36
+
37
+ ## Architecture
38
+ The application features a software development pipeline with a host agent that routes requests to the appropriate specialized agent:
39
+
40
+ * **Host Agent** *(Python, Google ADK, A2A Python SDK)*: Acts as the central orchestrator for software development, dynamically determining which agent to send a request to based on the task at hand.
41
+ * **Requirement Gathering Agent** *(Python, Google ADK, A2A Python SDK, FASTMCP)*: Receives a high-level requirement from the user and creates a detailed content outline.Clarifies any questions with the user to get a detailed understanding of the business case and suggest appropriate recommendations for the goal. It does not assume anything and the high level detailed requirement has to be approved by the user before it is finalized.
42
+ * **Project Planning Agent** *(Python, Google ADK, A2A Python SDK, FASTMCP)*: Take the high level finalized requirement and converts it into managable `sprints`. This is necessary as we can track the progress better and not overwhelm our `Software Development Agent` with too much information.
43
+ * **Software Development Agent** *(Python, Google ADK, A2A Python SDK, FASTMCP)*: This is the agent that does the development of the software. It not only develops the software but also validates it and test it before approving it. It moves one `sprint` at a time. Once a sprint is approved by the user, only then it moves to the next `sprint`. This helps to keep the Human-In-The-Loop so they know the progress that is being made and can suggest any improvements while the development is done rather than at the end.
44
+
45
+ Apart from the above `agents` there is also a **Policy Enforcer** which acts as a guard between the user and the system. Anything that comes from the user and any response that goes to the user is sanitized by the `Policy Enforcer`. This is to ensure safety and compliance that is typical in a enterprise setting.
46
+
47
+ We have used a MCP server using `FASTMCP` server which uses `STDIO` protocol for communication. This module needs to be installed as a part of the installation process. `GRADIO` is used as the frontend to communicate with the system.
48
+
49
+ Logging is implemented for all the agents and the server. You can find the logs in the project execution directory named as `requirement_gathering.log` , `software_development.log` and `project_planning.log`. Currently the logging is at INFO level and you can find all the tool call, tool response and LLM response in the logs.
50
+
51
+ Once the project is complete the user can download it. It will all the instrctions to run the code along with the test cases.
52
+
53
+ ![architecture](static/Architecture.png)
54
+
55
+
56
+ ## App UI
57
+
58
+ ![architecture](static/UI.png)
59
+
60
+
61
+ ---
62
+
63
+ ## 🚀 **DEMO**
64
+
65
+ ### **Option 1: Demo (Recommended)**
66
+ 👉 **[Open HuggingFace Space](https://huggingface.co/spaces/MCP-1st-Birthday/CODERAMA)**
67
+
68
+ 1. Fill in all the details in the left panel
69
+ 2. Chat with the Agent. Assign it a project like `Create me an application to calculate factorial of a number`
70
+ 3. Watch it in action
71
+
72
+ ## 🎬 **Demo Video**
73
+
74
+ ### **[▶️ Watch Full Demo (2 minutes)](https://youtube.com/shorts/XYZ)**
75
+
76
+
77
+ ## Setup and Deployment
78
+
79
+ ### Prerequisites
80
+
81
+ Before running the application locally, ensure you have the following installed:
82
+
83
+ 1. **uv:** The Python package management tool used in this project. Follow the installation guide: [https://docs.astral.sh/uv/getting-started/installation/](https://docs.astral.sh/uv/getting-started/installation/)
84
+ 2. **python 3.10** Python 3.10+ is required.
85
+ 3. **Docker** Optional but highly recommended.
86
+
87
+ ### **Installation:**
88
+
89
+ ```bash
90
+ # 1. Clone repository
91
+ git clone https://github.com/debasisdwivedy/Coderama.git
92
+ cd Coderama
93
+
94
+ # 2. Create virtual environment
95
+ uv venv --python 3.10
96
+
97
+ # 3. Activate environment
98
+ # Windows PowerShell:
99
+ .venv\Scripts\Activate.ps1
100
+ # Windows CMD:
101
+ .venv\Scripts\activate.bat
102
+ # macOS/Linux:
103
+ source .venv/bin/activate
104
+
105
+ # 4. Install dependencies
106
+ uv pip install -r requirements.txt
107
+
108
+ # 5. Run app
109
+ uv run .
110
+ ```
111
+ ---
112
+
113
+ ## ✅ **Hackathon Submission Checklist**
114
+
115
+ - [x] README with `mcp-in-action-track-xx` tag
116
+ - [x] 5 functional MCP tools
117
+ - [x] Gradio 6.0 integration
118
+ - [x] X social media post
119
+ - [x] Deploy to HuggingFace Spaces
120
+ - [x] Add screenshots to this README
121
+ - [x] Record 2-minute demo video
122
+ - [x] Update video link above
123
+
124
+ **Status:**
125
+ - ✅ All submission requirements completed
126
+ - ✅ Live on HuggingFace Spaces
127
+ - ✅ Demo video published
128
+
129
+
130
+ ---
131
+
132
+ ## 📜 **License**
133
+
134
+ MIT License - see [LICENSE](LICENSE) for details.
135
+
136
+ **TL;DR:** Free for personal, commercial, government use. Attribution appreciated but not required.
app.py CHANGED
@@ -124,7 +124,7 @@ def zip_and_download():
124
  temp_dir = tempfile.mkdtemp()
125
  zip_path = os.path.join(temp_dir, ZIP_NAME)
126
 
127
- if not os.path.exists(FOLDER_TO_ZIP):
128
  raise gr.Error("WORKSPACE Folder does not exist!")
129
 
130
  # Create ZIP archive
 
124
  temp_dir = tempfile.mkdtemp()
125
  zip_path = os.path.join(temp_dir, ZIP_NAME)
126
 
127
+ if FOLDER_TO_ZIP is None or not os.path.exists(FOLDER_TO_ZIP):
128
  raise gr.Error("WORKSPACE Folder does not exist!")
129
 
130
  # Create ZIP archive
static/Architecture.png ADDED

Git LFS Details

  • SHA256: bc190e40027832b8efcab04419ab8ad1d5b3adc5702d30128874446cd2fa410f
  • Pointer size: 130 Bytes
  • Size of remote file: 82.1 kB
static/UI.png ADDED

Git LFS Details

  • SHA256: eb25b8e176375d7719791b3a0b14872082885d6294a61114acffdc6404cc4858
  • Pointer size: 131 Bytes
  • Size of remote file: 379 kB