mtpx 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.
- mtpx-0.1.0/PKG-INFO +163 -0
- mtpx-0.1.0/README.md +140 -0
- mtpx-0.1.0/pyproject.toml +37 -0
- mtpx-0.1.0/setup.cfg +4 -0
- mtpx-0.1.0/src/mtp/__init__.py +132 -0
- mtpx-0.1.0/src/mtp/agent.py +1986 -0
- mtpx-0.1.0/src/mtp/config.py +29 -0
- mtpx-0.1.0/src/mtp/events.py +22 -0
- mtpx-0.1.0/src/mtp/exceptions.py +10 -0
- mtpx-0.1.0/src/mtp/mcp.py +306 -0
- mtpx-0.1.0/src/mtp/media.py +268 -0
- mtpx-0.1.0/src/mtp/policy.py +32 -0
- mtpx-0.1.0/src/mtp/prompts.py +7 -0
- mtpx-0.1.0/src/mtp/protocol.py +77 -0
- mtpx-0.1.0/src/mtp/providers/__init__.py +40 -0
- mtpx-0.1.0/src/mtp/providers/anthropic_provider.py +328 -0
- mtpx-0.1.0/src/mtp/providers/cerebras_provider.py +200 -0
- mtpx-0.1.0/src/mtp/providers/cohere_provider.py +334 -0
- mtpx-0.1.0/src/mtp/providers/common.py +375 -0
- mtpx-0.1.0/src/mtp/providers/deepseek_provider.py +224 -0
- mtpx-0.1.0/src/mtp/providers/fireworks_provider.py +247 -0
- mtpx-0.1.0/src/mtp/providers/gemini_provider.py +437 -0
- mtpx-0.1.0/src/mtp/providers/groq_provider.py +336 -0
- mtpx-0.1.0/src/mtp/providers/mistral_provider.py +208 -0
- mtpx-0.1.0/src/mtp/providers/mock.py +6 -0
- mtpx-0.1.0/src/mtp/providers/openai_provider.py +164 -0
- mtpx-0.1.0/src/mtp/providers/openrouter_provider.py +335 -0
- mtpx-0.1.0/src/mtp/providers/sambanova_provider.py +164 -0
- mtpx-0.1.0/src/mtp/providers/simple_planner.py +55 -0
- mtpx-0.1.0/src/mtp/providers/together_provider.py +225 -0
- mtpx-0.1.0/src/mtp/runtime.py +404 -0
- mtpx-0.1.0/src/mtp/schema.py +182 -0
- mtpx-0.1.0/src/mtp/session_store.py +463 -0
- mtpx-0.1.0/src/mtp/simple_agent.py +948 -0
- mtpx-0.1.0/src/mtp/strict.py +90 -0
- mtpx-0.1.0/src/mtp/toolkits/__init__.py +23 -0
- mtpx-0.1.0/src/mtp/toolkits/calculator.py +98 -0
- mtpx-0.1.0/src/mtp/toolkits/common.py +16 -0
- mtpx-0.1.0/src/mtp/toolkits/crawl4ai_toolkit.py +115 -0
- mtpx-0.1.0/src/mtp/toolkits/file_toolkit.py +135 -0
- mtpx-0.1.0/src/mtp/toolkits/local.py +22 -0
- mtpx-0.1.0/src/mtp/toolkits/newspaper4k_toolkit.py +77 -0
- mtpx-0.1.0/src/mtp/toolkits/newspaper_toolkit.py +42 -0
- mtpx-0.1.0/src/mtp/toolkits/python_toolkit.py +130 -0
- mtpx-0.1.0/src/mtp/toolkits/shell_toolkit.py +70 -0
- mtpx-0.1.0/src/mtp/toolkits/website_toolkit.py +69 -0
- mtpx-0.1.0/src/mtp/toolkits/wikipedia_toolkit.py +48 -0
- mtpx-0.1.0/src/mtp/tools.py +159 -0
- mtpx-0.1.0/src/mtp/transport/__init__.py +4 -0
- mtpx-0.1.0/src/mtp/transport/http.py +52 -0
- mtpx-0.1.0/src/mtp/transport/stdio.py +29 -0
- mtpx-0.1.0/src/mtpx.egg-info/PKG-INFO +163 -0
- mtpx-0.1.0/src/mtpx.egg-info/SOURCES.txt +72 -0
- mtpx-0.1.0/src/mtpx.egg-info/dependency_links.txt +1 -0
- mtpx-0.1.0/src/mtpx.egg-info/top_level.txt +1 -0
- mtpx-0.1.0/tests/test_agent.py +236 -0
- mtpx-0.1.0/tests/test_agent_advanced_features.py +243 -0
- mtpx-0.1.0/tests/test_agent_loop.py +81 -0
- mtpx-0.1.0/tests/test_all_providers.py +61 -0
- mtpx-0.1.0/tests/test_config_runtime_policy.py +54 -0
- mtpx-0.1.0/tests/test_docs_consistency.py +91 -0
- mtpx-0.1.0/tests/test_groq_provider.py +121 -0
- mtpx-0.1.0/tests/test_mcp_adapter.py +119 -0
- mtpx-0.1.0/tests/test_openrouter.py +36 -0
- mtpx-0.1.0/tests/test_provider_adapters.py +259 -0
- mtpx-0.1.0/tests/test_provider_aliases.py +36 -0
- mtpx-0.1.0/tests/test_run_features.py +134 -0
- mtpx-0.1.0/tests/test_runtime.py +212 -0
- mtpx-0.1.0/tests/test_schema_policy.py +67 -0
- mtpx-0.1.0/tests/test_session_store.py +73 -0
- mtpx-0.1.0/tests/test_toolkits_local.py +70 -0
- mtpx-0.1.0/tests/test_toolkits_web.py +126 -0
- mtpx-0.1.0/tests/test_transport.py +73 -0
- mtpx-0.1.0/tests/test_usage_metrics.py +89 -0
mtpx-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mtpx
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: MTPX: Model Tool Protocol and agent runtime for Python
|
|
5
|
+
Author: MTPX Contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Godboy/MTP
|
|
8
|
+
Project-URL: Documentation, https://github.com/Godboy/MTP/tree/main/docs
|
|
9
|
+
Project-URL: Repository, https://github.com/Godboy/MTP
|
|
10
|
+
Project-URL: Issues, https://github.com/Godboy/MTP/issues
|
|
11
|
+
Keywords: agent,llm,ai,tool-orchestration,mcp,model-context-protocol,groq,openai
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# MTPX (Model Tool Protocol Extended)
|
|
25
|
+
|
|
26
|
+
MTPX is a protocol-first Python library for agent tool orchestration, built to support:
|
|
27
|
+
- Lazy tool loading by toolkit/category.
|
|
28
|
+
- Dependency-aware batch tool execution.
|
|
29
|
+
- Policy-aware execution based on tool risk.
|
|
30
|
+
- Multi-round model-tool-model loops.
|
|
31
|
+
- Provider adapters (now including Groq).
|
|
32
|
+
- Transport primitives (stdio + HTTP envelope transport).
|
|
33
|
+
- Experimental MCP JSON-RPC adapter over the same runtime core.
|
|
34
|
+
|
|
35
|
+
## Quickstart
|
|
36
|
+
|
|
37
|
+
## Install
|
|
38
|
+
|
|
39
|
+
### From source (this repo)
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
python -m venv .venv
|
|
43
|
+
.venv\Scripts\activate
|
|
44
|
+
pip install -e .
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### From PyPI (target usage)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pip install mtpx
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Provider SDKs and dotenv (install separately)
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install groq
|
|
57
|
+
pip install python-dotenv
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Copy `.env.example` to `.env` and set your key:
|
|
61
|
+
|
|
62
|
+
```env
|
|
63
|
+
GROQ_API_KEY=your_groq_api_key_here
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Create an agent (local toolkits + Groq)
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from mtp import Agent
|
|
70
|
+
from mtp.providers import Groq
|
|
71
|
+
from mtp.toolkits import CalculatorToolkit, FileToolkit, PythonToolkit, ShellToolkit
|
|
72
|
+
|
|
73
|
+
Agent.load_dotenv_if_available()
|
|
74
|
+
|
|
75
|
+
tools = Agent.ToolRegistry()
|
|
76
|
+
tools.register_toolkit_loader("calculator", CalculatorToolkit())
|
|
77
|
+
tools.register_toolkit_loader("file", FileToolkit(base_dir="."))
|
|
78
|
+
tools.register_toolkit_loader("python", PythonToolkit(base_dir="."))
|
|
79
|
+
tools.register_toolkit_loader("shell", ShellToolkit(base_dir="."))
|
|
80
|
+
|
|
81
|
+
provider = Groq(model="llama-3.3-70b-versatile")
|
|
82
|
+
|
|
83
|
+
agent = Agent.MTPAgent(
|
|
84
|
+
provider=provider,
|
|
85
|
+
tools=tools,
|
|
86
|
+
instructions="Use tools when needed and return concise answers.",
|
|
87
|
+
debug_mode=True,
|
|
88
|
+
strict_dependency_mode=True,
|
|
89
|
+
)
|
|
90
|
+
response = agent.run("Calculate 25*4+10 and list files in current directory.", max_rounds=4)
|
|
91
|
+
print(response)
|
|
92
|
+
|
|
93
|
+
# Stream final response tokens:
|
|
94
|
+
agent.print_response("Give me a short summary.", max_rounds=4, stream=True)
|
|
95
|
+
|
|
96
|
+
# Stream structured runtime events (readable terminal logs by default):
|
|
97
|
+
agent.print_response("Give me a short summary.", max_rounds=4, stream=True, stream_events=True)
|
|
98
|
+
# Raw JSON lines:
|
|
99
|
+
agent.print_response("Give me a short summary.", max_rounds=4, stream=True, stream_events=True, event_format="json")
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Persist conversation sessions (JSON database)
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
from mtp import Agent, JsonSessionStore
|
|
106
|
+
from mtp.providers import OpenAI
|
|
107
|
+
|
|
108
|
+
session_store = JsonSessionStore(db_path="tmp/mtp_json_db")
|
|
109
|
+
agent = Agent.MTPAgent(provider=OpenAI(model="gpt-4o"), tools=tools, session_store=session_store)
|
|
110
|
+
|
|
111
|
+
agent.run("Remember this: project codename is Atlas.", session_id="chat-1", user_id="u1")
|
|
112
|
+
agent.run("What is the project codename?", session_id="chat-1", user_id="u1")
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
PostgreSQL and MySQL session stores are also available:
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
from mtp import PostgresSessionStore, MySQLSessionStore
|
|
119
|
+
|
|
120
|
+
pg_store = PostgresSessionStore(db_url="postgresql://user:pass@localhost:5432/mtp")
|
|
121
|
+
my_store = MySQLSessionStore(
|
|
122
|
+
host="localhost",
|
|
123
|
+
user="root",
|
|
124
|
+
password="secret",
|
|
125
|
+
database="mtp",
|
|
126
|
+
port=3306,
|
|
127
|
+
)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Run examples
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
python examples/quickstart.py
|
|
134
|
+
python examples/groq_agent.py
|
|
135
|
+
python examples/mcp_stdio_server.py
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Docs map
|
|
139
|
+
- [Quickstart](docs/QUICKSTART.md)
|
|
140
|
+
- [Agent API Reference](docs/AGENT_API.md)
|
|
141
|
+
- [Storage and Sessions](docs/STORAGE.md)
|
|
142
|
+
- [Providers](docs/PROVIDERS.md)
|
|
143
|
+
- [Creating Tools](docs/CREATING_TOOLS.md)
|
|
144
|
+
- [Events Contract](docs/EVENTS.md)
|
|
145
|
+
- [Architecture](docs/ARCHITECTURE.md)
|
|
146
|
+
- [Protocol Spec](docs/PROTOCOL_SPEC.md)
|
|
147
|
+
- [Local Toolkits](docs/LOCAL_TOOLKITS.md)
|
|
148
|
+
- [Groq Integration](docs/GROQ_INTEGRATION.md)
|
|
149
|
+
- [Transport](docs/TRANSPORT.md)
|
|
150
|
+
- [MCP Interop Adapter](docs/MCP_INTEROP.md)
|
|
151
|
+
- [Publishing](docs/PUBLISHING.md)
|
|
152
|
+
|
|
153
|
+
## Repository structure
|
|
154
|
+
- `src/mtp/protocol.py`: Core protocol entities (`ToolSpec`, `ToolCall`, `ExecutionPlan`, etc.).
|
|
155
|
+
- `src/mtp/schema.py`: Versioned envelope + execution plan validation.
|
|
156
|
+
- `src/mtp/policy.py`: Risk policy (`allow` / `ask` / `deny`).
|
|
157
|
+
- `src/mtp/runtime.py`: Tool registry, lazy loading, caching, batch execution.
|
|
158
|
+
- `src/mtp/agent.py`: Agent loop around provider + runtime.
|
|
159
|
+
- `src/mtp/toolkits/`: Local toolkits (`calculator`, `file`, `python`, `shell`).
|
|
160
|
+
- `src/mtp/transport/`: Envelope transport over stdio and HTTP.
|
|
161
|
+
- `src/mtp/mcp.py`: MCP-compatible JSON-RPC adapter around `ToolRegistry`.
|
|
162
|
+
- `src/mtp/providers/`: Provider adapters (`MockPlannerProvider` + OpenAI/Groq/OpenRouter/Gemini/Anthropic/SambaNova/Cerebras/DeepSeek/Mistral/Cohere/TogetherAI/FireworksAI).
|
|
163
|
+
- `docs/`: documentation and implementation guides.
|
mtpx-0.1.0/README.md
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# MTPX (Model Tool Protocol Extended)
|
|
2
|
+
|
|
3
|
+
MTPX is a protocol-first Python library for agent tool orchestration, built to support:
|
|
4
|
+
- Lazy tool loading by toolkit/category.
|
|
5
|
+
- Dependency-aware batch tool execution.
|
|
6
|
+
- Policy-aware execution based on tool risk.
|
|
7
|
+
- Multi-round model-tool-model loops.
|
|
8
|
+
- Provider adapters (now including Groq).
|
|
9
|
+
- Transport primitives (stdio + HTTP envelope transport).
|
|
10
|
+
- Experimental MCP JSON-RPC adapter over the same runtime core.
|
|
11
|
+
|
|
12
|
+
## Quickstart
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
### From source (this repo)
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
python -m venv .venv
|
|
20
|
+
.venv\Scripts\activate
|
|
21
|
+
pip install -e .
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### From PyPI (target usage)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install mtpx
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Provider SDKs and dotenv (install separately)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pip install groq
|
|
34
|
+
pip install python-dotenv
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Copy `.env.example` to `.env` and set your key:
|
|
38
|
+
|
|
39
|
+
```env
|
|
40
|
+
GROQ_API_KEY=your_groq_api_key_here
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Create an agent (local toolkits + Groq)
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from mtp import Agent
|
|
47
|
+
from mtp.providers import Groq
|
|
48
|
+
from mtp.toolkits import CalculatorToolkit, FileToolkit, PythonToolkit, ShellToolkit
|
|
49
|
+
|
|
50
|
+
Agent.load_dotenv_if_available()
|
|
51
|
+
|
|
52
|
+
tools = Agent.ToolRegistry()
|
|
53
|
+
tools.register_toolkit_loader("calculator", CalculatorToolkit())
|
|
54
|
+
tools.register_toolkit_loader("file", FileToolkit(base_dir="."))
|
|
55
|
+
tools.register_toolkit_loader("python", PythonToolkit(base_dir="."))
|
|
56
|
+
tools.register_toolkit_loader("shell", ShellToolkit(base_dir="."))
|
|
57
|
+
|
|
58
|
+
provider = Groq(model="llama-3.3-70b-versatile")
|
|
59
|
+
|
|
60
|
+
agent = Agent.MTPAgent(
|
|
61
|
+
provider=provider,
|
|
62
|
+
tools=tools,
|
|
63
|
+
instructions="Use tools when needed and return concise answers.",
|
|
64
|
+
debug_mode=True,
|
|
65
|
+
strict_dependency_mode=True,
|
|
66
|
+
)
|
|
67
|
+
response = agent.run("Calculate 25*4+10 and list files in current directory.", max_rounds=4)
|
|
68
|
+
print(response)
|
|
69
|
+
|
|
70
|
+
# Stream final response tokens:
|
|
71
|
+
agent.print_response("Give me a short summary.", max_rounds=4, stream=True)
|
|
72
|
+
|
|
73
|
+
# Stream structured runtime events (readable terminal logs by default):
|
|
74
|
+
agent.print_response("Give me a short summary.", max_rounds=4, stream=True, stream_events=True)
|
|
75
|
+
# Raw JSON lines:
|
|
76
|
+
agent.print_response("Give me a short summary.", max_rounds=4, stream=True, stream_events=True, event_format="json")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Persist conversation sessions (JSON database)
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from mtp import Agent, JsonSessionStore
|
|
83
|
+
from mtp.providers import OpenAI
|
|
84
|
+
|
|
85
|
+
session_store = JsonSessionStore(db_path="tmp/mtp_json_db")
|
|
86
|
+
agent = Agent.MTPAgent(provider=OpenAI(model="gpt-4o"), tools=tools, session_store=session_store)
|
|
87
|
+
|
|
88
|
+
agent.run("Remember this: project codename is Atlas.", session_id="chat-1", user_id="u1")
|
|
89
|
+
agent.run("What is the project codename?", session_id="chat-1", user_id="u1")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
PostgreSQL and MySQL session stores are also available:
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
from mtp import PostgresSessionStore, MySQLSessionStore
|
|
96
|
+
|
|
97
|
+
pg_store = PostgresSessionStore(db_url="postgresql://user:pass@localhost:5432/mtp")
|
|
98
|
+
my_store = MySQLSessionStore(
|
|
99
|
+
host="localhost",
|
|
100
|
+
user="root",
|
|
101
|
+
password="secret",
|
|
102
|
+
database="mtp",
|
|
103
|
+
port=3306,
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Run examples
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
python examples/quickstart.py
|
|
111
|
+
python examples/groq_agent.py
|
|
112
|
+
python examples/mcp_stdio_server.py
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Docs map
|
|
116
|
+
- [Quickstart](docs/QUICKSTART.md)
|
|
117
|
+
- [Agent API Reference](docs/AGENT_API.md)
|
|
118
|
+
- [Storage and Sessions](docs/STORAGE.md)
|
|
119
|
+
- [Providers](docs/PROVIDERS.md)
|
|
120
|
+
- [Creating Tools](docs/CREATING_TOOLS.md)
|
|
121
|
+
- [Events Contract](docs/EVENTS.md)
|
|
122
|
+
- [Architecture](docs/ARCHITECTURE.md)
|
|
123
|
+
- [Protocol Spec](docs/PROTOCOL_SPEC.md)
|
|
124
|
+
- [Local Toolkits](docs/LOCAL_TOOLKITS.md)
|
|
125
|
+
- [Groq Integration](docs/GROQ_INTEGRATION.md)
|
|
126
|
+
- [Transport](docs/TRANSPORT.md)
|
|
127
|
+
- [MCP Interop Adapter](docs/MCP_INTEROP.md)
|
|
128
|
+
- [Publishing](docs/PUBLISHING.md)
|
|
129
|
+
|
|
130
|
+
## Repository structure
|
|
131
|
+
- `src/mtp/protocol.py`: Core protocol entities (`ToolSpec`, `ToolCall`, `ExecutionPlan`, etc.).
|
|
132
|
+
- `src/mtp/schema.py`: Versioned envelope + execution plan validation.
|
|
133
|
+
- `src/mtp/policy.py`: Risk policy (`allow` / `ask` / `deny`).
|
|
134
|
+
- `src/mtp/runtime.py`: Tool registry, lazy loading, caching, batch execution.
|
|
135
|
+
- `src/mtp/agent.py`: Agent loop around provider + runtime.
|
|
136
|
+
- `src/mtp/toolkits/`: Local toolkits (`calculator`, `file`, `python`, `shell`).
|
|
137
|
+
- `src/mtp/transport/`: Envelope transport over stdio and HTTP.
|
|
138
|
+
- `src/mtp/mcp.py`: MCP-compatible JSON-RPC adapter around `ToolRegistry`.
|
|
139
|
+
- `src/mtp/providers/`: Provider adapters (`MockPlannerProvider` + OpenAI/Groq/OpenRouter/Gemini/Anthropic/SambaNova/Cerebras/DeepSeek/Mistral/Cohere/TogetherAI/FireworksAI).
|
|
140
|
+
- `docs/`: documentation and implementation guides.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "mtpx"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "MTPX: Model Tool Protocol and agent runtime for Python"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [{ name = "MTPX Contributors" }]
|
|
13
|
+
keywords = ["agent", "llm", "ai", "tool-orchestration", "mcp", "model-context-protocol", "groq", "openai"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
23
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
24
|
+
]
|
|
25
|
+
dependencies = []
|
|
26
|
+
|
|
27
|
+
[project.urls]
|
|
28
|
+
Homepage = "https://github.com/Godboy/MTP"
|
|
29
|
+
Documentation = "https://github.com/Godboy/MTP/tree/main/docs"
|
|
30
|
+
Repository = "https://github.com/Godboy/MTP"
|
|
31
|
+
Issues = "https://github.com/Godboy/MTP/issues"
|
|
32
|
+
|
|
33
|
+
[tool.setuptools]
|
|
34
|
+
package-dir = { "" = "src" }
|
|
35
|
+
|
|
36
|
+
[tool.setuptools.packages.find]
|
|
37
|
+
where = ["src"]
|
mtpx-0.1.0/setup.cfg
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
from .events import EventStreamContext
|
|
2
|
+
from .config import load_dotenv_if_available
|
|
3
|
+
from .policy import PolicyDecision, RiskPolicy
|
|
4
|
+
from .agent import Agent, AgentAction, ProviderAdapter, RunOutput
|
|
5
|
+
from .session_store import (
|
|
6
|
+
JsonSessionStore,
|
|
7
|
+
MySQLSessionStore,
|
|
8
|
+
PostgresSessionStore,
|
|
9
|
+
SessionRecord,
|
|
10
|
+
SessionRun,
|
|
11
|
+
SessionStore,
|
|
12
|
+
)
|
|
13
|
+
from .exceptions import RetryAgentRun, StopAgentRun
|
|
14
|
+
from .protocol import (
|
|
15
|
+
ExecutionPlan,
|
|
16
|
+
ToolOutput,
|
|
17
|
+
ToolBatch,
|
|
18
|
+
ToolCall,
|
|
19
|
+
ToolResult,
|
|
20
|
+
ToolRiskLevel,
|
|
21
|
+
ToolSpec,
|
|
22
|
+
)
|
|
23
|
+
from .media import Audio, File, Image, Video
|
|
24
|
+
from .runtime import ExecutionCancelledError, ToolRegistry, ToolkitLoader, ToolRetryError, ToolStopError
|
|
25
|
+
from .schema import (
|
|
26
|
+
CURRENT_MTP_VERSION,
|
|
27
|
+
MessageEnvelope,
|
|
28
|
+
ToolArgumentsValidationError,
|
|
29
|
+
validate_execution_plan,
|
|
30
|
+
validate_tool_arguments,
|
|
31
|
+
)
|
|
32
|
+
from .simple_agent import MTPAgent
|
|
33
|
+
from .strict import StrictViolation, validate_strict_dependencies
|
|
34
|
+
from .tools import FunctionToolkit, mtp_tool, tool_spec_from_callable, toolkit_from_functions
|
|
35
|
+
from .toolkits import (
|
|
36
|
+
CalculatorToolkit,
|
|
37
|
+
Crawl4aiToolkit,
|
|
38
|
+
FileToolkit,
|
|
39
|
+
Newspaper4kToolkit,
|
|
40
|
+
NewspaperToolkit,
|
|
41
|
+
PythonToolkit,
|
|
42
|
+
ShellToolkit,
|
|
43
|
+
WebsiteToolkit,
|
|
44
|
+
WikipediaToolkit,
|
|
45
|
+
register_local_toolkits,
|
|
46
|
+
)
|
|
47
|
+
from .transport import HTTPTransportServer, run_stdio_transport
|
|
48
|
+
from .mcp import MCPJsonRpcServer, MCPServerInfo, run_mcp_stdio
|
|
49
|
+
|
|
50
|
+
# Convenience aliases for minimal import style:
|
|
51
|
+
# from mtp import Agent
|
|
52
|
+
# tools = Agent.ToolRegistry()
|
|
53
|
+
# helper = Agent.MTPAgent(...)
|
|
54
|
+
Agent.MTPAgent = MTPAgent
|
|
55
|
+
Agent.ToolRegistry = ToolRegistry
|
|
56
|
+
Agent.ToolkitLoader = ToolkitLoader
|
|
57
|
+
Agent.ToolSpec = ToolSpec
|
|
58
|
+
Agent.ToolRiskLevel = ToolRiskLevel
|
|
59
|
+
Agent.Audio = Audio
|
|
60
|
+
Agent.Image = Image
|
|
61
|
+
Agent.Video = Video
|
|
62
|
+
Agent.File = File
|
|
63
|
+
Agent.mtp_tool = staticmethod(mtp_tool)
|
|
64
|
+
Agent.tool_spec_from_callable = staticmethod(tool_spec_from_callable)
|
|
65
|
+
Agent.FunctionToolkit = FunctionToolkit
|
|
66
|
+
Agent.toolkit_from_functions = staticmethod(toolkit_from_functions)
|
|
67
|
+
Agent.RetryAgentRun = RetryAgentRun
|
|
68
|
+
Agent.StopAgentRun = StopAgentRun
|
|
69
|
+
Agent.register_local_toolkits = staticmethod(register_local_toolkits)
|
|
70
|
+
Agent.load_dotenv_if_available = staticmethod(load_dotenv_if_available)
|
|
71
|
+
|
|
72
|
+
__all__ = [
|
|
73
|
+
"Agent",
|
|
74
|
+
"AgentAction",
|
|
75
|
+
"RunOutput",
|
|
76
|
+
"SessionStore",
|
|
77
|
+
"JsonSessionStore",
|
|
78
|
+
"PostgresSessionStore",
|
|
79
|
+
"MySQLSessionStore",
|
|
80
|
+
"SessionRecord",
|
|
81
|
+
"SessionRun",
|
|
82
|
+
"ExecutionPlan",
|
|
83
|
+
"CURRENT_MTP_VERSION",
|
|
84
|
+
"MTPAgent",
|
|
85
|
+
"EventStreamContext",
|
|
86
|
+
"mtp_tool",
|
|
87
|
+
"tool_spec_from_callable",
|
|
88
|
+
"FunctionToolkit",
|
|
89
|
+
"toolkit_from_functions",
|
|
90
|
+
"MessageEnvelope",
|
|
91
|
+
"ProviderAdapter",
|
|
92
|
+
"PolicyDecision",
|
|
93
|
+
"RiskPolicy",
|
|
94
|
+
"ToolBatch",
|
|
95
|
+
"ToolCall",
|
|
96
|
+
"ToolOutput",
|
|
97
|
+
"ToolRegistry",
|
|
98
|
+
"ExecutionCancelledError",
|
|
99
|
+
"ToolRetryError",
|
|
100
|
+
"ToolStopError",
|
|
101
|
+
"ToolResult",
|
|
102
|
+
"ToolRiskLevel",
|
|
103
|
+
"ToolSpec",
|
|
104
|
+
"Audio",
|
|
105
|
+
"Image",
|
|
106
|
+
"Video",
|
|
107
|
+
"File",
|
|
108
|
+
"ToolkitLoader",
|
|
109
|
+
"CalculatorToolkit",
|
|
110
|
+
"Crawl4aiToolkit",
|
|
111
|
+
"FileToolkit",
|
|
112
|
+
"NewspaperToolkit",
|
|
113
|
+
"Newspaper4kToolkit",
|
|
114
|
+
"PythonToolkit",
|
|
115
|
+
"ShellToolkit",
|
|
116
|
+
"WebsiteToolkit",
|
|
117
|
+
"WikipediaToolkit",
|
|
118
|
+
"register_local_toolkits",
|
|
119
|
+
"HTTPTransportServer",
|
|
120
|
+
"run_stdio_transport",
|
|
121
|
+
"MCPJsonRpcServer",
|
|
122
|
+
"MCPServerInfo",
|
|
123
|
+
"run_mcp_stdio",
|
|
124
|
+
"StrictViolation",
|
|
125
|
+
"validate_strict_dependencies",
|
|
126
|
+
"load_dotenv_if_available",
|
|
127
|
+
"validate_execution_plan",
|
|
128
|
+
"validate_tool_arguments",
|
|
129
|
+
"ToolArgumentsValidationError",
|
|
130
|
+
"RetryAgentRun",
|
|
131
|
+
"StopAgentRun",
|
|
132
|
+
]
|