Skip to main content
Glama

Raworc MCP Server

README.mdโ€ข18.9 kB
# Raworc MCP Server A production-ready Model Context Protocol (MCP) server for Raworc, enabling AI assistants to seamlessly interact with Raworc's agent runtime platform. [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Rust](https://img.shields.io/badge/Rust-1.70+-blue.svg)](https://www.rust-lang.org/) [![npm](https://img.shields.io/badge/npm-@raworc/mcp--server-red.svg)](https://www.npmjs.com/package/@raworc/mcp-server) ## ๐Ÿš€ Quick Start ### Option 1: Install via npx (Recommended) ```bash # Test the installation npx @raworc/mcp-server --help # Use directly with Claude Desktop npx @raworc/mcp-server ``` ### Option 2: Install from Source ```bash # Clone the repository git clone https://github.com/harshapalnati/raworc-mcpserver.git cd raworc-mcpserver # Build the project cargo build --release # Test the installation ./target/release/raworc-mcp --help ``` ## ๐Ÿ“‹ Prerequisites - **Rust**: Version 1.70 or higher - **Node.js**: Version 16.0 or higher (for npx installation) - **Raworc Account**: Access to Raworc platform - **Network Access**: Ability to reach `api.remoteagent.com` ## ๐Ÿ”ง Configuration ### Environment Variables | Variable | Description | Default | Required | |----------|-------------|---------|----------| | `RAWORC_API_URL` | Raworc API base URL | `https://api.remoteagent.com/api/v0` | No | | `RAWORC_AUTH_TOKEN` | JWT authentication token | - | Yes | | `RAWORC_DEFAULT_SPACE` | Default space for operations | - | No | | `RAWORC_TIMEOUT` | Request timeout in seconds | `30` | No | | `LOG_LEVEL` | Logging level | `info` | No | ### Getting Your Authentication Token ```bash curl -X POST https://api.remoteagent.com/api/v0/auth/login \ -H "Content-Type: application/json" \ -d '{ "user": "your-username", "pass": "your-password" }' ``` ## ๐ŸŽฏ Features - **Complete API Coverage**: Full access to all Raworc REST API endpoints - **Service Account Management**: Create, update, and manage service accounts with role-based access - **Role-Based Access Control (RBAC)**: Manage roles and role bindings for fine-grained permissions - **Space Management**: Create, update, and manage isolated workspaces - **Session Management**: Create, pause, resume, terminate, and fork sessions - **Message Handling**: Send, retrieve, and manage session messages - **Agent Operations**: Deploy, monitor, control, and manage agents with full lifecycle support - **Secret Management**: Secure storage and retrieval of secrets with proper access controls - **Build Management**: Trigger and monitor space builds for agent deployment - **Real-time Communication**: Send messages and receive responses from agents - **Health Monitoring**: Check API health and version information - **Production Ready**: Robust error handling, logging, and MCP protocol compliance ## ๐Ÿ”Œ Claude Desktop Integration Add the MCP server to your Claude Desktop configuration: ```json { "mcpServers": { "raworc": { "command": "npx", "args": ["@raworc/mcp-server"], "env": { "RAWORC_API_URL": "https://api.remoteagent.com/api/v0", "RAWORC_AUTH_TOKEN": "your-jwt-token", "RAWORC_DEFAULT_SPACE": "your-space", "RAWORC_TIMEOUT": "30", "LOG_LEVEL": "info" } } } } ``` ### Alternative: Direct Binary Path ```json { "mcpServers": { "raworc": { "command": "/path/to/raworc-mcp", "env": { "RAWORC_API_URL": "https://api.remoteagent.com/api/v0", "RAWORC_AUTH_TOKEN": "your-jwt-token", "RAWORC_DEFAULT_SPACE": "your-space" } } } } ``` ## ๐Ÿ› ๏ธ Available Tools The MCP server provides comprehensive access to all Raworc API endpoints. Here are the available tools organized by category: ### System Information #### `health_check` Check Raworc API health status. ```json { "name": "health_check", "arguments": {} } ``` #### `get_version` Get Raworc API version information. ```json { "name": "get_version", "arguments": {} } ``` ### Service Account Management #### `list_service_accounts` List all service accounts. ```json { "name": "list_service_accounts", "arguments": {} } ``` #### `create_service_account` Create a new service account. ```json { "name": "create_service_account", "arguments": { "user": "api-user", "pass": "secure-password", "space": "production", "description": "API access user" } } ``` #### `get_service_account` Get a specific service account by ID. ```json { "name": "get_service_account", "arguments": { "id": "550e8400-e29b-41d4-a716-446655440000" } } ``` #### `update_service_account` Update a service account. ```json { "name": "update_service_account", "arguments": { "id": "550e8400-e29b-41d4-a716-446655440000", "space": "production", "description": "Updated description", "active": true } } ``` #### `delete_service_account` Delete a service account. ```json { "name": "delete_service_account", "arguments": { "id": "550e8400-e29b-41d4-a716-446655440000" } } ``` #### `update_service_account_password` Update service account password. ```json { "name": "update_service_account_password", "arguments": { "id": "550e8400-e29b-41d4-a716-446655440000", "current_password": "old-password", "new_password": "new-secure-password" } } ``` ### Role Management #### `list_roles` List all RBAC roles. ```json { "name": "list_roles", "arguments": {} } ``` #### `create_role` Create a new role. ```json { "name": "create_role", "arguments": { "id": "developer", "description": "Developer role", "rules": [ { "apiGroups": [""], "resources": ["sessions", "messages"], "verbs": ["get", "list", "create"] } ] } } ``` #### `get_role` Get a specific role by ID. ```json { "name": "get_role", "arguments": { "id": "developer" } } ``` #### `delete_role` Delete a role. ```json { "name": "delete_role", "arguments": { "id": "developer" } } ``` ### Role Binding Management #### `list_role_bindings` List all role bindings. ```json { "name": "list_role_bindings", "arguments": {} } ``` #### `create_role_binding` Create a new role binding. ```json { "name": "create_role_binding", "arguments": { "subject": "api-user", "role_ref": "developer", "space": "staging" } } ``` #### `get_role_binding` Get a specific role binding by ID. ```json { "name": "get_role_binding", "arguments": { "id": "admin-binding" } } ``` #### `delete_role_binding` Delete a role binding. ```json { "name": "delete_role_binding", "arguments": { "id": "admin-binding" } } ``` ### Space Management #### `list_spaces` List all spaces. ```json { "name": "list_spaces", "arguments": {} } ``` #### `create_space` Create a new space. ```json { "name": "create_space", "arguments": { "name": "staging", "description": "Staging environment", "settings": { "environment": "staging" } } } ``` #### `get_space` Get a specific space by name. ```json { "name": "get_space", "arguments": { "name": "staging" } } ``` #### `update_space` Update a space. ```json { "name": "update_space", "arguments": { "name": "staging", "description": "Updated staging space" } } ``` #### `delete_space` Delete a space. ```json { "name": "delete_space", "arguments": { "name": "staging" } } ``` ### Session Management #### `list_sessions` List all sessions in a space. ```json { "name": "list_sessions", "arguments": { "space": "production" } } ``` #### `create_session` Create a new session. ```json { "name": "create_session", "arguments": { "space": "development", "metadata": { "purpose": "testing", "user": "developer" } } } ``` #### `get_session` Get session details by ID. ```json { "name": "get_session", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production" } } ``` #### `update_session` Update session details. ```json { "name": "update_session", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production" } } ``` #### `update_session_state` Update session state. ```json { "name": "update_session_state", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "state": "closed" } } ``` #### `close_session` Close a session. ```json { "name": "close_session", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d" } } ``` #### `restore_session` Restore a closed session. ```json { "name": "restore_session", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d" } } ``` #### `remix_session` Fork a session. ```json { "name": "remix_session", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "development" } } ``` #### `pause_session` Pause a session. ```json { "name": "pause_session", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production" } } ``` #### `resume_session` Resume a paused session. ```json { "name": "resume_session", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production" } } ``` #### `terminate_session` Terminate a session. ```json { "name": "terminate_session", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production" } } ``` ### Session Message Management #### `get_messages` Get messages from a session. ```json { "name": "get_messages", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production", "limit": 10 } } ``` #### `send_message` Send a message to a session. ```json { "name": "send_message", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production", "content": "Generate a Python script to calculate fibonacci numbers" } } ``` #### `get_message_count` Get message count for a session. ```json { "name": "get_message_count", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production" } } ``` #### `clear_messages` Clear all messages from a session. ```json { "name": "clear_messages", "arguments": { "session_id": "61549530-3095-4cbf-b379-cd32416f626d", "space": "production" } } ``` ### Agent Management #### `list_agents` List agents in a space. ```json { "name": "list_agents", "arguments": { "space": "production" } } ``` #### `create_agent` Create a new agent. ```json { "name": "create_agent", "arguments": { "space": "production", "name": "data-analyzer", "description": "Data analysis specialist", "purpose": "analyze data, create visualizations, statistical analysis", "source_repo": "Raworc/raworc-agent-python-demo", "source_branch": "main" } } ``` #### `get_agent` Get a specific agent. ```json { "name": "get_agent", "arguments": { "space": "production", "agent_name": "data-analyzer" } } ``` #### `update_agent` Update an agent. ```json { "name": "update_agent", "arguments": { "space": "production", "agent_name": "data-analyzer", "description": "Updated data analysis specialist", "purpose": "enhanced data analysis and visualization" } } ``` #### `delete_agent` Delete an agent. ```json { "name": "delete_agent", "arguments": { "space": "production", "agent_name": "data-analyzer" } } ``` #### `update_agent_status` Update agent status. ```json { "name": "update_agent_status", "arguments": { "space": "production", "agent_name": "data-analyzer", "status": "inactive" } } ``` #### `deploy_agent` Deploy an agent. ```json { "name": "deploy_agent", "arguments": { "space": "production", "agent_name": "data-analyzer" } } ``` #### `stop_agent` Stop an agent. ```json { "name": "stop_agent", "arguments": { "space": "production", "agent_name": "data-analyzer" } } ``` #### `list_running_agents` List running agents in a space. ```json { "name": "list_running_agents", "arguments": { "space": "production" } } ``` #### `get_agent_logs` Get logs for a specific agent. ```json { "name": "get_agent_logs", "arguments": { "space": "production", "agent_name": "data-analyzer", "limit": 100, "follow": false } } ``` ### Secret Management #### `list_secrets` List secrets in a space. ```json { "name": "list_secrets", "arguments": { "space": "production", "show_values": false } } ``` #### `create_secret` Create a new secret. ```json { "name": "create_secret", "arguments": { "space": "production", "key_name": "ANTHROPIC_API_KEY", "value": "sk-ant-your-actual-key", "description": "Claude API key" } } ``` #### `get_secret` Get a specific secret. ```json { "name": "get_secret", "arguments": { "space": "production", "key": "ANTHROPIC_API_KEY", "show_values": true } } ``` #### `update_secret` Update a secret. ```json { "name": "update_secret", "arguments": { "space": "production", "key": "ANTHROPIC_API_KEY", "value": "new-secret-value", "description": "Updated description" } } ``` #### `delete_secret` Delete a secret. ```json { "name": "delete_secret", "arguments": { "space": "production", "key": "ANTHROPIC_API_KEY" } } ``` ### Build Management #### `create_build` Trigger a space build. ```json { "name": "create_build", "arguments": { "space": "production", "dockerfile": "Dockerfile" } } ``` #### `get_latest_build` Get latest build status. ```json { "name": "get_latest_build", "arguments": { "space": "production" } } ``` #### `get_build` Get specific build status. ```json { "name": "get_build", "arguments": { "space": "production", "build_id": "build-550e8400-e29b-41d4-a716-446655440000" } } ``` ## ๐Ÿงช Testing ### Quick Test ```bash # Test with npx npx @raworc/mcp-server --help # Test health check echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "health_check", "arguments": {}}}' | npx @raworc/mcp-server # Test list spaces echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "list_spaces", "arguments": {}}}' | npx @raworc/mcp-server ``` ### Manual API Testing ```bash # Health check curl -H "Authorization: Bearer your-token" https://api.remoteagent.com/api/v0/health # Get version curl -H "Authorization: Bearer your-token" https://api.remoteagent.com/api/v0/version # List spaces curl -H "Authorization: Bearer your-token" https://api.remoteagent.com/api/v0/spaces ``` ## ๐Ÿ—๏ธ Development ### Building from Source ```bash # Clone the repository git clone https://github.com/harshapalnati/raworc-mcpserver.git cd raworc-mcpserver # Build the project cargo build --release # Run tests cargo test # Install with npm (for npx distribution) npm install ``` ### Project Structure ``` raworc-mcpserver/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ main.rs # Entry point โ”‚ โ”œโ”€โ”€ lib.rs # Library exports โ”‚ โ”œโ”€โ”€ client.rs # Raworc API client โ”‚ โ”œโ”€โ”€ error.rs # Error handling โ”‚ โ”œโ”€โ”€ models.rs # Data models โ”‚ โ””โ”€โ”€ mcp.rs # MCP server implementation โ”œโ”€โ”€ bin/ โ”‚ โ””โ”€โ”€ raworc-mcp.js # JavaScript wrapper for npx โ”œโ”€โ”€ scripts/ โ”‚ โ””โ”€โ”€ postinstall.js # Build script for npm installation โ”œโ”€โ”€ tests/ โ”‚ โ””โ”€โ”€ integration_test.rs # Integration tests โ”œโ”€โ”€ examples/ โ”‚ โ”œโ”€โ”€ claude-desktop-config.json # Example Claude Desktop config โ”‚ โ””โ”€โ”€ usage-example.md # Usage examples โ”œโ”€โ”€ Cargo.toml # Rust dependencies โ”œโ”€โ”€ package.json # npm package configuration โ”œโ”€โ”€ QUICKSTART.md # Quick start guide โ”œโ”€โ”€ TESTING.md # Testing guide โ””โ”€โ”€ README.md # This file ``` ## ๐Ÿ› Troubleshooting ### Common Issues 1. **Authentication Failed** - Verify your token is valid and not expired - Check that you have the correct permissions 2. **Connection Issues** - Verify you can reach `api.remoteagent.com` - Check your network connectivity 3. **Permission Errors** - Ensure your account has the necessary permissions - Check that you're using the correct space ### Debug Mode ```bash export LOG_LEVEL="debug" export RAWORC_API_URL="https://api.remoteagent.com/api/v0" export RAWORC_AUTH_TOKEN="your-token" npx @raworc/mcp-server ``` ## ๐Ÿ“„ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## ๐Ÿค Contributing 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## ๐Ÿ“ž Support - **Documentation**: [Raworc API Documentation](https://raworc.com/docs/api/rest-api) - **RemoteAgent REST (v0)**: [ra-hyp-1 endpoints and examples](docs/REST-API-v0.md) - **Production Guide**: [Deploy and operate in production](docs/PRODUCTION.md) - **Issues**: [GitHub Issues](https://github.com/harshapalnati/raworc-mcpserver/issues) - **Discussions**: [GitHub Discussions](https://github.com/harshapalnati/raworc-mcpserver/discussions) ## ๐Ÿ“ Changelog ### v0.2.0 - **Complete API Coverage**: Added all Raworc REST API endpoints - **Service Account Management**: Full CRUD operations for service accounts - **Role-Based Access Control**: Complete RBAC implementation with roles and role bindings - **Enhanced Session Management**: Added session forking, state management, and message operations - **Advanced Agent Operations**: Full agent lifecycle management with deployment and monitoring - **Comprehensive Secret Management**: Enhanced secret operations with proper access controls - **Build Management**: Space build triggering and monitoring capabilities - **Production Enhancements**: Improved error handling, logging, and MCP protocol compliance ### v0.1.0 - Initial release - Basic MCP protocol implementation - Core Raworc API integration - Session, space, agent, and secret management - Health monitoring and version information - npx installation support - Production-ready error handling ## ๐Ÿ”— Links - **Repository**: [https://github.com/harshapalnati/raworc-mcpserver](https://github.com/harshapalnati/raworc-mcpserver) - **npm Package**: [@raworc/mcp-server](https://www.npmjs.com/package/@raworc/mcp-server) - **Raworc API**: [https://raworc.com/docs/api/rest-api](https://raworc.com/docs/api/rest-api)

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/harshapalnati/raworc-mcpserver'

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