casual-mcp 0.3.0__tar.gz → 0.3.1__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.
- {casual_mcp-0.3.0/src/casual_mcp.egg-info → casual_mcp-0.3.1}/PKG-INFO +2 -2
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/pyproject.toml +4 -4
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/cli.py +19 -3
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/mcp_tool_chat.py +1 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1/src/casual_mcp.egg-info}/PKG-INFO +2 -2
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp.egg-info/requires.txt +1 -1
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/LICENSE +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/README.md +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/setup.cfg +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/__init__.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/logging.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/main.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/models/__init__.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/models/config.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/models/generation_error.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/models/mcp_server_config.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/models/messages.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/models/model_config.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/models/tool_call.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/providers/__init__.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/providers/abstract_provider.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/providers/ollama_provider.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/providers/openai_provider.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/providers/provider_factory.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp/utils.py +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp.egg-info/SOURCES.txt +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp.egg-info/dependency_links.txt +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp.egg-info/entry_points.txt +0 -0
- {casual_mcp-0.3.0 → casual_mcp-0.3.1}/src/casual_mcp.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: casual-mcp
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Multi-server MCP client for LLM tool orchestration
|
|
5
5
|
Author: Alex Stansfield
|
|
6
6
|
License: MIT
|
|
@@ -12,7 +12,7 @@ Description-Content-Type: text/markdown
|
|
|
12
12
|
License-File: LICENSE
|
|
13
13
|
Requires-Dist: dateparser>=1.2.1
|
|
14
14
|
Requires-Dist: fastapi>=0.115.12
|
|
15
|
-
Requires-Dist: fastmcp>=2.5.
|
|
15
|
+
Requires-Dist: fastmcp>=2.5.2
|
|
16
16
|
Requires-Dist: jinja2>=3.1.6
|
|
17
17
|
Requires-Dist: ollama>=0.4.8
|
|
18
18
|
Requires-Dist: openai>=1.78.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "casual-mcp"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.1"
|
|
4
4
|
description = "Multi-server MCP client for LLM tool orchestration"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -9,7 +9,7 @@ authors = [{ name = "Alex Stansfield" }]
|
|
|
9
9
|
dependencies = [
|
|
10
10
|
"dateparser>=1.2.1",
|
|
11
11
|
"fastapi>=0.115.12",
|
|
12
|
-
"fastmcp>=2.5.
|
|
12
|
+
"fastmcp>=2.5.2",
|
|
13
13
|
"jinja2>=3.1.6",
|
|
14
14
|
"ollama>=0.4.8",
|
|
15
15
|
"openai>=1.78.0",
|
|
@@ -65,10 +65,10 @@ dev = [
|
|
|
65
65
|
]
|
|
66
66
|
|
|
67
67
|
[tool.bumpversion]
|
|
68
|
-
current_version = "0.3.
|
|
68
|
+
current_version = "0.3.1"
|
|
69
69
|
commit = true
|
|
70
70
|
tag = true
|
|
71
71
|
|
|
72
72
|
[tool.bumpversion.file."pyproject.toml"]
|
|
73
73
|
search = 'version = "{current_version}"'
|
|
74
|
-
replace = 'version = "{new_version}"'
|
|
74
|
+
replace = 'version = "{new_version}"'
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
import typer
|
|
2
3
|
import uvicorn
|
|
3
4
|
from rich.console import Console
|
|
4
5
|
from rich.table import Table
|
|
5
6
|
|
|
6
7
|
from casual_mcp.models.mcp_server_config import RemoteServerConfig
|
|
7
|
-
from casual_mcp.utils import load_config
|
|
8
|
+
from casual_mcp.utils import load_config, load_mcp_client
|
|
8
9
|
|
|
9
10
|
app = typer.Typer()
|
|
10
11
|
console = Console()
|
|
@@ -31,7 +32,7 @@ def servers():
|
|
|
31
32
|
table = Table("Name", "Type", "Command / Url", "Env")
|
|
32
33
|
|
|
33
34
|
for name, server in config.servers.items():
|
|
34
|
-
type = '
|
|
35
|
+
type = 'stdio'
|
|
35
36
|
if isinstance(server, RemoteServerConfig):
|
|
36
37
|
type = 'remote'
|
|
37
38
|
|
|
@@ -39,7 +40,7 @@ def servers():
|
|
|
39
40
|
if isinstance(server, RemoteServerConfig):
|
|
40
41
|
path = server.url
|
|
41
42
|
else:
|
|
42
|
-
path = f"{server.command} {
|
|
43
|
+
path = f"{server.command} {' '.join(server.args)}"
|
|
43
44
|
env = ''
|
|
44
45
|
|
|
45
46
|
table.add_row(name, type, path, env)
|
|
@@ -63,6 +64,21 @@ def models():
|
|
|
63
64
|
|
|
64
65
|
console.print(table)
|
|
65
66
|
|
|
67
|
+
@app.command()
|
|
68
|
+
def tools():
|
|
69
|
+
config = load_config('casual_mcp_config.json')
|
|
70
|
+
mcp_client = load_mcp_client(config)
|
|
71
|
+
table = Table("Name", "Description")
|
|
72
|
+
# async with mcp_client:
|
|
73
|
+
tools = asyncio.run(get_tools(mcp_client))
|
|
74
|
+
for tool in tools:
|
|
75
|
+
table.add_row(tool.name, tool.description)
|
|
76
|
+
console.print(table)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
async def get_tools(client):
|
|
80
|
+
async with client:
|
|
81
|
+
return await client.list_tools()
|
|
66
82
|
|
|
67
83
|
if __name__ == "__main__":
|
|
68
84
|
app()
|
|
@@ -84,6 +84,7 @@ class McpToolChat:
|
|
|
84
84
|
has_system_message = any(message.role == 'system' for message in messages)
|
|
85
85
|
if self.system and not has_system_message:
|
|
86
86
|
# Insert the system message at the start of the messages
|
|
87
|
+
logger.debug(f"Adding System Message")
|
|
87
88
|
messages.insert(0, SystemMessage(content=self.system))
|
|
88
89
|
|
|
89
90
|
logger.info("Start Chat")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: casual-mcp
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Multi-server MCP client for LLM tool orchestration
|
|
5
5
|
Author: Alex Stansfield
|
|
6
6
|
License: MIT
|
|
@@ -12,7 +12,7 @@ Description-Content-Type: text/markdown
|
|
|
12
12
|
License-File: LICENSE
|
|
13
13
|
Requires-Dist: dateparser>=1.2.1
|
|
14
14
|
Requires-Dist: fastapi>=0.115.12
|
|
15
|
-
Requires-Dist: fastmcp>=2.5.
|
|
15
|
+
Requires-Dist: fastmcp>=2.5.2
|
|
16
16
|
Requires-Dist: jinja2>=3.1.6
|
|
17
17
|
Requires-Dist: ollama>=0.4.8
|
|
18
18
|
Requires-Dist: openai>=1.78.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|