praisonaiagents 0.0.66__tar.gz → 0.0.67__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 (49) hide show
  1. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/PKG-INFO +2 -2
  2. praisonaiagents-0.0.67/praisonaiagents/mcp/__init__.py +6 -0
  3. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/mcp/mcp.py +45 -4
  4. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents.egg-info/PKG-INFO +2 -2
  5. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents.egg-info/SOURCES.txt +1 -0
  6. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/pyproject.toml +1 -1
  7. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/__init__.py +0 -0
  8. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/agent/__init__.py +0 -0
  9. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/agent/agent.py +0 -0
  10. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/agent/image_agent.py +0 -0
  11. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/agents/__init__.py +0 -0
  12. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/agents/agents.py +0 -0
  13. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/agents/autoagents.py +0 -0
  14. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/knowledge/__init__.py +0 -0
  15. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/knowledge/chunking.py +0 -0
  16. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/knowledge/knowledge.py +0 -0
  17. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/llm/__init__.py +0 -0
  18. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/llm/llm.py +0 -0
  19. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/main.py +0 -0
  20. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/memory/memory.py +0 -0
  21. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/process/__init__.py +0 -0
  22. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/process/process.py +0 -0
  23. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/task/__init__.py +0 -0
  24. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/task/task.py +0 -0
  25. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/__init__.py +0 -0
  26. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/arxiv_tools.py +0 -0
  27. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/calculator_tools.py +0 -0
  28. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/csv_tools.py +0 -0
  29. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/duckdb_tools.py +0 -0
  30. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/duckduckgo_tools.py +0 -0
  31. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/excel_tools.py +0 -0
  32. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/file_tools.py +0 -0
  33. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/json_tools.py +0 -0
  34. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/newspaper_tools.py +0 -0
  35. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/pandas_tools.py +0 -0
  36. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/python_tools.py +0 -0
  37. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/shell_tools.py +0 -0
  38. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/spider_tools.py +0 -0
  39. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/test.py +0 -0
  40. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/tools.py +0 -0
  41. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/train/data/generatecot.py +0 -0
  42. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/wikipedia_tools.py +0 -0
  43. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/xml_tools.py +0 -0
  44. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/yaml_tools.py +0 -0
  45. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents/tools/yfinance_tools.py +0 -0
  46. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents.egg-info/dependency_links.txt +0 -0
  47. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents.egg-info/requires.txt +0 -0
  48. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/praisonaiagents.egg-info/top_level.txt +0 -0
  49. {praisonaiagents-0.0.66 → praisonaiagents-0.0.67}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: praisonaiagents
3
- Version: 0.0.66
3
+ Version: 0.0.67
4
4
  Summary: Praison AI agents for completing complex tasks with Self Reflection Agents
5
5
  Author: Mervin Praison
6
6
  Requires-Dist: pydantic
@@ -0,0 +1,6 @@
1
+ """
2
+ Model Context Protocol (MCP) integration for PraisonAI Agents.
3
+ """
4
+ from .mcp import MCP
5
+
6
+ __all__ = ["MCP"]
@@ -4,7 +4,9 @@ import queue
4
4
  import time
5
5
  import inspect
6
6
  import shlex
7
- from typing import Dict, Any, List, Optional, Callable, Iterable, Union
7
+ import logging
8
+ import os
9
+ from typing import Any, List, Optional, Callable, Iterable, Union
8
10
  from functools import wraps, partial
9
11
 
10
12
  from mcp import ClientSession, StdioServerParameters
