Skip to main content
Glama
Nooruddin-dev

Noor MCP Code Assistant

README.md
# šŸš€ Noor MCP Code Assistant

> MCP (Model Context Protocol) Server that bridges Claude Desktop with your RAG-powered Code Agent API.

[![Author](https://img.shields.io/badge/Author-Noor%20Uddin-blue)](https://github.com/nooruddin-dev)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-Noor%20Uddin-0A66C2)](https://www.linkedin.com/in/nooruddin-dev/)
[![YouTube](https://img.shields.io/badge/YouTube-Noor%20Codelogics-red)](https://youtube.com/@noorcodelogics)
[![Python](https://img.shields.io/badge/Python-3.11+-green)](https://python.org)


---

## šŸ“‹ Overview

This project creates an MCP server that allows **Claude Desktop** to communicate with your existing **RAG Code Agent API** running at `localhost:8900`. When you ask code-related questions in Claude Desktop, it can use this tool to fetch context-aware answers from your codebase.

### šŸŽÆ Features

- āœ… Seamless integration with Claude Desktop
- āœ… Connects to existing RAG API (`/api/chat/rag`)
- āœ… Session management for conversation continuity
- āœ… Comprehensive error handling
- āœ… Configurable via environment variables
- āœ… Ready for future agent extensions (SQL, React, Java)

---

## šŸ—ļø Project Structure
```
noor_mcp_code_assistant_parent/
ā”œā”€ā”€ env_container/              # Virtual environment
│   ā”œā”€ā”€ bin/
│   ā”œā”€ā”€ lib/
│   └── ...
└── noor_mcp_code_assistant/    # Project source
    ā”œā”€ā”€ mcp_server.py           # Main MCP server
    ā”œā”€ā”€ config.py               # Configuration management
    ā”œā”€ā”€ requirements.txt        # Dependencies
    ā”œā”€ā”€ .env.example            # Environment template
    ā”œā”€ā”€ .env                    # Your configuration (git-ignored)
    └── README.md               # This file
```

---

## šŸš€ Quick Start

### 1ļøāƒ£ Create Virtual Environment

Navigate to the parent folder and create the environment:
```bash
cd noor_mcp_code_assistant_parent
python3.11 -m venv env_container
```

Activate the environment:
```bash
# Linux/WSL/macOS
source env_container/bin/activate

# Windows PowerShell
.\env_container\Scripts\Activate
```

---

### 2ļøāƒ£ Install Requirements
```bash
cd noor_mcp_code_assistant
pip install -r requirements.txt
```

---

### 3ļøāƒ£ Configure Environment Variables

Copy the example file and customize:
```bash
cp .env.example .env
```

Edit `.env` with your settings:
```bash
# Required
RAG_API_BASE_URL=http://localhost:8900
RAG_CHAT_ENDPOINT=/api/chat/rag

# Optional
DEFAULT_SESSION_ID=claude-desktop-session
REQUEST_TIMEOUT=120
```

---

### 4ļøāƒ£ Configure Claude Desktop

Locate your Claude Desktop configuration file:

**Windows:**
```
%APPDATA%\Claude\claude_desktop_config.json
```
(Usually: `C:\Users\<YourUsername>\AppData\Roaming\Claude\claude_desktop_config.json`)

Add the MCP server configuration:
```json
{
  "mcpServers": {
    "noor-code-assistant": {
      "command": "wsl",
      "args": [
        "-d", "Ubuntu-20.04",
        "--",
        "/home/<your-username>/noor_mcp_code_assistant_parent/env_container/bin/python",
        "/home/<your-username>/noor_mcp_code_assistant_parent/noor_mcp_code_assistant/mcp_server.py"
      ],
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}
```

> āš ļø **Important:** Replace `<your-username>` with your actual WSL username and adjust paths accordingly.

#### šŸ” Find Your WSL Distribution Name
```powershell
wsl --list --verbose
```

Use the exact name shown (e.g., `Ubuntu-20.04`, `Ubuntu`, etc.)

---

### 5ļøāƒ£ Verify Setup

**Step 1:** Ensure your RAG API is running:
```bash
# In WSL terminal
cd /path/to/your/rag-project
source env_container/bin/activate
uvicorn main:app --reload --port 8900
```

**Step 2:** Test the RAG API:
```bash
curl -X POST http://localhost:8900/api/chat/rag \
  -H "Content-Type: application/json" \
  -d '{"session_id": "test", "message": "hello"}'
```

**Step 3:** Restart Claude Desktop completely (check system tray)

**Step 4:** The `noor-code-assistant` tool should now appear in Claude Desktop!

---

## šŸ’¬ Usage Examples

Once configured, you can ask Claude Desktop:

> "Use the code assistant to create a C# function that gets employee requests by employee ID"

> "Ask the code assistant how pagination is implemented in my project"

> "Use code_assistant to show me the DTO structure for Employee entity"

---

## šŸ”® Adding Future Agents

When you're ready to add more agents (SQL, React, Java):

### Step 1: Add endpoints to your RAG API
```python
@app.post("/api/sql/agent")
async def sql_agent(request: SQLAgentRequest):
    # Your SQL agent logic
    pass
```

### Step 2: Update `.env`
```bash
SQL_AGENT_ENDPOINT=/api/sql/agent
```

### Step 3: Uncomment tool definitions in `mcp_server.py`

Look for the commented `sql_agent` tool and handler, then uncomment them.

### Step 4: Restart Claude Desktop

---

## šŸ› Troubleshooting

| Issue | Solution |
|-------|----------|
| **MCP server not appearing** | Check Claude Desktop logs at `%APPDATA%\Claude\logs\` |
| **Connection refused** | Ensure RAG API is running on `localhost:8900` |
| **WSL path issues** | Use full Linux paths (e.g., `/home/user/...`) |
| **Python not found** | Use full path to Python in venv |
| **Timeout errors** | Increase `REQUEST_TIMEOUT` in `.env` |

### šŸ“‹ View Logs

**Claude Desktop Logs:**
```
C:\Users\<YourUsername>\AppData\Roaming\Claude\logs\
```

**Test MCP Server Standalone:**
```bash
cd noor_mcp_code_assistant
source ../env_container/bin/activate
python mcp_server.py
```

---

## šŸ“Š Configuration Reference

| Variable | Default | Description |
|----------|---------|-------------|
| `RAG_API_BASE_URL` | `http://localhost:8900` | Base URL of your RAG API |
| `RAG_CHAT_ENDPOINT` | `/api/chat/rag` | Chat endpoint path |
| `DEFAULT_SESSION_ID` | `claude-desktop-session` | Default session for continuity |
| `REQUEST_TIMEOUT` | `120` | API timeout in seconds |

---

## šŸ” Security Notes

- This MCP server only makes **outbound** HTTP requests to your local RAG API
- No sensitive data is stored or logged
- Session IDs are used only for conversation context
- All communication happens over localhost

---

## šŸ“„ License

MIT License - Feel free to use and modify!

---

## šŸ‘Øā€šŸ’» Author

**Noor Uddin**
- šŸŽ„ YouTube: [Noor Codelogics](https://youtube.com/@noorcodelogics)
- šŸ’¼ LinkedIn: [Noor Uddin](https://linkedin.com/in/nooruddin-dev)
- šŸ›’ CodeCanyon: 180+ Sales

---

## 🌟 Support

If you find this helpful, please:
- ⭐ Star the repository
- šŸ“ŗ Subscribe to [Noor Codelogics](https://youtube.com/@noorcodelogics)
- šŸ”— Share with fellow developers

Happy Coding! šŸš€