Skip to main content
Glama
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

Latest Blog Posts

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