machine-bridge-mcp 0.5.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -603,6 +603,537 @@
603
603
  "additionalProperties": false
604
604
  }
605
605
  },
606
+ {
607
+ "name": "diagnose_runtime",
608
+ "title": "Diagnose runtime layers",
609
+ "description": "Run fixed, non-user-controlled local probes to distinguish MCP policy, local filesystem, process-spawn, shell, managed-job storage, and registered-resource failures. A successful response proves the request reached the local daemon; it cannot diagnose a host refusal that blocks the tool call itself.",
610
+ "availability": "always",
611
+ "annotations": {
612
+ "readOnlyHint": true,
613
+ "destructiveHint": false,
614
+ "idempotentHint": true,
615
+ "openWorldHint": false
616
+ },
617
+ "inputSchema": {
618
+ "type": "object",
619
+ "additionalProperties": false
620
+ }
621
+ },
622
+ {
623
+ "name": "list_local_resources",
624
+ "title": "List local resource aliases",
625
+ "description": "List names and validation status for locally registered file resources without returning their paths or contents. Resources are registered only through the local machine-mcp CLI.",
626
+ "availability": "write",
627
+ "annotations": {
628
+ "readOnlyHint": true,
629
+ "destructiveHint": false,
630
+ "idempotentHint": true,
631
+ "openWorldHint": false
632
+ },
633
+ "inputSchema": {
634
+ "type": "object",
635
+ "additionalProperties": false
636
+ }
637
+ },
638
+ {
639
+ "name": "generate_ssh_key_resource",
640
+ "title": "Generate SSH key resource",
641
+ "description": "Generate or reuse an Ed25519 SSH key pair on the local machine and register the private key file as a local resource alias. The private key content is never returned; only local paths, public fingerprint, permissions, and registration status are reported. Available only under canonical full policy.",
642
+ "availability": "full",
643
+ "annotations": {
644
+ "readOnlyHint": false,
645
+ "destructiveHint": false,
646
+ "idempotentHint": true,
647
+ "openWorldHint": false
648
+ },
649
+ "inputSchema": {
650
+ "type": "object",
651
+ "properties": {
652
+ "name": {
653
+ "type": "string",
654
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
655
+ },
656
+ "path": {
657
+ "type": "string",
658
+ "maxLength": 4096
659
+ },
660
+ "comment": {
661
+ "type": "string",
662
+ "maxLength": 256
663
+ }
664
+ },
665
+ "required": [
666
+ "name"
667
+ ],
668
+ "additionalProperties": false
669
+ }
670
+ },
671
+ {
672
+ "name": "stage_job",
673
+ "title": "Stage managed job for local approval",
674
+ "description": "Validate and persist a managed-job plan without starting any process. Use this when execution tools are unavailable or local operator review is required; launch later with machine-mcp job approve JOB_ID.",
675
+ "availability": "write",
676
+ "annotations": {
677
+ "readOnlyHint": false,
678
+ "destructiveHint": false,
679
+ "idempotentHint": false,
680
+ "openWorldHint": false
681
+ },
682
+ "inputSchema": {
683
+ "type": "object",
684
+ "properties": {
685
+ "name": {
686
+ "type": "string",
687
+ "maxLength": 128
688
+ },
689
+ "steps": {
690
+ "type": "array",
691
+ "minItems": 1,
692
+ "maxItems": 16,
693
+ "items": {
694
+ "type": "object",
695
+ "properties": {
696
+ "name": {
697
+ "type": "string",
698
+ "maxLength": 128
699
+ },
700
+ "argv": {
701
+ "type": "array",
702
+ "minItems": 1,
703
+ "maxItems": 256,
704
+ "items": {
705
+ "type": "string",
706
+ "maxLength": 16384
707
+ }
708
+ },
709
+ "cwd": {
710
+ "type": "string",
711
+ "maxLength": 4096
712
+ },
713
+ "env": {
714
+ "type": "object",
715
+ "maxProperties": 64,
716
+ "additionalProperties": {
717
+ "type": "string",
718
+ "maxLength": 16384
719
+ }
720
+ },
721
+ "env_resources": {
722
+ "type": "object",
723
+ "maxProperties": 32,
724
+ "additionalProperties": {
725
+ "type": "string",
726
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
727
+ }
728
+ },
729
+ "stdin": {
730
+ "type": "string",
731
+ "maxLength": 262144
732
+ },
733
+ "stdin_resource": {
734
+ "type": "string",
735
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
736
+ },
737
+ "timeout_seconds": {
738
+ "type": "integer",
739
+ "minimum": 1,
740
+ "maximum": 3600,
741
+ "default": 600
742
+ },
743
+ "allow_failure": {
744
+ "type": "boolean",
745
+ "default": false
746
+ },
747
+ "capture_output": {
748
+ "type": "string",
749
+ "enum": [
750
+ "redacted",
751
+ "discard"
752
+ ],
753
+ "default": "redacted"
754
+ }
755
+ },
756
+ "required": [
757
+ "argv"
758
+ ],
759
+ "additionalProperties": false
760
+ }
761
+ },
762
+ "finally_steps": {
763
+ "type": "array",
764
+ "maxItems": 16,
765
+ "items": {
766
+ "type": "object",
767
+ "properties": {
768
+ "name": {
769
+ "type": "string",
770
+ "maxLength": 128
771
+ },
772
+ "argv": {
773
+ "type": "array",
774
+ "minItems": 1,
775
+ "maxItems": 256,
776
+ "items": {
777
+ "type": "string",
778
+ "maxLength": 16384
779
+ }
780
+ },
781
+ "cwd": {
782
+ "type": "string",
783
+ "maxLength": 4096
784
+ },
785
+ "env": {
786
+ "type": "object",
787
+ "maxProperties": 64,
788
+ "additionalProperties": {
789
+ "type": "string",
790
+ "maxLength": 16384
791
+ }
792
+ },
793
+ "env_resources": {
794
+ "type": "object",
795
+ "maxProperties": 32,
796
+ "additionalProperties": {
797
+ "type": "string",
798
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
799
+ }
800
+ },
801
+ "stdin": {
802
+ "type": "string",
803
+ "maxLength": 262144
804
+ },
805
+ "stdin_resource": {
806
+ "type": "string",
807
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
808
+ },
809
+ "timeout_seconds": {
810
+ "type": "integer",
811
+ "minimum": 1,
812
+ "maximum": 3600,
813
+ "default": 600
814
+ },
815
+ "allow_failure": {
816
+ "type": "boolean",
817
+ "default": false
818
+ },
819
+ "capture_output": {
820
+ "type": "string",
821
+ "enum": [
822
+ "redacted",
823
+ "discard"
824
+ ],
825
+ "default": "redacted"
826
+ }
827
+ },
828
+ "required": [
829
+ "argv"
830
+ ],
831
+ "additionalProperties": false
832
+ }
833
+ },
834
+ "temporary_files": {
835
+ "type": "array",
836
+ "maxItems": 16,
837
+ "items": {
838
+ "type": "object",
839
+ "properties": {
840
+ "name": {
841
+ "type": "string",
842
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
843
+ },
844
+ "content": {
845
+ "type": "string",
846
+ "maxLength": 262144
847
+ },
848
+ "executable": {
849
+ "type": "boolean",
850
+ "default": false
851
+ }
852
+ },
853
+ "required": [
854
+ "name",
855
+ "content"
856
+ ],
857
+ "additionalProperties": false
858
+ }
859
+ }
860
+ },
861
+ "required": [
862
+ "steps"
863
+ ],
864
+ "additionalProperties": false
865
+ }
866
+ },
867
+ {
868
+ "name": "start_job",
869
+ "title": "Start managed job",
870
+ "description": "Durably accept a detached argv-based job with ordered steps, job-scoped temporary files, and guaranteed-attempt finally steps. The independent local runner continues if the MCP connection disappears. Use {{temp:name}}, {{resource:name}}, env_resources, or stdin_resource; registered resource contents never enter MCP arguments.",
871
+ "availability": "direct-exec",
872
+ "annotations": {
873
+ "readOnlyHint": false,
874
+ "destructiveHint": true,
875
+ "idempotentHint": false,
876
+ "openWorldHint": true
877
+ },
878
+ "inputSchema": {
879
+ "type": "object",
880
+ "properties": {
881
+ "name": {
882
+ "type": "string",
883
+ "maxLength": 128
884
+ },
885
+ "steps": {
886
+ "type": "array",
887
+ "minItems": 1,
888
+ "maxItems": 16,
889
+ "items": {
890
+ "type": "object",
891
+ "properties": {
892
+ "name": {
893
+ "type": "string",
894
+ "maxLength": 128
895
+ },
896
+ "argv": {
897
+ "type": "array",
898
+ "minItems": 1,
899
+ "maxItems": 256,
900
+ "items": {
901
+ "type": "string",
902
+ "maxLength": 16384
903
+ }
904
+ },
905
+ "cwd": {
906
+ "type": "string",
907
+ "maxLength": 4096
908
+ },
909
+ "env": {
910
+ "type": "object",
911
+ "maxProperties": 64,
912
+ "additionalProperties": {
913
+ "type": "string",
914
+ "maxLength": 16384
915
+ }
916
+ },
917
+ "env_resources": {
918
+ "type": "object",
919
+ "maxProperties": 32,
920
+ "additionalProperties": {
921
+ "type": "string",
922
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
923
+ }
924
+ },
925
+ "stdin": {
926
+ "type": "string",
927
+ "maxLength": 262144
928
+ },
929
+ "stdin_resource": {
930
+ "type": "string",
931
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
932
+ },
933
+ "timeout_seconds": {
934
+ "type": "integer",
935
+ "minimum": 1,
936
+ "maximum": 3600,
937
+ "default": 600
938
+ },
939
+ "allow_failure": {
940
+ "type": "boolean",
941
+ "default": false
942
+ },
943
+ "capture_output": {
944
+ "type": "string",
945
+ "enum": [
946
+ "redacted",
947
+ "discard"
948
+ ],
949
+ "default": "redacted"
950
+ }
951
+ },
952
+ "required": [
953
+ "argv"
954
+ ],
955
+ "additionalProperties": false
956
+ }
957
+ },
958
+ "finally_steps": {
959
+ "type": "array",
960
+ "maxItems": 16,
961
+ "items": {
962
+ "type": "object",
963
+ "properties": {
964
+ "name": {
965
+ "type": "string",
966
+ "maxLength": 128
967
+ },
968
+ "argv": {
969
+ "type": "array",
970
+ "minItems": 1,
971
+ "maxItems": 256,
972
+ "items": {
973
+ "type": "string",
974
+ "maxLength": 16384
975
+ }
976
+ },
977
+ "cwd": {
978
+ "type": "string",
979
+ "maxLength": 4096
980
+ },
981
+ "env": {
982
+ "type": "object",
983
+ "maxProperties": 64,
984
+ "additionalProperties": {
985
+ "type": "string",
986
+ "maxLength": 16384
987
+ }
988
+ },
989
+ "env_resources": {
990
+ "type": "object",
991
+ "maxProperties": 32,
992
+ "additionalProperties": {
993
+ "type": "string",
994
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
995
+ }
996
+ },
997
+ "stdin": {
998
+ "type": "string",
999
+ "maxLength": 262144
1000
+ },
1001
+ "stdin_resource": {
1002
+ "type": "string",
1003
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
1004
+ },
1005
+ "timeout_seconds": {
1006
+ "type": "integer",
1007
+ "minimum": 1,
1008
+ "maximum": 3600,
1009
+ "default": 600
1010
+ },
1011
+ "allow_failure": {
1012
+ "type": "boolean",
1013
+ "default": false
1014
+ },
1015
+ "capture_output": {
1016
+ "type": "string",
1017
+ "enum": [
1018
+ "redacted",
1019
+ "discard"
1020
+ ],
1021
+ "default": "redacted"
1022
+ }
1023
+ },
1024
+ "required": [
1025
+ "argv"
1026
+ ],
1027
+ "additionalProperties": false
1028
+ }
1029
+ },
1030
+ "temporary_files": {
1031
+ "type": "array",
1032
+ "maxItems": 16,
1033
+ "items": {
1034
+ "type": "object",
1035
+ "properties": {
1036
+ "name": {
1037
+ "type": "string",
1038
+ "pattern": "^[a-z][a-z0-9._-]{0,63}$"
1039
+ },
1040
+ "content": {
1041
+ "type": "string",
1042
+ "maxLength": 262144
1043
+ },
1044
+ "executable": {
1045
+ "type": "boolean",
1046
+ "default": false
1047
+ }
1048
+ },
1049
+ "required": [
1050
+ "name",
1051
+ "content"
1052
+ ],
1053
+ "additionalProperties": false
1054
+ }
1055
+ }
1056
+ },
1057
+ "required": [
1058
+ "steps"
1059
+ ],
1060
+ "additionalProperties": false
1061
+ }
1062
+ },
1063
+ {
1064
+ "name": "list_jobs",
1065
+ "title": "List managed jobs",
1066
+ "description": "List recent detached managed jobs and their lifecycle status without returning step output.",
1067
+ "availability": "write",
1068
+ "annotations": {
1069
+ "readOnlyHint": true,
1070
+ "destructiveHint": false,
1071
+ "idempotentHint": true,
1072
+ "openWorldHint": false
1073
+ },
1074
+ "inputSchema": {
1075
+ "type": "object",
1076
+ "properties": {
1077
+ "limit": {
1078
+ "type": "integer",
1079
+ "minimum": 1,
1080
+ "maximum": 50,
1081
+ "default": 20
1082
+ }
1083
+ },
1084
+ "additionalProperties": false
1085
+ }
1086
+ },
1087
+ {
1088
+ "name": "read_job",
1089
+ "title": "Read managed job",
1090
+ "description": "Return one managed job status plus bounded, resource-redacted step results. Registered resource paths and contents are never returned.",
1091
+ "availability": "direct-exec",
1092
+ "annotations": {
1093
+ "readOnlyHint": true,
1094
+ "destructiveHint": false,
1095
+ "idempotentHint": true,
1096
+ "openWorldHint": false
1097
+ },
1098
+ "inputSchema": {
1099
+ "type": "object",
1100
+ "properties": {
1101
+ "job_id": {
1102
+ "type": "string",
1103
+ "pattern": "^job_[A-Za-z0-9_-]{24,}$"
1104
+ }
1105
+ },
1106
+ "required": [
1107
+ "job_id"
1108
+ ],
1109
+ "additionalProperties": false
1110
+ }
1111
+ },
1112
+ {
1113
+ "name": "cancel_job",
1114
+ "title": "Cancel managed job",
1115
+ "description": "Request cancellation of a detached managed job. The runner terminates the active process tree and still attempts declared finally steps and local resource cleanup.",
1116
+ "availability": "write",
1117
+ "annotations": {
1118
+ "readOnlyHint": false,
1119
+ "destructiveHint": true,
1120
+ "idempotentHint": true,
1121
+ "openWorldHint": true
1122
+ },
1123
+ "inputSchema": {
1124
+ "type": "object",
1125
+ "properties": {
1126
+ "job_id": {
1127
+ "type": "string",
1128
+ "pattern": "^job_[A-Za-z0-9_-]{24,}$"
1129
+ }
1130
+ },
1131
+ "required": [
1132
+ "job_id"
1133
+ ],
1134
+ "additionalProperties": false
1135
+ }
1136
+ },
606
1137
  {
607
1138
  "name": "exec_command",
608
1139
  "title": "Execute shell command",
@@ -3,7 +3,7 @@ import toolCatalog from "../shared/tool-catalog.json";
3
3
  import serverMetadata from "../shared/server-metadata.json";
4
4
 
5
5
  const SERVER_NAME = String(serverMetadata.name);
6
- const SERVER_VERSION = "0.5.0";
6
+ const SERVER_VERSION = "0.6.2";
7
7
  const MCP_PROTOCOL_VERSION = String(serverMetadata.protocolVersion);
8
8
  const MCP_SUPPORTED_PROTOCOL_VERSIONS = serverMetadata.supportedProtocolVersions.map((value) => String(value));
9
9
  const JSONRPC_VERSION = "2.0";
@@ -991,6 +991,12 @@ function daemonPolicyAllows(availability: unknown, policy: Record<string, unknow
991
991
  if (availability === "write") return policy.allowWrite === true;
992
992
  if (availability === "direct-exec") return policy.execMode === "direct" || policy.execMode === "shell";
993
993
  if (availability === "shell-exec") return policy.execMode === "shell";
994
+ if (availability === "full") return policy.profile === "full"
995
+ && policy.allowWrite === true
996
+ && policy.execMode === "shell"
997
+ && policy.unrestrictedPaths === true
998
+ && policy.minimalEnv === false
999
+ && policy.exposeAbsolutePaths === true;
994
1000
  return false;
995
1001
  }
996
1002