Catalog PyPI
PACKAGE EXPLORERView in registry

advanced-agent

PyPI

MCP server and CLI for researching developer tools using Firecrawl, LangGraph, and Ollama

Versions collected1
Direct dependencies6From release 0.1.1
Last observed20 Oct, 19:56 UTC

README

Version 0.1.1 documentation

Advanced Agent

CLI agent and MCP server for researching developer tools using Firecrawl + LangGraph + Ollama.

It takes a user query (for example, vector databases), finds relevant tools, scrapes key pages, runs structured analysis, and prints concise recommendations. It can run as a standalone CLI or be exposed as an MCP tool for use with Claude and other MCP clients.

Requirements

  • Python >=3.11,<3.14
  • uv installed
  • Node.js and npx (used to run the Firecrawl MCP server)
  • Firecrawl API key
  • Ollama running locally

Quick Start

  1. Install dependencies:
uv sync
  1. Create env file:
cp .env.example .env
  1. Set required values in .env:
  • FIRECRAWL_API_KEY (required)
  • OLLAMA_MODEL and OLLAMA_BASE_URL (defaults are usually fine)
  1. Start Ollama and ensure the model exists:
ollama serve
ollama pull qwen2.5:1.5b
  1. Run the app:
uv run .\main.py

Type your query at the prompt. Use exit or quit to stop.

How It Works

  1. Extract likely tool names from search content
  2. Research each tool's official pages
  3. Analyze results into structured fields (pricing, OSS, APIs, integrations)
  4. Generate a short recommendation summary

Run as MCP Server

The workflow is also exposed as an MCP tool (research_dev_tools) via server.py. To use it with Claude Desktop or another MCP client, add this to your MCP client config:

{
  "mcpServers": {
    "dev-tools-researcher": {
      "command": "uv",
      "args": ["run", "research-mcp-server"],
      "env": {
        "FIRECRAWL_API_KEY": "<your-key>"
      }
    }
  }
}

Or run directly:

uv run research-mcp-server

Project Structure

  • main.py — CLI loop and output formatting
  • server.py — MCP server exposing the workflow as a research_dev_tools tool
  • src/workflow.py — LangGraph workflow orchestration
  • src/firecrawl.py — Firecrawl MCP client (search/scrape via npx firecrawl-mcp)
  • src/models.py — Pydantic state/result models
  • src/prompts.py — Prompt templates

Run with Docker (Local)

Build image locally:

docker build -t advanced-agent:local .

Run interactively with env vars:

docker run --rm -it --env-file .env advanced-agent:local

Run Tests

Install dev dependencies and run tests:

uv sync --dev
uv run pytest -q

Publish with GitHub Actions (GHCR)

This repo includes .github/workflows/docker.yml.

  • On pull requests: runs tests, then builds image only (no push)
  • On main/master push: builds and pushes to GHCR
  • On version tag push (for example v1.2.3): publishes semver tags (1.2.3, 1.2, 1)
  • On manual trigger: builds and pushes

Example:

git tag v1.2.3
git push origin v1.2.3

Published image name:

ghcr.io/<owner>/<repo>:latest

After first push, make sure the GHCR package visibility is set as desired (public/private).

Run published image anywhere locally:

docker run --rm -it \
  --env-file .env \
  ghcr.io/<owner>/<repo>:latest

