firegex/backend/mcp_api/tokens.py
av0idd4rk 863422f202 Add authenticated MCP server and agent guide
Expose 28 tools with shared REST operations, role-scoped bearer authentication, revisions, durable retries, snapshots, jobs and timed rollback. Add Docker verification harnesses and setup/workflow documentation in docs/mcp.md and inst.md. Validated with 330 unit tests, two consecutive 25-case MCP/import runs, and restart recovery; the full upstream regression run remains incomplete.
2026-10-23 09:46:44 +03:00

34 lines
1.1 KiB
Python

"""Run inside Firegex: python3 -m mcp_api.tokens create --name laptop."""
import argparse
import json
from mcp_api.store import Store
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--db", help="Defaults to FIREGEX_MCP_DB or db/mcp/control.sqlite3")
sub = parser.add_subparsers(dest="action", required=True)
create = sub.add_parser("create")
create.add_argument("--name", required=True)
create.add_argument("--role", choices=["observer", "operator", "admin"], default="operator")
create.add_argument("--hours", type=float, default=168)
sub.add_parser("list")
sub.add_parser("revoke").add_argument("id")
args = parser.parse_args()
store = Store(args.db)
store.open()
try:
if args.action == "create":
value = store.token_create(args.name, args.role, args.hours)
elif args.action == "list":
value = store.token_list()
else:
value = {"revoked": store.token_revoke(args.id)}
print(json.dumps(value, indent=2))
finally:
store.close()
if __name__ == "__main__":
main()