mirror of
https://github.com/msoedov/agentic_security.git
synced 2026-07-07 12:17:48 +02:00
chore: delete Agno dead code (Phase 1)
Closes #307 Agno was imported by nothing, had undefined-variable bugs, and was not a declared dependency. Removed: - agentic_security/agents/ (operator_agno.py) - docs/mcp_agno_integration.md - .gitignore reference to operator_agno.py No agno references remain in source code. Pre-existing test failures (missing tabulate module) confirmed unrelated to this change via git stash verification.
This commit is contained in:
+3
-1
@@ -19,9 +19,11 @@ docx/
|
|||||||
agentic_security.toml
|
agentic_security.toml
|
||||||
/venv
|
/venv
|
||||||
*.csv
|
*.csv
|
||||||
agentic_security/agents/operator_agno.py
|
|
||||||
.claude/
|
.claude/
|
||||||
plan.md
|
plan.md
|
||||||
auto_loop.sh
|
auto_loop.sh
|
||||||
agentic_security/static/elm-stuff/
|
agentic_security/static/elm-stuff/
|
||||||
agentic_security/static/node_modules/
|
agentic_security/static/node_modules/
|
||||||
|
.cache/
|
||||||
|
COMMIT_MSG.txt
|
||||||
|
|||||||
@@ -1,156 +0,0 @@
|
|||||||
# MCP + Agno Integration
|
|
||||||
|
|
||||||
This guide shows how to use Agentic Security's MCP server with [Agno](https://docs.agno.com/tools/mcp) agents.
|
|
||||||
|
|
||||||
## Setup
|
|
||||||
|
|
||||||
Install Agentic Security with optional Agno support:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install agno
|
|
||||||
```
|
|
||||||
|
|
||||||
## Starting the MCP Server
|
|
||||||
|
|
||||||
Start the Agentic Security MCP server:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python -m agentic_security.mcp.main
|
|
||||||
```
|
|
||||||
|
|
||||||
For production, use the stdio transport (default with FastMCP):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python agentic_security/mcp/main.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## Examples
|
|
||||||
|
|
||||||
### Basic Verification with Agno
|
|
||||||
|
|
||||||
```python
|
|
||||||
import asyncio
|
|
||||||
|
|
||||||
from agno.agent import Agent
|
|
||||||
from agno.tools.mcp import MCPTools
|
|
||||||
|
|
||||||
from agentic_security.mcp.main import mcp
|
|
||||||
|
|
||||||
|
|
||||||
async def verify_llm_spec():
|
|
||||||
# Connect to Agentic Security's MCP server via stdio
|
|
||||||
mcp_tools = MCPTools(
|
|
||||||
command="python",
|
|
||||||
args=["agentic_security/mcp/main.py"],
|
|
||||||
)
|
|
||||||
await mcp_tools.connect()
|
|
||||||
|
|
||||||
try:
|
|
||||||
agent = Agent(
|
|
||||||
tools=[mcp_tools],
|
|
||||||
instructions=[
|
|
||||||
"You are a security testing assistant.",
|
|
||||||
"Use verify_llm to test LLM specifications for vulnerabilities.",
|
|
||||||
"Present results clearly with risk levels.",
|
|
||||||
],
|
|
||||||
markdown=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
await agent.aprint_response(
|
|
||||||
"Verify this LLM spec: openai/gpt-4",
|
|
||||||
stream=True,
|
|
||||||
)
|
|
||||||
finally:
|
|
||||||
await mcp_tools.close()
|
|
||||||
|
|
||||||
|
|
||||||
asyncio.run(verify_llm_spec())
|
|
||||||
```
|
|
||||||
|
|
||||||
### Running a Security Scan
|
|
||||||
|
|
||||||
```python
|
|
||||||
import asyncio
|
|
||||||
|
|
||||||
from agno.agent import Agent
|
|
||||||
from agno.tools.mcp import MCPTools
|
|
||||||
|
|
||||||
|
|
||||||
async def run_security_scan():
|
|
||||||
mcp_tools = MCPTools(
|
|
||||||
command="python",
|
|
||||||
args=["agentic_security/mcp/main.py"],
|
|
||||||
)
|
|
||||||
await mcp_tools.connect()
|
|
||||||
|
|
||||||
try:
|
|
||||||
agent = Agent(
|
|
||||||
tools=[mcp_tools],
|
|
||||||
instructions=[
|
|
||||||
"You are an LLM security scanning assistant.",
|
|
||||||
"Use start_scan to initiate security scans on LLM endpoints.",
|
|
||||||
"Use get_data_config to check available scan configurations.",
|
|
||||||
"Report findings with severity levels.",
|
|
||||||
],
|
|
||||||
markdown=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
await agent.aprint_response(
|
|
||||||
"Run a security scan on openai/gpt-4 with max budget 100",
|
|
||||||
stream=True,
|
|
||||||
)
|
|
||||||
finally:
|
|
||||||
await mcp_tools.close()
|
|
||||||
|
|
||||||
|
|
||||||
asyncio.run(run_security_scan())
|
|
||||||
```
|
|
||||||
|
|
||||||
### Streamable HTTP Transport
|
|
||||||
|
|
||||||
```python
|
|
||||||
import asyncio
|
|
||||||
|
|
||||||
from agno.agent import Agent
|
|
||||||
from agno.tools.mcp import MCPTools
|
|
||||||
|
|
||||||
|
|
||||||
async def run_http_transport():
|
|
||||||
mcp_tools = MCPTools(
|
|
||||||
transport="streamable-http",
|
|
||||||
url="http://0.0.0.0:8718/mcp",
|
|
||||||
)
|
|
||||||
await mcp_tools.connect()
|
|
||||||
|
|
||||||
try:
|
|
||||||
agent = Agent(
|
|
||||||
tools=[mcp_tools],
|
|
||||||
markdown=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
await agent.aprint_response(
|
|
||||||
"List available security scan templates",
|
|
||||||
stream=True,
|
|
||||||
)
|
|
||||||
finally:
|
|
||||||
await mcp_tools.close()
|
|
||||||
|
|
||||||
|
|
||||||
asyncio.run(run_http_transport())
|
|
||||||
```
|
|
||||||
|
|
||||||
## Available Tools
|
|
||||||
|
|
||||||
| Tool | Description |
|
|
||||||
|---|---|
|
|
||||||
| `verify_llm` | Verify an LLM model specification |
|
|
||||||
| `start_scan` | Start an LLM security scan |
|
|
||||||
| `stop_scan` | Stop an ongoing scan |
|
|
||||||
| `get_data_config` | Retrieve data configuration |
|
|
||||||
| `get_spec_templates` | Retrieve LLM specification templates |
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- The stdio transport is recommended for local development
|
|
||||||
- For production deployments, use the streamable-http transport
|
|
||||||
- Always call `mcp_tools.close()` to clean up connections
|
|
||||||
Reference in New Issue
Block a user