Common Issues

  • FIRECRAWL_API_KEY is required...

    • Add a valid key to .env.
  • npx: command not found or Firecrawl MCP errors

    • Install Node.js (which includes npx). The Firecrawl MCP server is launched automatically via npx firecrawl-mcp.
  • Ollama connection/model errors

    • Start Ollama (ollama serve) and pull the configured model.
  • Python/import warnings in editor

    • Make sure VS Code is using this project's interpreter: advanced-agent/.venv.
  • Container exits or fails on startup

    • Confirm .env includes valid FIRECRAWL_API_KEY and Ollama settings.
    • If using local Ollama from inside Docker, set OLLAMA_BASE_URL to a host-reachable address (for example http://host.docker.internal:11434).

Downloads & popularity

3downloads
1-day window · source-reported counts18 Oct 2026
73.50
2026-07-21: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-07-21–2026-07-212026-07-22: 4 · observed 2026-10-20T20:02:11.4657294Z · period 2026-07-22–2026-07-222026-07-23: 3 · observed 2026-10-20T20:02:11.4657294Z · period 2026-07-23–2026-07-232026-07-27: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-07-27–2026-07-272026-08-01: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-01–2026-08-012026-08-02: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-02–2026-08-022026-08-03: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-03–2026-08-032026-08-06: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-06–2026-08-062026-08-09: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-09–2026-08-092026-08-13: 5 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-13–2026-08-132026-08-14: 4 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-14–2026-08-142026-08-17: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-17–2026-08-172026-08-18: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-18–2026-08-182026-08-20: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-20–2026-08-202026-08-23: 3 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-23–2026-08-232026-08-24: 7 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-24–2026-08-242026-08-28: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-28–2026-08-282026-08-31: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-08-31–2026-08-312026-09-01: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-01–2026-09-012026-09-05: 3 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-05–2026-09-052026-09-07: 3 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-07–2026-09-072026-09-09: 4 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-09–2026-09-092026-09-12: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-12–2026-09-122026-09-15: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-15–2026-09-152026-09-16: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-16–2026-09-162026-09-17: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-17–2026-09-172026-09-19: 4 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-19–2026-09-192026-09-21: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-21–2026-09-212026-09-22: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-22–2026-09-222026-09-23: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-23–2026-09-232026-09-25: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-25–2026-09-252026-09-26: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-26–2026-09-262026-09-27: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-27–2026-09-272026-09-30: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-09-30–2026-09-302026-10-02: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-02–2026-10-022026-10-03: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-03–2026-10-032026-10-05: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-05–2026-10-052026-10-06: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-06–2026-10-062026-10-08: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-08–2026-10-082026-10-09: 4 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-09–2026-10-092026-10-11: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-11–2026-10-112026-10-12: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-12–2026-10-122026-10-13: 4 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-13–2026-10-132026-10-14: 3 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-14–2026-10-142026-10-15: 2 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-15–2026-10-152026-10-16: 1 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-16–2026-10-162026-10-17: 7 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-17–2026-10-172026-10-18: 3 · observed 2026-10-20T20:02:11.4657294Z · period 2026-10-18–2026-10-18
21 Jul18 Oct

pypistats · 48 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-18 – 2026-10-1832026-10-20T20:02:11.4657294Z
2026-10-17 – 2026-10-1772026-10-20T20:02:11.4657294Z
2026-10-16 – 2026-10-1612026-10-20T20:02:11.4657294Z
2026-10-15 – 2026-10-1522026-10-20T20:02:11.4657294Z
2026-10-14 – 2026-10-1432026-10-20T20:02:11.4657294Z
2026-10-13 – 2026-10-1342026-10-20T20:02:11.4657294Z
2026-10-12 – 2026-10-1222026-10-20T20:02:11.4657294Z
2026-10-11 – 2026-10-1122026-10-20T20:02:11.4657294Z
2026-10-09 – 2026-10-0942026-10-20T20:02:11.4657294Z
2026-10-08 – 2026-10-0812026-10-20T20:02:11.4657294Z
2026-10-06 – 2026-10-0612026-10-20T20:02:11.4657294Z
2026-10-05 – 2026-10-0512026-10-20T20:02:11.4657294Z
2026-10-03 – 2026-10-0312026-10-20T20:02:11.4657294Z
2026-10-02 – 2026-10-0212026-10-20T20:02:11.4657294Z
2026-09-30 – 2026-09-3022026-10-20T20:02:11.4657294Z
2026-09-27 – 2026-09-2712026-10-20T20:02:11.4657294Z
2026-09-26 – 2026-09-2622026-10-20T20:02:11.4657294Z
2026-09-25 – 2026-09-2522026-10-20T20:02:11.4657294Z
2026-09-23 – 2026-09-2312026-10-20T20:02:11.4657294Z
2026-09-22 – 2026-09-2222026-10-20T20:02:11.4657294Z
2026-09-21 – 2026-09-2122026-10-20T20:02:11.4657294Z
2026-09-19 – 2026-09-1942026-10-20T20:02:11.4657294Z
2026-09-17 – 2026-09-1712026-10-20T20:02:11.4657294Z
2026-09-16 – 2026-09-1612026-10-20T20:02:11.4657294Z
2026-09-15 – 2026-09-1512026-10-20T20:02:11.4657294Z
2026-09-12 – 2026-09-1222026-10-20T20:02:11.4657294Z
2026-09-09 – 2026-09-0942026-10-20T20:02:11.4657294Z
2026-09-07 – 2026-09-0732026-10-20T20:02:11.4657294Z
2026-09-05 – 2026-09-0532026-10-20T20:02:11.4657294Z
2026-09-01 – 2026-09-0112026-10-20T20:02:11.4657294Z
2026-08-31 – 2026-08-3122026-10-20T20:02:11.4657294Z
2026-08-28 – 2026-08-2812026-10-20T20:02:11.4657294Z
2026-08-24 – 2026-08-2472026-10-20T20:02:11.4657294Z
2026-08-23 – 2026-08-2332026-10-20T20:02:11.4657294Z
2026-08-20 – 2026-08-2012026-10-20T20:02:11.4657294Z
2026-08-18 – 2026-08-1812026-10-20T20:02:11.4657294Z
2026-08-17 – 2026-08-1722026-10-20T20:02:11.4657294Z
2026-08-14 – 2026-08-1442026-10-20T20:02:11.4657294Z
2026-08-13 – 2026-08-1352026-10-20T20:02:11.4657294Z
2026-08-09 – 2026-08-0922026-10-20T20:02:11.4657294Z
2026-08-06 – 2026-08-0622026-10-20T20:02:11.4657294Z
2026-08-03 – 2026-08-0322026-10-20T20:02:11.4657294Z
2026-08-02 – 2026-08-0212026-10-20T20:02:11.4657294Z
2026-08-01 – 2026-08-0122026-10-20T20:02:11.4657294Z
2026-07-27 – 2026-07-2722026-10-20T20:02:11.4657294Z
2026-07-23 – 2026-07-2332026-10-20T20:02:11.4657294Z
2026-07-22 – 2026-07-2242026-10-20T20:02:11.4657294Z
2026-07-21 – 2026-07-2122026-10-20T20:02:11.4657294Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.122 Apr 20266

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:56 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:2284313326ba2861d6339dd88257a33c20f097f38456ea6a82348f9a9233cfa6