Skip to main content
Glama

Proto Server

by umuterturk
USAGE.md7.25 kB
# MCP Proto Server - Usage Guide ## Quick Start 1. **Install dependencies:** ```bash pip install -r requirements.txt ``` 2. **Run the server:** ```bash python mcp_proto_server.py --root examples/ ``` 3. **Connect your AI agent** to the server using MCP client ## Example Queries and Responses ### 1. Search for Authentication-Related Definitions **Query:** ```json { "tool": "search_proto", "arguments": { "query": "auth", "limit": 10 } } ``` **Response:** ```json { "query": "auth", "result_count": 3, "results": [ { "name": "api.v1.AuthService", "type": "service", "file": "examples/api/v1/auth.proto", "score": 95, "match_type": "name", "rpcs": ["Login", "Logout", "RefreshToken", "VerifyToken"], "rpc_count": 4, "comment": "Authentication service for user login and session management" }, { "name": "api.v1.LoginRequest", "type": "message", "file": "examples/api/v1/auth.proto", "score": 72, "match_type": "comment", "fields": ["email", "password", "remember_me"], "field_count": 3, "comment": "Login request with credentials" } ] } ``` ### 2. Get Service Definition **Query:** ```json { "tool": "get_service_definition", "arguments": { "name": "UserService" } } ``` **Response:** ```json { "name": "UserService", "full_name": "api.v1.UserService", "comment": "User service handles user management operations", "rpcs": [ { "name": "CreateUser", "request_type": "CreateUserRequest", "response_type": "CreateUserResponse", "request_streaming": false, "response_streaming": false, "comment": "Create a new user account" }, { "name": "GetUser", "request_type": "GetUserRequest", "response_type": "GetUserResponse", "request_streaming": false, "response_streaming": false, "comment": "Get user by ID" }, { "name": "ListUsers", "request_type": "ListUsersRequest", "response_type": "ListUsersResponse", "request_streaming": false, "response_streaming": true, "comment": "List users with pagination" } ], "file": "examples/api/v1/user.proto" } ``` ### 3. Get Message Definition **Query:** ```json { "tool": "get_message_definition", "arguments": { "name": "User" } } ``` **Response:** ```json { "name": "User", "full_name": "api.v1.User", "comment": "User represents a system user", "fields": [ { "name": "id", "type": "string", "number": 1, "label": null, "comment": "Unique user identifier" }, { "name": "email", "type": "string", "number": 2, "label": null, "comment": "User email address" }, { "name": "name", "type": "string", "number": 3, "label": null, "comment": "Full name" }, { "name": "role", "type": "UserRole", "number": 4, "label": null, "comment": "User role" }, { "name": "is_active", "type": "bool", "number": 7, "label": null, "comment": "Account active status" } ], "file": "examples/api/v1/user.proto" } ``` ### 4. Search by Field Name **Query:** ```json { "tool": "search_proto", "arguments": { "query": "email", "limit": 5 } } ``` **Response:** ```json { "query": "email", "result_count": 3, "results": [ { "name": "api.v1.User", "type": "message", "file": "examples/api/v1/user.proto", "score": 100, "match_type": "field", "matched_field": "email", "fields": ["id", "email", "name", "role", "created_at", "updated_at", "is_active"], "field_count": 7 }, { "name": "api.v1.CreateUserRequest", "type": "message", "file": "examples/api/v1/user.proto", "score": 100, "match_type": "field", "matched_field": "email", "fields": ["email", "name", "password", "role"], "field_count": 4 } ] } ``` ### 5. Get Enum Definition **Query:** ```json { "tool": "get_message_definition", "arguments": { "name": "UserRole" } } ``` **Response:** ```json { "name": "UserRole", "full_name": "api.v1.UserRole", "comment": "User role enumeration", "values": [ { "name": "ROLE_UNSPECIFIED", "number": 0, "comment": "Default unknown role" }, { "name": "ROLE_USER", "number": 1, "comment": "Regular user" }, { "name": "ROLE_ADMIN", "number": 2, "comment": "Administrator" } ], "file": "examples/api/v1/user.proto" } ``` ## Integration with AI Agents ### Cursor / Claude The MCP server can be integrated with Cursor or other MCP-compatible AI tools: 1. Add to your MCP settings: ```json { "mcpServers": { "proto-server": { "command": "python", "args": [ "/path/to/mcp_proto_server.py", "--root", "/path/to/your/protos" ] } } } ``` 2. The AI can then use tools like: - "Search for product-related services" - "Show me the User message structure" - "Find all RPC methods for authentication" ### Example AI Interactions **User:** "What authentication methods are available?" **AI uses:** `search_proto("authentication")` → finds AuthService **AI uses:** `get_service_definition("AuthService")` → gets all RPC methods **AI responds:** "The system has an AuthService with 4 methods: Login, Logout, RefreshToken, and VerifyToken. Would you like details on any specific method?" --- **User:** "Show me the structure of a CreateUserRequest" **AI uses:** `get_message_definition("CreateUserRequest")` **AI responds:** "CreateUserRequest has 4 fields: - email (string) - User email (required) - name (string) - User name (required) - password (string) - User password (required) - role (UserRole) - User role (optional, defaults to USER)" ## Advanced Usage ### Environment Variables ```bash export PROTO_ROOT=/path/to/protos python mcp_proto_server.py ``` ### File Watching (Future) ```bash python mcp_proto_server.py --root /path/to/protos --watch ``` This will automatically re-index when proto files change. ### Custom Search Scores Lower the minimum score to get more fuzzy matches: ```json { "tool": "search_proto", "arguments": { "query": "usr", "min_score": 40 } } ``` ## Performance Tips 1. **Large Repositories**: The indexer handles thousands of files efficiently (1000+ files/sec) 2. **Memory**: Each proto definition uses ~1-2 KB of memory 3. **Search Speed**: Sub-millisecond fuzzy search across all definitions 4. **Pagination**: Use `limit` parameter to control result size ## Troubleshooting ### "Service not found" - Use `search_proto` first to find the exact name - Try both simple name ("UserService") and qualified name ("api.v1.UserService") ### "Failed to index directory" - Check that the path exists and contains .proto files - Verify file permissions - Check logs with `--verbose` flag ### Parsing Errors - Ensure proto files use valid proto2 or proto3 syntax - Check for syntax errors in proto files - The parser supports standard proto syntax but may not handle all edge cases

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/umuterturk/mcp-proto'

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