microsoft-agents-a365-tooling-extensions-semantickernel 0.1.0__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.
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/PKG-INFO +66 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/README.md +33 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/microsoft_agents_a365/tooling/extensions/semantickernel/__init__.py +17 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/microsoft_agents_a365/tooling/extensions/semantickernel/services/__init__.py +14 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/microsoft_agents_a365/tooling/extensions/semantickernel/services/mcp_tool_registration_service.py +228 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/PKG-INFO +66 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/SOURCES.txt +11 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/dependency_links.txt +1 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/requires.txt +14 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/top_level.txt +1 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/pyproject.toml +72 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/setup.cfg +4 -0
- microsoft_agents_a365_tooling_extensions_semantickernel-0.1.0/setup.py +28 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: microsoft-agents-a365-tooling-extensions-semantickernel
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Semantic Kernel integration for Agent 365 Tooling SDK
|
|
5
|
+
Author-email: Microsoft <support@microsoft.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/microsoft/Agent365-python
|
|
8
|
+
Project-URL: Repository, https://github.com/microsoft/Agent365-python
|
|
9
|
+
Project-URL: Issues, https://github.com/microsoft/Agent365-python/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/microsoft/Agent365-python/tree/main/libraries/microsoft-agents-a365-tooling-extensions-semantickernel
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
Requires-Dist: microsoft-agents-a365-tooling>=0.0.0
|
|
22
|
+
Requires-Dist: semantic-kernel>=1.0.0
|
|
23
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
27
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
28
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
29
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
30
|
+
Provides-Extra: test
|
|
31
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
32
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
|
|
33
|
+
|
|
34
|
+
# microsoft-agents-a365-tooling-extensions-semantickernel
|
|
35
|
+
|
|
36
|
+
[](https://pypi.org/project/microsoft-agents-a365-tooling-extensions-semantickernel)
|
|
37
|
+
[](https://pypi.org/project/microsoft-agents-a365-tooling-extensions-semantickernel)
|
|
38
|
+
|
|
39
|
+
Semantic Kernel specific tools and services for AI agent development. Provides MCP (Model Context Protocol) tool registration service for dynamically adding MCP servers to Semantic Kernel-based agents.
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install microsoft-agents-a365-tooling-extensions-semantickernel
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Usage
|
|
48
|
+
|
|
49
|
+
For usage examples and detailed documentation, see the [Tooling documentation](https://learn.microsoft.com/microsoft-agent-365/developer/tooling?tabs=python) on Microsoft Learn.
|
|
50
|
+
|
|
51
|
+
## Support
|
|
52
|
+
|
|
53
|
+
For issues, questions, or feedback:
|
|
54
|
+
|
|
55
|
+
- File issues in the [GitHub Issues](https://github.com/microsoft/Agent365-python/issues) section
|
|
56
|
+
- See the [main documentation](../../../README.md) for more information
|
|
57
|
+
|
|
58
|
+
## Trademarks
|
|
59
|
+
|
|
60
|
+
*Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.*
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
65
|
+
|
|
66
|
+
Licensed under the MIT License - see the [LICENSE](../../../LICENSE.md) file for details.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# microsoft-agents-a365-tooling-extensions-semantickernel
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/microsoft-agents-a365-tooling-extensions-semantickernel)
|
|
4
|
+
[](https://pypi.org/project/microsoft-agents-a365-tooling-extensions-semantickernel)
|
|
5
|
+
|
|
6
|
+
Semantic Kernel specific tools and services for AI agent development. Provides MCP (Model Context Protocol) tool registration service for dynamically adding MCP servers to Semantic Kernel-based agents.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
pip install microsoft-agents-a365-tooling-extensions-semantickernel
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
For usage examples and detailed documentation, see the [Tooling documentation](https://learn.microsoft.com/microsoft-agent-365/developer/tooling?tabs=python) on Microsoft Learn.
|
|
17
|
+
|
|
18
|
+
## Support
|
|
19
|
+
|
|
20
|
+
For issues, questions, or feedback:
|
|
21
|
+
|
|
22
|
+
- File issues in the [GitHub Issues](https://github.com/microsoft/Agent365-python/issues) section
|
|
23
|
+
- See the [main documentation](../../../README.md) for more information
|
|
24
|
+
|
|
25
|
+
## Trademarks
|
|
26
|
+
|
|
27
|
+
*Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.*
|
|
28
|
+
|
|
29
|
+
## License
|
|
30
|
+
|
|
31
|
+
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
32
|
+
|
|
33
|
+
Licensed under the MIT License - see the [LICENSE](../../../LICENSE.md) file for details.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Copyright (c) Microsoft Corporation.
|
|
2
|
+
# Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
Semantic Kernel extensions for Microsoft Agent 365 Tooling SDK
|
|
6
|
+
|
|
7
|
+
Tooling and utilities specifically for Semantic Kernel framework integration.
|
|
8
|
+
Provides Semantic Kernel-specific helper utilities.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from .services import McpToolRegistrationService
|
|
12
|
+
|
|
13
|
+
__version__ = "1.0.0"
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"McpToolRegistrationService",
|
|
17
|
+
]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Copyright (c) Microsoft. All rights reserved.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Services module for Semantic Kernel tooling.
|
|
5
|
+
|
|
6
|
+
This package contains service implementations for MCP tool registration
|
|
7
|
+
and management within the Semantic Kernel framework.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from .mcp_tool_registration_service import McpToolRegistrationService
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"McpToolRegistrationService",
|
|
14
|
+
]
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Copyright (c) Microsoft. All rights reserved.
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
MCP Tool Registration Service implementation for Semantic Kernel.
|
|
5
|
+
|
|
6
|
+
This module provides the concrete implementation of the MCP (Model Context Protocol)
|
|
7
|
+
tool registration service that integrates with Semantic Kernel to add MCP tool
|
|
8
|
+
servers to agents.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
# Standard library imports
|
|
12
|
+
import logging
|
|
13
|
+
import os
|
|
14
|
+
import re
|
|
15
|
+
from typing import Any, Optional
|
|
16
|
+
from semantic_kernel import kernel as sk
|
|
17
|
+
from semantic_kernel.connectors.mcp import MCPStreamableHttpPlugin
|
|
18
|
+
from microsoft_agents.hosting.core import Authorization, TurnContext
|
|
19
|
+
from microsoft_agents_a365.runtime.utility import Utility
|
|
20
|
+
from microsoft_agents_a365.tooling.services.mcp_tool_server_configuration_service import (
|
|
21
|
+
McpToolServerConfigurationService,
|
|
22
|
+
)
|
|
23
|
+
from microsoft_agents_a365.tooling.models.mcp_server_config import MCPServerConfig
|
|
24
|
+
from microsoft_agents_a365.tooling.utils.constants import Constants
|
|
25
|
+
from microsoft_agents_a365.tooling.utils.utility import (
|
|
26
|
+
get_tools_mode,
|
|
27
|
+
get_mcp_platform_authentication_scope,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class McpToolRegistrationService:
|
|
32
|
+
"""
|
|
33
|
+
Provides services related to tools in the Semantic Kernel.
|
|
34
|
+
|
|
35
|
+
This service handles registration and management of MCP (Model Context Protocol)
|
|
36
|
+
tool servers with Semantic Kernel agents.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(
|
|
40
|
+
self,
|
|
41
|
+
logger: Optional[logging.Logger] = None,
|
|
42
|
+
):
|
|
43
|
+
"""
|
|
44
|
+
Initialize the MCP Tool Registration Service for Semantic Kernel.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
logger: Logger instance for logging operations.
|
|
48
|
+
"""
|
|
49
|
+
self._logger = logger or logging.getLogger(self.__class__.__name__)
|
|
50
|
+
self._mcp_server_configuration_service = McpToolServerConfigurationService(
|
|
51
|
+
logger=self._logger
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
# Store connected plugins to keep them alive
|
|
55
|
+
self._connected_plugins = []
|
|
56
|
+
|
|
57
|
+
# Enable debug logging if configured
|
|
58
|
+
if os.getenv("MCP_DEBUG_LOGGING", "false").lower() == "true":
|
|
59
|
+
self._logger.setLevel(logging.DEBUG)
|
|
60
|
+
|
|
61
|
+
# Configure strict parameter validation (prevents dynamic property creation)
|
|
62
|
+
self._strict_parameter_validation = (
|
|
63
|
+
os.getenv("MCP_STRICT_PARAMETER_VALIDATION", "true").lower() == "true"
|
|
64
|
+
)
|
|
65
|
+
if self._strict_parameter_validation:
|
|
66
|
+
self._logger.info(
|
|
67
|
+
"🔒 Strict parameter validation enabled - only schema-defined parameters are allowed"
|
|
68
|
+
)
|
|
69
|
+
else:
|
|
70
|
+
self._logger.info(
|
|
71
|
+
"🔓 Strict parameter validation disabled - dynamic parameters are allowed"
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
# ============================================================================
|
|
75
|
+
# Public Methods
|
|
76
|
+
# ============================================================================
|
|
77
|
+
|
|
78
|
+
async def add_tool_servers_to_agent(
|
|
79
|
+
self,
|
|
80
|
+
kernel: sk.Kernel,
|
|
81
|
+
auth: Authorization,
|
|
82
|
+
auth_handler_name: str,
|
|
83
|
+
context: TurnContext,
|
|
84
|
+
auth_token: Optional[str] = None,
|
|
85
|
+
) -> None:
|
|
86
|
+
"""
|
|
87
|
+
Adds the A365 MCP Tool Servers to the specified kernel.
|
|
88
|
+
|
|
89
|
+
Args:
|
|
90
|
+
kernel: The Semantic Kernel instance to which the tools will be added.
|
|
91
|
+
auth: Authorization handler for token exchange.
|
|
92
|
+
auth_handler_name: Name of the authorization handler.
|
|
93
|
+
context: Turn context for the current operation.
|
|
94
|
+
auth_token: Authentication token to access the MCP servers.
|
|
95
|
+
|
|
96
|
+
Raises:
|
|
97
|
+
ValueError: If kernel is None or required parameters are invalid.
|
|
98
|
+
Exception: If there's an error connecting to or configuring MCP servers.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
if not auth_token:
|
|
102
|
+
scopes = get_mcp_platform_authentication_scope()
|
|
103
|
+
authToken = await auth.exchange_token(context, scopes, auth_handler_name)
|
|
104
|
+
auth_token = authToken.token
|
|
105
|
+
|
|
106
|
+
agentic_app_id = Utility.resolve_agent_identity(context, auth_token)
|
|
107
|
+
self._validate_inputs(kernel, agentic_app_id, auth_token)
|
|
108
|
+
|
|
109
|
+
# Get and process servers
|
|
110
|
+
servers = await self._mcp_server_configuration_service.list_tool_servers(
|
|
111
|
+
agentic_app_id, auth_token
|
|
112
|
+
)
|
|
113
|
+
self._logger.info(f"🔧 Adding MCP tools from {len(servers)} servers")
|
|
114
|
+
|
|
115
|
+
# Get tools mode
|
|
116
|
+
tools_mode = get_tools_mode()
|
|
117
|
+
|
|
118
|
+
# Process each server (matching C# foreach pattern)
|
|
119
|
+
for server in servers:
|
|
120
|
+
try:
|
|
121
|
+
if tools_mode == "HardCodedTools":
|
|
122
|
+
await self._add_hardcoded_tools_for_server(kernel, server)
|
|
123
|
+
continue
|
|
124
|
+
|
|
125
|
+
headers = {}
|
|
126
|
+
|
|
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
|
+
}
|
|
134
|
+
|
|
135
|
+
plugin = MCPStreamableHttpPlugin(
|
|
136
|
+
name=server.mcp_server_name,
|
|
137
|
+
url=server.mcp_server_unique_name,
|
|
138
|
+
headers=headers or None,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
# Connect the plugin
|
|
142
|
+
await plugin.connect()
|
|
143
|
+
|
|
144
|
+
# Add plugin to kernel
|
|
145
|
+
kernel.add_plugin(plugin, server.mcp_server_name)
|
|
146
|
+
|
|
147
|
+
# Store reference to keep plugin alive throughout application lifecycle
|
|
148
|
+
# By storing plugin references in _connected_plugins, we prevent Python's garbage collector from cleaning up the plugin objects
|
|
149
|
+
# The connections remain active throughout the application lifecycle
|
|
150
|
+
# Tools can be successfully invoked because their underlying connections are still alive
|
|
151
|
+
self._connected_plugins.append(plugin)
|
|
152
|
+
|
|
153
|
+
self._logger.info(
|
|
154
|
+
f"✅ Connected and added MCP plugin ({tools_mode}) for: {server.mcp_server_name}"
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
except Exception as e:
|
|
158
|
+
self._logger.error(f"Failed to add tools from {server.mcp_server_name}: {str(e)}")
|
|
159
|
+
|
|
160
|
+
self._logger.info("✅ Successfully configured MCP tool servers for the agent!")
|
|
161
|
+
|
|
162
|
+
# ============================================================================
|
|
163
|
+
# Private Methods - Input Validation & Processing
|
|
164
|
+
# ============================================================================
|
|
165
|
+
|
|
166
|
+
def _validate_inputs(self, kernel: Any, agentic_app_id: str, auth_token: str) -> None:
|
|
167
|
+
"""Validate all required inputs."""
|
|
168
|
+
if kernel is None:
|
|
169
|
+
raise ValueError("kernel cannot be None")
|
|
170
|
+
if not agentic_app_id or not agentic_app_id.strip():
|
|
171
|
+
raise ValueError("agentic_app_id cannot be null or empty")
|
|
172
|
+
if not auth_token or not auth_token.strip():
|
|
173
|
+
raise ValueError("auth_token cannot be null or empty")
|
|
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
|
+
# ============================================================================
|
|
199
|
+
# Private Methods - Kernel Function Creation
|
|
200
|
+
# ============================================================================
|
|
201
|
+
|
|
202
|
+
def _get_plugin_name_from_server_name(self, server_name: str) -> str:
|
|
203
|
+
"""Generate a clean plugin name from server name."""
|
|
204
|
+
clean_name = re.sub(r"[^a-zA-Z0-9_]", "_", server_name)
|
|
205
|
+
return f"{clean_name}Tools"
|
|
206
|
+
|
|
207
|
+
# ============================================================================
|
|
208
|
+
# Cleanup Methods
|
|
209
|
+
# ============================================================================
|
|
210
|
+
|
|
211
|
+
async def cleanup_connections(self) -> None:
|
|
212
|
+
"""Clean up all connected MCP plugins."""
|
|
213
|
+
self._logger.info(f"🧹 Cleaning up {len(self._connected_plugins)} MCP plugin connections")
|
|
214
|
+
|
|
215
|
+
for plugin in self._connected_plugins:
|
|
216
|
+
try:
|
|
217
|
+
if hasattr(plugin, "close"):
|
|
218
|
+
await plugin.close()
|
|
219
|
+
elif hasattr(plugin, "disconnect"):
|
|
220
|
+
await plugin.disconnect()
|
|
221
|
+
self._logger.debug(
|
|
222
|
+
f"✅ Closed connection for plugin: {getattr(plugin, 'name', 'unknown')}"
|
|
223
|
+
)
|
|
224
|
+
except Exception as e:
|
|
225
|
+
self._logger.warning(f"⚠️ Error closing plugin connection: {e}")
|
|
226
|
+
|
|
227
|
+
self._connected_plugins.clear()
|
|
228
|
+
self._logger.info("✅ All MCP plugin connections cleaned up")
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: microsoft-agents-a365-tooling-extensions-semantickernel
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Semantic Kernel integration for Agent 365 Tooling SDK
|
|
5
|
+
Author-email: Microsoft <support@microsoft.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/microsoft/Agent365-python
|
|
8
|
+
Project-URL: Repository, https://github.com/microsoft/Agent365-python
|
|
9
|
+
Project-URL: Issues, https://github.com/microsoft/Agent365-python/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/microsoft/Agent365-python/tree/main/libraries/microsoft-agents-a365-tooling-extensions-semantickernel
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
Requires-Dist: microsoft-agents-a365-tooling>=0.0.0
|
|
22
|
+
Requires-Dist: semantic-kernel>=1.0.0
|
|
23
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
27
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
28
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
29
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
30
|
+
Provides-Extra: test
|
|
31
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
32
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
|
|
33
|
+
|
|
34
|
+
# microsoft-agents-a365-tooling-extensions-semantickernel
|
|
35
|
+
|
|
36
|
+
[](https://pypi.org/project/microsoft-agents-a365-tooling-extensions-semantickernel)
|
|
37
|
+
[](https://pypi.org/project/microsoft-agents-a365-tooling-extensions-semantickernel)
|
|
38
|
+
|
|
39
|
+
Semantic Kernel specific tools and services for AI agent development. Provides MCP (Model Context Protocol) tool registration service for dynamically adding MCP servers to Semantic Kernel-based agents.
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install microsoft-agents-a365-tooling-extensions-semantickernel
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Usage
|
|
48
|
+
|
|
49
|
+
For usage examples and detailed documentation, see the [Tooling documentation](https://learn.microsoft.com/microsoft-agent-365/developer/tooling?tabs=python) on Microsoft Learn.
|
|
50
|
+
|
|
51
|
+
## Support
|
|
52
|
+
|
|
53
|
+
For issues, questions, or feedback:
|
|
54
|
+
|
|
55
|
+
- File issues in the [GitHub Issues](https://github.com/microsoft/Agent365-python/issues) section
|
|
56
|
+
- See the [main documentation](../../../README.md) for more information
|
|
57
|
+
|
|
58
|
+
## Trademarks
|
|
59
|
+
|
|
60
|
+
*Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.*
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
65
|
+
|
|
66
|
+
Licensed under the MIT License - see the [LICENSE](../../../LICENSE.md) file for details.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
setup.py
|
|
4
|
+
microsoft_agents_a365/tooling/extensions/semantickernel/__init__.py
|
|
5
|
+
microsoft_agents_a365/tooling/extensions/semantickernel/services/__init__.py
|
|
6
|
+
microsoft_agents_a365/tooling/extensions/semantickernel/services/mcp_tool_registration_service.py
|
|
7
|
+
microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/PKG-INFO
|
|
8
|
+
microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/SOURCES.txt
|
|
9
|
+
microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/dependency_links.txt
|
|
10
|
+
microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/requires.txt
|
|
11
|
+
microsoft_agents_a365_tooling_extensions_semantickernel.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
microsoft_agents_a365
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel", "tzdata"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "microsoft-agents-a365-tooling-extensions-semantickernel"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
authors = [
|
|
9
|
+
{ name = "Microsoft", email = "support@microsoft.com" },
|
|
10
|
+
]
|
|
11
|
+
description = "Semantic Kernel integration for Agent 365 Tooling SDK"
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
requires-python = ">=3.11"
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
20
|
+
"Operating System :: OS Independent",
|
|
21
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
22
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
23
|
+
]
|
|
24
|
+
license = {text = "MIT"}
|
|
25
|
+
dependencies = [
|
|
26
|
+
"microsoft-agents-a365-tooling >= 0.0.0",
|
|
27
|
+
"semantic-kernel >= 1.0.0",
|
|
28
|
+
"aiohttp >= 3.8.0",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[project.urls]
|
|
32
|
+
Homepage = "https://github.com/microsoft/Agent365-python"
|
|
33
|
+
Repository = "https://github.com/microsoft/Agent365-python"
|
|
34
|
+
Issues = "https://github.com/microsoft/Agent365-python/issues"
|
|
35
|
+
Documentation = "https://github.com/microsoft/Agent365-python/tree/main/libraries/microsoft-agents-a365-tooling-extensions-semantickernel"
|
|
36
|
+
|
|
37
|
+
[project.optional-dependencies]
|
|
38
|
+
dev = [
|
|
39
|
+
"pytest >= 7.0.0",
|
|
40
|
+
"pytest-asyncio >= 0.21.0",
|
|
41
|
+
"ruff >= 0.1.0",
|
|
42
|
+
"black >= 23.0.0",
|
|
43
|
+
"mypy >= 1.0.0",
|
|
44
|
+
]
|
|
45
|
+
test = [
|
|
46
|
+
"pytest >= 7.0.0",
|
|
47
|
+
"pytest-asyncio >= 0.21.0",
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
[tool.setuptools.packages.find]
|
|
51
|
+
where = ["."]
|
|
52
|
+
|
|
53
|
+
[tool.setuptools]
|
|
54
|
+
license-files = ["../../LICENSE"]
|
|
55
|
+
include-package-data = true
|
|
56
|
+
|
|
57
|
+
[tool.setuptools.package-data]
|
|
58
|
+
"*" = ["../../LICENSE"]
|
|
59
|
+
|
|
60
|
+
[tool.black]
|
|
61
|
+
line-length = 100
|
|
62
|
+
target-version = ['py311']
|
|
63
|
+
|
|
64
|
+
[tool.ruff]
|
|
65
|
+
line-length = 100
|
|
66
|
+
target-version = "py311"
|
|
67
|
+
|
|
68
|
+
[tool.mypy]
|
|
69
|
+
python_version = "3.11"
|
|
70
|
+
strict = true
|
|
71
|
+
warn_return_any = true
|
|
72
|
+
warn_unused_configs = true
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Copyright (c) Microsoft Corporation.
|
|
2
|
+
# Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from os import environ
|
|
7
|
+
from setuptools import setup
|
|
8
|
+
|
|
9
|
+
# Get version from environment variable set by CI/CD
|
|
10
|
+
package_version = environ.get("AGENT365_PYTHON_SDK_PACKAGE_VERSION", "0.0.0")
|
|
11
|
+
|
|
12
|
+
# Add versioning helper to path
|
|
13
|
+
helper_path = Path(__file__).parent.parent.parent / "versioning" / "helper"
|
|
14
|
+
sys.path.insert(0, str(helper_path))
|
|
15
|
+
|
|
16
|
+
from setup_utils import get_dynamic_dependencies
|
|
17
|
+
|
|
18
|
+
# Use minimum version strategy:
|
|
19
|
+
# - Internal packages get: >= current_base_version (e.g., >= 0.1.0)
|
|
20
|
+
# - Automatically updates when you build new versions
|
|
21
|
+
# - Consumers can upgrade to any higher version
|
|
22
|
+
setup(
|
|
23
|
+
version=package_version,
|
|
24
|
+
install_requires=get_dynamic_dependencies(
|
|
25
|
+
use_compatible_release=False, # No upper bound
|
|
26
|
+
use_exact_match=False, # Not exact match
|
|
27
|
+
),
|
|
28
|
+
)
|