diff --git a/backend/app/extensions/runtime.py b/backend/app/extensions/runtime.py index a6f0730..6a5e918 100644 --- a/backend/app/extensions/runtime.py +++ b/backend/app/extensions/runtime.py @@ -633,6 +633,7 @@ class PluginRuntime: "command_id": _spec.command_id, "arguments": arguments, "context": context, + "settings": settings, "secrets": secret_values, } }, diff --git a/backend/extensions/fixtures/mcp-echo/server.py b/backend/extensions/fixtures/mcp-echo/server.py index ba61194..f9d480f 100644 --- a/backend/extensions/fixtures/mcp-echo/server.py +++ b/backend/extensions/fixtures/mcp-echo/server.py @@ -71,8 +71,10 @@ def call_tool(request_id: int, params: dict[str, Any]) -> None: envelope = arguments.get("_notesagent") or {} command_arguments = envelope.get("arguments") or {} context = envelope.get("context") or {} + settings = envelope.get("settings") or {} secrets = envelope.get("secrets") or {} message = command_arguments.get("message") or context.get("selection") or "" + message = f"{settings.get('message_prefix', '')}{message}" respond( request_id, { diff --git a/backend/extensions/fixtures/mcp-echo/settings.yaml b/backend/extensions/fixtures/mcp-echo/settings.yaml index dfc3aa9..3ddb40e 100644 --- a/backend/extensions/fixtures/mcp-echo/settings.yaml +++ b/backend/extensions/fixtures/mcp-echo/settings.yaml @@ -1,6 +1,10 @@ section_id: mcp-fixture.general schema_version: 1 fields: + - key: message_prefix + label: Message Prefix + type: string + default: "" - key: api_key label: Fixture API Key type: secret diff --git a/backend/tests/test_extension_core.py b/backend/tests/test_extension_core.py index 25539b8..b96f648 100644 --- a/backend/tests/test_extension_core.py +++ b/backend/tests/test_extension_core.py @@ -415,6 +415,9 @@ def test_mcp_command_target_receives_scoped_context_and_declared_secret( mcp_container.plugins.put_setting_secret( "mcp-fixture", "api_key", "mcp-command-secret" ) + mcp_container.plugins.update_settings( + "mcp-fixture", 1, {"message_prefix": "Fixture: "} + ) result = await mcp_container.plugins.execute_command( "mcp-fixture.notify", {}, @@ -427,7 +430,7 @@ def test_mcp_command_target_receives_scoped_context_and_declared_secret( assert result.effect.type == "notification" assert result.effect.payload == { "level": "success", - "message": "来自选区", + "message": "Fixture: 来自选区", "secret_configured": True, } assert "mcp-command-secret" not in repr(