github analyzed f62d849

lastmile-ai/mcp-agent

github

Build effective agents using Model Context Protocol and simple workflow patterns

maintainer
lastmile-ai
license
Apache-2.0
first seen
2026-05-22
last seen
2026-06-14
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution ×4 in lastmile-ai/mcp-agent
capabilities1 tools
transport stdio · streamable-http · http · sse counts 1 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • my_tool
skills & danger signalsgithub-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit f62d849 · analyzer v17 · 1h ago

skills & prompt files 3

danger signals4

code evidencevv0.0.21 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

filesystem 50

  • fs lastmile-ai-mcp-agent-f62d849/scripts/event_replay.py :10 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/scripts/event_summary.py :6 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/scripts/event_viewer.py :9 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/scripts/gen_llm_benchmarks.py :21 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/scripts/gen_schema.py :18 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/scripts/log_trimmer.py :14 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/scripts/promptify.py :7 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/auth/main.py :54 os.remove(tmp_path)
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/configure/main.py :7 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/deploy/bundle_utils.py :5 - Provide an adapter that works with `shutil.copytree(ignore=...)` to decide
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/deploy/main.py :7 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/deploy/materialize.py :10 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/deploy/validation.py :3 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/deploy/wrangler_wrapper.py :4 import shutil
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/env/main.py :6 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/logger/configure/main.py :3 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/utils.py :4 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/main.py :7 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/build.py :9 import shutil
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/chat.py :9 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/check.py :9 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/config.py :7 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/configure.py :19 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/dev.py :11 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/doctor.py :10 import shutil
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/go.py :11 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/init.py :7 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/install.py :29 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/invoke.py :10 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/keys.py :10 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/logs.py :8 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/serve.py :11 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/server.py :320 from pathlib import Path as _Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/core/utils.py :5 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/main.py :13 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/secrets/processor.py :8 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/secrets/resolver.py :52 with open(config_path, "r", encoding="utf-8") as f:
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/utils/git_utils.py :15 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/utils/importers.py :8 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/utils/ux.py :4 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/config.py :9 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/data/templates/agent_factory.py :2 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/logging/json_serializer.py :6 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/logging/transport.py :14 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/oauth/flow.py :483 webbrowser.open(final_url, new=1, autoraise=True)
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/tracing/file_span_exporter.py :3 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/utils/resource_utils.py :2 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/workflows/deep_orchestrator/memory.py :9 from pathlib import Path
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/workflows/factory.py :865 with open(path, "r", encoding="utf-8") as f:
  • fs lastmile-ai-mcp-agent-f62d849/src/mcp_agent/workflows/llm/llm_selector.py :467 with open(override, "r", encoding="utf-8") as f:

shell / exec 8

  • shell lastmile-ai-mcp-agent-f62d849/scripts/format.py :9 import subprocess
  • shell lastmile-ai-mcp-agent-f62d849/scripts/lint.py :9 import subprocess
  • shell lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/deploy/wrangler_wrapper.py :5 import subprocess
  • shell lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/build.py :10 import subprocess
  • shell lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/config.py :292 import subprocess
  • shell lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/dev.py :9 import subprocess
  • shell lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/install.py :26 import subprocess
  • shell lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/utils/git_utils.py :12 import subprocess

network 26

  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/deploy/materialize.py :12 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/logger/configure/main.py :6 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/cloud/commands/logger/tail/main.py :10 from urllib.parse import urlparse
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/build.py :13 import socket
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/config.py :653 import requests
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/doctor.py :11 import socket
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/go.py :43 import httpx # type: ignore
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/commands/keys.py :123 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/core/api_client.py :6 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/mcp_app/api_client.py :5 from urllib.parse import urlparse
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/secrets/api_client.py :30 httpx.HTTPError: If the API request fails
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/utils/url_parser.py :10 from urllib.parse import urlparse
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/utils/version_check.py :72 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/cli/workflows/api_client.py :37 httpx.HTTPStatusError: If the API returns an error (e.g., 404, 403)
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/config.py :7 from httpx import URL
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/logging/json_serializer.py :11 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/logging/transport.py :16 import aiohttp
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/mcp/client_proxy.py :4 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/oauth/flow.py :7 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/oauth/http/auth.py :1 """httpx.Auth adapter that acquires tokens via TokenManager."""
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/oauth/manager.py :11 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/oauth/metadata.py :7 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/oauth/store/redis.py :5 from urllib.parse import quote
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :10 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/token_verifier.py :9 import httpx
  • net lastmile-ai-mcp-agent-f62d849/src/mcp_agent/telemetry/usage_tracking.py :16 # requests.post("https://telemetry.example.com/usage", json=data, timeout=2)

secrets 2

  • secrets lastmile-ai-mcp-agent-f62d849/src/mcp_agent/mcp/client_proxy.py :53 tok = gateway_token or os.environ.get("MCP_GATEWAY_TOKEN")
  • secrets lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :974 gw_token = os.environ.get("MCP_GATEWAY_TOKEN")

database 1

  • db lastmile-ai-mcp-agent-f62d849/src/mcp_agent/oauth/store/redis.py :21 import redis.asyncio as redis # type: ignore[import-not-found]

tool registrations 8

  • finder_agent lastmile-ai-mcp-agent-f62d849/src/mcp_agent/data/templates/basic_agent.py :38
  • workflows-list lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :1922
  • workflows-runs-list lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :1964
  • workflows-run lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :2020
  • workflows-get_status lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :2048
  • workflows-resume lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :2099
  • workflows-cancel lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :2178
  • workflows-store-credentials lastmile-ai-mcp-agent-f62d849/src/mcp_agent/server/app_server.py :2245

declared dependencies 22

  • aiohttp@>=3.11.13
  • fastapi@>=0.115.6
  • httpx@>=0.28.1
  • jsonref@>=1.1.0
  • mcp@>=1.20.0
  • numpy@>=2.1.3
  • opentelemetry-distro@>=0.50b0
  • opentelemetry-exporter-otlp-proto-http@>=1.29.0
  • opentelemetry-instrumentation-anthropic@>=0.39.3
  • opentelemetry-instrumentation-openai@>=0.39.3
  • prompt-toolkit@>=3.0.50
  • pydantic-settings@>=2.7.0
  • pydantic-yaml@>=1.5.1
  • pydantic@>=2.10.4
  • pyyaml@>=6.0.2
  • rich@>=13.9.4
  • scikit-learn@>=1.6.0
  • typer@>=0.15.3
  • websockets@>=12.0
  • pathspec@>=0.12.1
  • python-dotenv@>=1.0.0
  • watchdog@>=6.0.0