@@ -128,7 +130,7 @@ class MCP:
128
130
  ```
129
131
  """
130
132
 
131
- def __init__(self, command_or_string=None, args=None, *, command=None, **kwargs):
133
+ def __init__(self, command_or_string=None, args=None, *, command=None, timeout=60, debug=False, **kwargs):
132
134
  """
133
135
  Initialize the MCP connection and get tools.
134
136
 
@@ -136,8 +138,11 @@ class MCP:
136
138
  command_or_string: Either:
137
139
  - The command to run the MCP server (e.g., Python path)
138
140
  - A complete command string (e.g., "/path/to/python /path/to/app.py")
141
+ - For NPX: 'npx' command with args for smithery tools
139
142
  args: Arguments to pass to the command (when command_or_string is the command)
140
143
  command: Alternative parameter name for backward compatibility
144
+ timeout: Timeout in seconds for MCP server initialization and tool calls (default: 60)
145
+ debug: Enable debug logging for MCP operations (default: False)
141
146
  **kwargs: Additional parameters for StdioServerParameters
142
147
  """
143
148
  # Handle backward compatibility with named parameter 'command'
@@ -168,9 +173,24 @@ class MCP:
168
173
  # Wait for initialization
169
174
  if not self.runner.initialized.wait(timeout=30):
170
175
  print("Warning: MCP initialization timed out")
176
+
177
+ # Store additional parameters
178
+ self.timeout = timeout
179
+ self.debug = debug
180
+
181
+ if debug:
182
+ logging.getLogger("mcp-wrapper").setLevel(logging.DEBUG)
183
+
184
+ # Automatically detect if this is an NPX command
185
+ self.is_npx = cmd == 'npx' or (isinstance(cmd, str) and os.path.basename(cmd) == 'npx')
171
186
 
172
- # Generate tool functions immediately and store them
173
- self._tools = self._generate_tool_functions()
187
+ # For NPX-based MCP servers, use a different approach
188
+ if self.is_npx:
189
+ self._function_declarations = []
190
+ self._initialize_npx_mcp_tools(cmd, arguments)
191
+ else:
192
+ # Generate tool functions immediately and store them
193
+ self._tools = self._generate_tool_functions()
174
194
 
175
195
  def _generate_tool_functions(self) -> List[Callable]:
176
196
  """
@@ -264,6 +284,27 @@ class MCP:
264
284
 
265
285
  return wrapper
266
286
 
287
+ def _initialize_npx_mcp_tools(self, cmd, arguments):
288
+ """Initialize the NPX MCP tools by extracting tool definitions."""
289
+ try:
290
+ # For NPX tools, we'll use the same approach as regular MCP tools
291
+ # but we need to handle the initialization differently
292
+ if self.debug:
293
+ logging.debug(f"Initializing NPX MCP tools with command: {cmd} {' '.join(arguments)}")
294
+
295
+ # Generate tool functions using the regular MCP approach
296
+ self._tools = self._generate_tool_functions()
297
+
298
+ if self.debug:
299
+ logging.debug(f"Generated {len(self._tools)} NPX MCP tools")
300
+
301
+ except Exception as e:
302
+ if self.debug:
303
+ logging.error(f"Failed to initialize NPX MCP tools: {e}")
304
+ raise RuntimeError(f"Failed to initialize NPX MCP tools: {e}")
305
+
306
+
307
+
267
308
  def __iter__(self) -> Iterable[Callable]:
268
309
  """
269
310
  Allow the MCP instance to be used directly as an iterable of tools.
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: praisonaiagents
3
- Version: 0.0.66
3
+ Version: 0.0.67
4
4
  Summary: Praison AI agents for completing complex tasks with Self Reflection Agents
5
5
  Author: Mervin Praison
6
6
  Requires-Dist: pydantic
@@ -17,6 +17,7 @@ praisonaiagents/knowledge/chunking.py
17
17
  praisonaiagents/knowledge/knowledge.py
18
18
  praisonaiagents/llm/__init__.py
19
19
  praisonaiagents/llm/llm.py
20
+ praisonaiagents/mcp/__init__.py
20
21
  praisonaiagents/mcp/mcp.py
21
22
  praisonaiagents/memory/memory.py
22
23
  praisonaiagents/process/__init__.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "praisonaiagents"
7
- version = "0.0.66"
7
+ version = "0.0.67"
8
8
  description = "Praison AI agents for completing complex tasks with Self Reflection Agents"
9
9
  authors = [
10
10
  { name="Mervin Praison" }