📚 Update documentation with complete MCP integration guide

- Enhanced README with new MCP features and setup instructions
- Updated MCP_INTEGRATION.md with Claude Desktop configuration
- Added network deployment options and security considerations
- Fixed README encoding from UTF-16 to UTF-8
- Comprehensive guide for both local and network MCP deployments
- Example usage patterns for Claude Desktop integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-05-31 11:17:23 +07:00
parent 09dcc8e507
commit a0bd71e438
2 changed files with 182 additions and 2 deletions

View File

@ -82,11 +82,96 @@ Here are some examples of how an AI agent might use the MCP tools:
}
```
## Setting Up Claude with MCP
## MCP Integration Options
Nomad MCP provides two integration approaches:
### 1. FastAPI MCP Integration (Zero-Config)
Automatically exposes all REST API endpoints as MCP tools via SSE:
```
http://your-server:8000/mcp/sse
```
### 2. Standalone MCP Server (Claude Desktop)
A dedicated MCP server optimized for Claude Desktop with enhanced capabilities.
## Setting Up Claude Desktop with Standalone MCP Server
### Prerequisites
1. **Install Dependencies**:
```bash
uv venv
uv pip install -r requirements.txt
```
2. **Set Environment Variables**:
```bash
export NOMAD_ADDR="http://your-nomad-server:4646"
export NOMAD_NAMESPACE="development" # optional
```
### Local Setup
1. **Configure Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"nomad-mcp": {
"command": "/path/to/nomad_mcp/run_mcp_server.sh",
"env": {
"NOMAD_ADDR": "http://your-nomad-server:4646"
}
}
}
}
```
2. **Restart Claude Desktop** to load the configuration
### Available MCP Tools
The standalone MCP server provides these tools:
- **`list_nomad_jobs`** - List all jobs in a namespace
- **`get_job_status`** - Get detailed job status and health
- **`stop_job`** - Stop jobs with optional purge
- **`restart_job`** - Restart jobs
- **`create_job`** - Create jobs from specifications
- **`submit_job_file`** ⭐ - Submit Nomad job files (JSON/HCL)
- **`get_job_logs`** - Retrieve stdout/stderr logs
- **`get_allocation_status`** ⭐ - Detailed allocation monitoring
- **`get_job_evaluations`** ⭐ - Placement failure analysis
- **`force_evaluate_job`** ⭐ - Retry failed placements
### Example Workflow
1. **Submit a job file**:
```
Please submit this job file: [paste JSON job spec]
```
2. **Monitor deployment**:
```
Check the status and allocations for my-service
```
3. **Debug issues**:
```
Get evaluations for my-service to see why it failed
```
4. **Force retry**:
```
Force evaluate my-service to retry placement
```
### Claude Code Integration
Claude Code can directly connect to the MCP endpoint at `http://your-server:8000/mcp/sse`. Use the `--mcp-url` flag when starting Claude Code:
Claude Code can directly connect to the FastAPI MCP endpoint:
```bash
claude-code --mcp-url http://your-server:8000/mcp/sse
@ -98,6 +183,101 @@ For integration with the Claude API, you can use the MCP toolchain configuration
See the [Claude API Integration Documentation](CLAUDE_API_INTEGRATION.md) for more detailed instructions.
## Network Deployment
### Running MCP Server on Nomad Cluster
You can deploy the MCP server itself on your Nomad cluster for centralized access.
#### Option 1: FastAPI MCP Server (HTTP/SSE)
Deploy the full FastAPI application with MCP endpoint:
```bash
# Start the FastAPI server with MCP endpoint
uvicorn app.main:app --host 0.0.0.0 --port 8000
```
**Access via**: `http://your-nomad-server:8000/mcp/sse`
#### Option 2: Standalone MCP Server (TCP/Network)
For network access to the standalone MCP server, you'll need to modify it to use TCP transport instead of stdio.
**Current limitation**: The standalone MCP server (`mcp_server.py`) uses stdio transport, which is designed for local process communication.
**Network solution**: Create a TCP-based version or use the FastAPI MCP endpoint instead.
### Claude Desktop Network Configuration
To connect Claude Desktop to a network MCP server:
#### For FastAPI MCP (Recommended)
Create a wrapper script that uses the HTTP/SSE endpoint:
```json
{
"mcpServers": {
"nomad-mcp-network": {
"command": "npx",
"args": [
"@modelcontextprotocol/server-everything",
"--url", "http://your-nomad-server:8000/mcp/sse"
]
}
}
}
```
#### For Custom Network MCP Server
If you need a network-accessible standalone MCP server, you would need to:
1. **Modify the transport** in `mcp_server.py` from stdio to TCP
2. **Add network security** (authentication, TLS)
3. **Configure Claude Desktop** to connect via TCP
**Example network MCP server** (requires modification):
```python
# In mcp_server.py - replace stdio with TCP transport
import mcp.server.tcp
async def main():
async with mcp.server.tcp.tcp_server("0.0.0.0", 8001) as server:
await server.run(...)
```
**Claude Desktop config for network TCP**:
```json
{
"mcpServers": {
"nomad-mcp-tcp": {
"command": "mcp-client",
"args": ["tcp://your-nomad-server:8001"]
}
}
}
```
### Security Considerations for Network Deployment
When deploying MCP servers on the network:
1. **Use HTTPS/TLS** for HTTP-based MCP servers
2. **Implement authentication** (API keys, OAuth, etc.)
3. **Network isolation** (VPN, private networks)
4. **Firewall rules** to restrict access
5. **Rate limiting** to prevent abuse
6. **Audit logging** for all MCP operations
### Recommended Network Architecture
```
Claude Desktop → HTTPS/WSS → Load Balancer → FastAPI MCP Server → Nomad API
(secure) (optional) (on cluster) (internal)
```
## Debugging MCP Connections
If you're having issues with MCP connections:

BIN
README.md

Binary file not shown.