{"name":"io.github.george-bobby/mcp-modal","slug":"george-bobby-mcp-modal","title":"MCP Modal Server","description":"MCP server for managing Modal apps, containers, volumes, and secrets.","url":"https://mcp.market/server/george-bobby-mcp-modal","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":20,"stars":2,"forks":1,"downloads_week":null,"last_push_at":"2026-09-09T10:08:24.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/george-bobby/mcp-modal","website":null,"version":"0.5.0","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"mcp-modal","version":"0.5.0","runtimeHint":"uvx","transport":{"type":"stdio"}}],"tools":[{"name":"analyze_modal_costs","description":"Break down what the workspace is spending (`modal billing`). Costs are fetched once and aggregated locally, so you get ranked totals and period-over-period changes rather than hundreds of raw rows.","write_action":false,"price_micros":0,"input_schema":null},{"name":"deploy_modal_app","description":"Deploy a Modal app (`modal deploy`). Deployed endpoints persist after this returns, so any URLs in the result are live, shareable links.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_modal_logs","description":"Fetch logs for an app or container (`modal app logs` / `modal container logs`). To find where something went wrong, prefer search_modal_logs — it returns matches with surrounding context instead of a raw tail.","write_action":false,"price_micros":0,"input_schema":null},{"name":"inspect_modal_secret","description":"List the KEY NAMES inside a Modal secret — never the values.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_modal_resources","description":"Read-only lookup of everything in the Modal account. Start here to find the app name, container ID or volume name that the other tools take.","write_action":false,"price_micros":0,"input_schema":null},{"name":"manage_modal_app","description":"Change a deployed app's state. Both actions affect live traffic.","write_action":false,"price_micros":0,"input_schema":null},{"name":"manage_modal_container","description":"Act on one running container. Find IDs with list_modal_resources(resource=\"containers\").","write_action":false,"price_micros":0,"input_schema":null},{"name":"manage_modal_secret","description":"Create or delete a secret. To list secret names use list_modal_resources(resource=\"secrets\") — values are never readable.","write_action":true,"price_micros":0,"input_schema":null},{"name":"manage_modal_volume","description":"Volume lifecycle. For the files inside a volume use modal_volume_files (writes) or list_modal_resources(resource=\"volume_files\") (reads).","write_action":false,"price_micros":0,"input_schema":null},{"name":"modal_volume_files","description":"Write operations on a volume's files. To LIST a volume's contents use list_modal_resources(resource=\"volume_files\").","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_modal_app","description":"Run a Modal function or local entrypoint once and collect its output (`modal run`). Use this to test on Modal compute; use deploy_modal_app to publish.","write_action":true,"price_micros":0,"input_schema":null},{"name":"search_modal_logs","description":"Search an app's or container's logs and return each hit WITH surrounding context — the fastest way to find a traceback, an error or a request ID. Logs are fetched once and grepped locally, so you get the lines around each match, not just the match.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T20:58:31.092Z","report":{"scannerVersion":"0.1.7","scannedAt":"2026-09-19T20:58:31.039Z","components":{"code":{"score":25,"max":25,"notes":["19 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 10 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"mcp-modal","version":"0.5.0","found":true,"license":"MIT","dependencyCount":4,"publishedAt":"2026-09-09T10:08:46.106868Z","repositoryUrl":"https://github.com/george-bobby/mcp-modal"}],"repo":{"found":true,"owner":"george-bobby","repo":"mcp-modal","archived":false,"pushedAt":"2026-09-09T10:08:24Z","stars":2,"forks":1,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/74462795?v=4","ownerCreatedAt":"2020-11-14T15:56:52Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/74462795?v=4&s=128","source":"github"},"presence":{"stars":2,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-09T10:08:24.000Z","score":20}}}},"grade_history":[],"reviews":[]}