refactor: update application name and enhance header display in Streamlit app
This commit is contained in:
@@ -67,7 +67,7 @@ servers_json = config/mcp_config.json
|
|||||||
|
|
||||||
Start the application:
|
Start the application:
|
||||||
```bash
|
```bash
|
||||||
streamlit run src/app.py
|
uv run mcpapp
|
||||||
```
|
```
|
||||||
|
|
||||||
The app will be available at `http://localhost:8501`
|
The app will be available at `http://localhost:8501`
|
||||||
@@ -82,9 +82,6 @@ Key components:
|
|||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
### Running Tests
|
|
||||||
```bash
|
|
||||||
pytest
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Code Formatting
|
### Code Formatting
|
||||||
@@ -94,7 +91,7 @@ ruff check . --fix
|
|||||||
|
|
||||||
### Building
|
### Building
|
||||||
```bash
|
```bash
|
||||||
python -m build
|
uv build
|
||||||
```
|
```
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "streamlit-chat-app"
|
name = "macpapp"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "Streamlit chat app with MCP"
|
description = "Streamlit chat app with MCP"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|||||||
28
src/app.py
28
src/app.py
@@ -85,6 +85,7 @@ def init_session_state():
|
|||||||
base_url=base_url,
|
base_url=base_url,
|
||||||
)
|
)
|
||||||
st.session_state.model_name = model_name
|
st.session_state.model_name = model_name
|
||||||
|
st.session_state.provider_name = provider_name # Store provider name
|
||||||
logger.info("LLMClient initialized successfully.")
|
logger.info("LLMClient initialized successfully.")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -182,9 +183,34 @@ def handle_user_input():
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
"""Main function to run the Streamlit app."""
|
"""Main function to run the Streamlit app."""
|
||||||
st.title("MCP Chat App") # Updated title
|
|
||||||
try:
|
try:
|
||||||
init_session_state()
|
init_session_state()
|
||||||
|
|
||||||
|
# --- Display Enhanced Header ---
|
||||||
|
provider_name = st.session_state.get("provider_name", "Unknown Provider")
|
||||||
|
model_name = st.session_state.get("model_name", "Unknown Model")
|
||||||
|
mcp_manager = st.session_state.client.mcp_manager # Get the manager
|
||||||
|
|
||||||
|
server_count = 0
|
||||||
|
tool_count = 0
|
||||||
|
if mcp_manager and mcp_manager.initialized:
|
||||||
|
server_count = len(mcp_manager.servers)
|
||||||
|
try:
|
||||||
|
# Get tool count (might be slightly slow if many tools/servers)
|
||||||
|
tool_count = len(mcp_manager.list_all_tools())
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Could not retrieve tool count for header: {e}")
|
||||||
|
tool_count = "N/A" # Display N/A if listing fails
|
||||||
|
|
||||||
|
# Display the new header format
|
||||||
|
st.markdown(f"# Say Hi to **{provider_name.capitalize()}**!")
|
||||||
|
st.write(f"MCP Servers: **{server_count}** | Tools: **{tool_count}**")
|
||||||
|
st.write(f"Model: **{model_name}**")
|
||||||
|
st.divider()
|
||||||
|
# -----------------------------
|
||||||
|
|
||||||
|
# Removed the previous caption display
|
||||||
|
|
||||||
display_chat_messages()
|
display_chat_messages()
|
||||||
handle_user_input()
|
handle_user_input()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
76
uv.lock
generated
76
uv.lock
generated
@@ -424,6 +424,44 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 },
|
{ url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "macpapp"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = { editable = "." }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "anthropic" },
|
||||||
|
{ name = "google-genai" },
|
||||||
|
{ name = "openai" },
|
||||||
|
{ name = "python-dotenv" },
|
||||||
|
{ name = "streamlit" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.optional-dependencies]
|
||||||
|
dev = [
|
||||||
|
{ name = "build" },
|
||||||
|
{ name = "pre-commit" },
|
||||||
|
{ name = "pytest" },
|
||||||
|
{ name = "pytest-asyncio" },
|
||||||
|
{ name = "pytest-mock" },
|
||||||
|
{ name = "ruff" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.metadata]
|
||||||
|
requires-dist = [
|
||||||
|
{ name = "anthropic" },
|
||||||
|
{ name = "build", marker = "extra == 'dev'", specifier = ">=1.2.2" },
|
||||||
|
{ name = "google-genai" },
|
||||||
|
{ name = "openai" },
|
||||||
|
{ name = "pre-commit", marker = "extra == 'dev'", specifier = ">=4.0.1" },
|
||||||
|
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.4" },
|
||||||
|
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.25.0" },
|
||||||
|
{ name = "pytest-mock", marker = "extra == 'dev'", specifier = ">=3.14.0" },
|
||||||
|
{ name = "python-dotenv" },
|
||||||
|
{ name = "ruff", marker = "extra == 'dev'" },
|
||||||
|
{ name = "streamlit" },
|
||||||
|
]
|
||||||
|
provides-extras = ["dev"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "markupsafe"
|
name = "markupsafe"
|
||||||
version = "3.0.2"
|
version = "3.0.2"
|
||||||
@@ -1135,44 +1173,6 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/46/9e/e51e34f504940da00145795b9e8be9c129704708b071f672f3626a37d842/streamlit-1.44.0-py3-none-any.whl", hash = "sha256:98510d03e53622bba8f0e9f2fd4f1191b3b55e5c7e55abbbaa0289cb9e21cdea", size = 9812034 },
|
{ url = "https://files.pythonhosted.org/packages/46/9e/e51e34f504940da00145795b9e8be9c129704708b071f672f3626a37d842/streamlit-1.44.0-py3-none-any.whl", hash = "sha256:98510d03e53622bba8f0e9f2fd4f1191b3b55e5c7e55abbbaa0289cb9e21cdea", size = 9812034 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "streamlit-chat-app"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = { editable = "." }
|
|
||||||
dependencies = [
|
|
||||||
{ name = "anthropic" },
|
|
||||||
{ name = "google-genai" },
|
|
||||||
{ name = "openai" },
|
|
||||||
{ name = "python-dotenv" },
|
|
||||||
{ name = "streamlit" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.optional-dependencies]
|
|
||||||
dev = [
|
|
||||||
{ name = "build" },
|
|
||||||
{ name = "pre-commit" },
|
|
||||||
{ name = "pytest" },
|
|
||||||
{ name = "pytest-asyncio" },
|
|
||||||
{ name = "pytest-mock" },
|
|
||||||
{ name = "ruff" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[package.metadata]
|
|
||||||
requires-dist = [
|
|
||||||
{ name = "anthropic" },
|
|
||||||
{ name = "build", marker = "extra == 'dev'", specifier = ">=1.2.2" },
|
|
||||||
{ name = "google-genai" },
|
|
||||||
{ name = "openai" },
|
|
||||||
{ name = "pre-commit", marker = "extra == 'dev'", specifier = ">=4.0.1" },
|
|
||||||
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.4" },
|
|
||||||
{ name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.25.0" },
|
|
||||||
{ name = "pytest-mock", marker = "extra == 'dev'", specifier = ">=3.14.0" },
|
|
||||||
{ name = "python-dotenv" },
|
|
||||||
{ name = "ruff", marker = "extra == 'dev'" },
|
|
||||||
{ name = "streamlit" },
|
|
||||||
]
|
|
||||||
provides-extras = ["dev"]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tenacity"
|
name = "tenacity"
|
||||||
version = "9.0.0"
|
version = "9.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user