microsoft-agents-a365-tooling-extensions-semantickernel 0.2.0.dev5__tar.gz → 0.2.1.dev0__tar.gz

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.
Files changed (13) hide show
  1. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/PKG-INFO +3 -1
  2. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/microsoft_agents_a365/tooling/extensions/semantickernel/services/__init__.py +2 -1
  3. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/microsoft_agents_a365/tooling/extensions/semantickernel/services/mcp_tool_registration_service.py +23 -46
  4. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/PKG-INFO +3 -1
  5. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/SOURCES.txt +3 -0
  6. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/top_level.txt +1 -0
  7. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/pyproject.toml +4 -0
  8. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/setup.py +1 -1
  9. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/README.md +0 -0
  10. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/microsoft_agents_a365/tooling/extensions/semantickernel/__init__.py +0 -0
  11. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/dependency_links.txt +0 -0
  12. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/requires.txt +0 -0
  13. {microsoft_agents_a365_tooling_extensions_semantickernel-0.2.0.dev5 → microsoft_agents_a365_tooling_extensions_semantickernel-0.2.1.dev0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agents-a365-tooling-extensions-semantickernel
3
- Version: 0.2.0.dev5
3
+ Version: 0.2.1.dev0
4
4
  Summary: Semantic Kernel integration for Agent 365 Tooling SDK
5
5
  Author-email: Microsoft <support@microsoft.com>
6
6
  License: MIT
@@ -18,6 +18,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
18
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
19
  Requires-Python: >=3.11
20
20
  Description-Content-Type: text/markdown
21
+ License-File: LICENSE
21
22
  Requires-Dist: microsoft-agents-a365-tooling>=0.0.0
22
23
  Requires-Dist: semantic-kernel>=1.0.0
23
24
  Requires-Dist: aiohttp>=3.8.0
@@ -30,6 +31,7 @@ Requires-Dist: mypy>=1.0.0; extra == "dev"
30
31
  Provides-Extra: test
31
32
  Requires-Dist: pytest>=7.0.0; extra == "test"
32
33
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
34
+ Dynamic: license-file
33
35
 
34
36
  # microsoft-agents-a365-tooling-extensions-semantickernel
35
37
 
@@ -1,4 +1,5 @@
1
- # Copyright (c) Microsoft. All rights reserved.
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
2
3
 
3
4
  """
4
5
  Services module for Semantic Kernel tooling.
@@ -1,4 +1,5 @@
1
- # Copyright (c) Microsoft. All rights reserved.
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
2
3
 
3
4
  """
4
5
  MCP Tool Registration Service implementation for Semantic Kernel.
@@ -20,10 +21,9 @@ from microsoft_agents_a365.runtime.utility import Utility
20
21
  from microsoft_agents_a365.tooling.services.mcp_tool_server_configuration_service import (
21
22
  McpToolServerConfigurationService,
22
23
  )
23
- from microsoft_agents_a365.tooling.models.mcp_server_config import MCPServerConfig
24
+ from microsoft_agents_a365.tooling.models import ToolOptions
24
25
  from microsoft_agents_a365.tooling.utils.constants import Constants
25
26
  from microsoft_agents_a365.tooling.utils.utility import (
26
- get_tools_mode,
27
27
  get_mcp_platform_authentication_scope,
28
28
  )
29
29
 
@@ -36,6 +36,8 @@ class McpToolRegistrationService:
36
36
  tool servers with Semantic Kernel agents.
37
37
  """
38
38
 
39
+ _orchestrator_name: str = "SemanticKernel"
40
+
39
41
  def __init__(
40
42
  self,
41
43
  logger: Optional[logging.Logger] = None,
@@ -107,42 +109,40 @@ class McpToolRegistrationService:
107
109
  self._validate_inputs(kernel, agentic_app_id, auth_token)
108
110
 
109
111
  # Get and process servers
112
+ options = ToolOptions(orchestrator_name=self._orchestrator_name)
110
113
  servers = await self._mcp_server_configuration_service.list_tool_servers(
111
- agentic_app_id, auth_token
114
+ agentic_app_id, auth_token, options
112
115
  )
113
116
  self._logger.info(f"🔧 Adding MCP tools from {len(servers)} servers")
114
117
 
115
- # Get tools mode
116
- tools_mode = get_tools_mode()
117
-
118
118
  # Process each server (matching C# foreach pattern)
119
119
  for server in servers:
120
120
  try:
121
- if tools_mode == "HardCodedTools":
122
- await self._add_hardcoded_tools_for_server(kernel, server)
123
- continue
121
+ headers = {
122
+ Constants.Headers.AUTHORIZATION: f"{Constants.Headers.BEARER_PREFIX} {auth_token}",
123
+ }
124
+
125
+ headers[Constants.Headers.USER_AGENT] = Utility.get_user_agent_header(
126
+ self._orchestrator_name
127
+ )
124
128
 
125
- headers = {}
129
+ # Use the URL from server (always populated by the configuration service)
130
+ server_url = server.url
126
131
 
127
- if tools_mode == "MockMCPServer":
128
- if mock_auth_header := os.getenv("MOCK_MCP_AUTHORIZATION"):
129
- headers[Constants.Headers.AUTHORIZATION] = mock_auth_header
130
- else:
131
- headers = {
132
- Constants.Headers.AUTHORIZATION: f"{Constants.Headers.BEARER_PREFIX} {auth_token}",
133
- }
132
+ # Use mcp_server_name if available (not None or empty), otherwise fall back to mcp_server_unique_name
133
+ server_name = server.mcp_server_name or server.mcp_server_unique_name
134
134
 
135
135
  plugin = MCPStreamableHttpPlugin(
136
- name=server.mcp_server_name,
137
- url=server.mcp_server_unique_name,
138
- headers=headers or None,
136
+ name=server_name,
137
+ url=server_url,
138
+ headers=headers,
139
139
  )
140
140
 
141
141
  # Connect the plugin
142
142
  await plugin.connect()
143
143
 
144
144
  # Add plugin to kernel
145
- kernel.add_plugin(plugin, server.mcp_server_name)
145
+ kernel.add_plugin(plugin, server_name)
146
146
 
147
147
  # Store reference to keep plugin alive throughout application lifecycle
148
148
  # By storing plugin references in _connected_plugins, we prevent Python's garbage collector from cleaning up the plugin objects
@@ -151,7 +151,7 @@ class McpToolRegistrationService:
151
151
  self._connected_plugins.append(plugin)
152
152
 
153
153
  self._logger.info(
154
- f"✅ Connected and added MCP plugin ({tools_mode}) for: {server.mcp_server_name}"
154
+ f"✅ Connected and added MCP plugin for: {server.mcp_server_name}"
155
155
  )
156
156
 
157
157
  except Exception as e:
@@ -172,29 +172,6 @@ class McpToolRegistrationService:
172
172
  if not auth_token or not auth_token.strip():
173
173
  raise ValueError("auth_token cannot be null or empty")
174
174
 
175
- async def _add_hardcoded_tools_for_server(self, kernel: Any, server: MCPServerConfig) -> None:
176
- """Add hardcoded tools for a specific server (equivalent to C# hardcoded tool logic)."""
177
- server_name = server.mcp_server_name
178
-
179
- if server_name.lower() == "mcp_mailtools":
180
- # TODO: Implement hardcoded mail tools
181
- # kernel.plugins.add(KernelPluginFactory.create_from_type(HardCodedMailTools, server.mcp_server_name, self._service_provider))
182
- self._logger.info(f"Adding hardcoded mail tools for {server_name}")
183
- elif server_name.lower() == "mcp_sharepointtools":
184
- # TODO: Implement hardcoded SharePoint tools
185
- # kernel.plugins.add(KernelPluginFactory.create_from_type(HardCodedSharePointTools, server.mcp_server_name, self._service_provider))
186
- self._logger.info(f"Adding hardcoded SharePoint tools for {server_name}")
187
- elif server_name.lower() == "onedrivemcpserver":
188
- # TODO: Implement hardcoded OneDrive tools
189
- # kernel.plugins.add(KernelPluginFactory.create_from_type(HardCodedOneDriveTools, server.mcp_server_name, self._service_provider))
190
- self._logger.info(f"Adding hardcoded OneDrive tools for {server_name}")
191
- elif server_name.lower() == "wordmcpserver":
192
- # TODO: Implement hardcoded Word tools
193
- # kernel.plugins.add(KernelPluginFactory.create_from_type(HardCodedWordTools, server.mcp_server_name, self._service_provider))
194
- self._logger.info(f"Adding hardcoded Word tools for {server_name}")
195
- else:
196
- self._logger.warning(f"No hardcoded tools available for server: {server_name}")
197
-
198
175
  # ============================================================================
199
176
  # Private Methods - Kernel Function Creation
200
177
  # ============================================================================
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agents-a365-tooling-extensions-semantickernel
3
- Version: 0.2.0.dev5
3
+ Version: 0.2.1.dev0
4
4
  Summary: Semantic Kernel integration for Agent 365 Tooling SDK
5
5
  Author-email: Microsoft <support@microsoft.com>
6
6
  License: MIT
@@ -18,6 +18,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
18
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
19
  Requires-Python: >=3.11
20
20
  Description-Content-Type: text/markdown
21
+ License-File: LICENSE
21
22
  Requires-Dist: microsoft-agents-a365-tooling>=0.0.0
22
23
  Requires-Dist: semantic-kernel>=1.0.0
23
24
  Requires-Dist: aiohttp>=3.8.0
@@ -30,6 +31,7 @@ Requires-Dist: mypy>=1.0.0; extra == "dev"
30
31
  Provides-Extra: test
31
32
  Requires-Dist: pytest>=7.0.0; extra == "test"
32
33
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
34
+ Dynamic: license-file
33
35
 
34
36
  # microsoft-agents-a365-tooling-extensions-semantickernel
35
37
 
@@ -1,6 +1,9 @@
1
1
  README.md
2
2
  pyproject.toml
3
3
  setup.py
4
+ ../../LICENSE
5
+ docs/../../LICENSE
6
+ microsoft_agents_a365/../../LICENSE
4
7
  microsoft_agents_a365/tooling/extensions/semantickernel/__init__.py
5
8
  microsoft_agents_a365/tooling/extensions/semantickernel/services/__init__.py
6
9
  microsoft_agents_a365/tooling/extensions/semantickernel/services/mcp_tool_registration_service.py
@@ -65,6 +65,10 @@ target-version = ['py311']
65
65
  line-length = 100
66
66
  target-version = "py311"
67
67
 
68
+ [tool.ruff.lint.flake8-copyright]
69
+ notice-rgx = "# Copyright \\(c\\) Microsoft Corporation\\.\\r?\\n# Licensed under the MIT License\\."
70
+ min-file-size = 1
71
+
68
72
  [tool.mypy]
69
73
  python_version = "3.11"
70
74
  strict = true
@@ -13,7 +13,7 @@ package_version = environ.get("AGENT365_PYTHON_SDK_PACKAGE_VERSION", "0.0.0")
13
13
  helper_path = Path(__file__).parent.parent.parent / "versioning" / "helper"
14
14
  sys.path.insert(0, str(helper_path))
15
15
 
16
- from setup_utils import get_dynamic_dependencies
16
+ from setup_utils import get_dynamic_dependencies # noqa: E402
17
17
 
18
18
  # Use minimum version strategy:
19
19
  # - Internal packages get: >= current_base_version (e.g., >= 0.1.0)