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 uvinstalled- Node.js and
npx(used to run the Firecrawl MCP server) - Firecrawl API key
- Ollama running locally
Quick Start
- Install dependencies:
uv sync
- Create env file:
cp .env.example .env
- Set required values in
.env:
FIRECRAWL_API_KEY(required)OLLAMA_MODELandOLLAMA_BASE_URL(defaults are usually fine)
- Start Ollama and ensure the model exists:
ollama serve
ollama pull qwen2.5:1.5b
- Run the app:
uv run .\main.py
Type your query at the prompt. Use exit or quit to stop.
How It Works
- Extract likely tool names from search content
- Research each tool's official pages
- Analyze results into structured fields (pricing, OSS, APIs, integrations)
- 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 formattingserver.py— MCP server exposing the workflow as aresearch_dev_toolstoolsrc/workflow.py— LangGraph workflow orchestrationsrc/firecrawl.py— Firecrawl MCP client (search/scrape vianpx firecrawl-mcp)src/models.py— Pydantic state/result modelssrc/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/masterpush: 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.
- Add a valid key to
-
npx: command not foundor Firecrawl MCP errors- Install Node.js (which includes
npx). The Firecrawl MCP server is launched automatically vianpx firecrawl-mcp.
- Install Node.js (which includes
-
Ollama connection/model errors
- Start Ollama (
ollama serve) and pull the configured model.
- Start Ollama (
-
Python/import warnings in editor
- Make sure VS Code is using this project's interpreter:
advanced-agent/.venv.
- Make sure VS Code is using this project's interpreter:
-
Container exits or fails on startup
- Confirm
.envincludes validFIRECRAWL_API_KEYand Ollama settings. - If using local Ollama from inside Docker, set
OLLAMA_BASE_URLto a host-reachable address (for examplehttp://host.docker.internal:11434).
- Confirm
Release files for advanced-agent 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| advanced_agent-0.1.1.tar.gz | 96.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| advanced_agent-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 106.9 kB
Release files / advanced_agent-0.1.1.tar.gz
| Download URL | advanced_agent-0.1.1.tar.gz |
|---|---|
| Size | 96.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
067f5cc0cbac361ddb3e451a0bbdbd9ad292e750b7a9a953c62c07bee87d8848
|
|
BLAKE2b-256 checksum How to use checksums |
e4ff66a43f880ed43c7210404168ad108b9792ef113f3e2766405420bea2cd96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.
Transparency logRelease files / advanced_agent-0.1.1-py3-none-any.whl
| Download URL | advanced_agent-0.1.1-py3-none-any.whl |
|---|---|
| Size | 10.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
128e685040f00219ddd26e0d16f8b31e39f1ce4934c14a2611281c156a83c875
|
|
BLAKE2b-256 checksum How to use checksums |
02694ada031fa34afc2328867b16ce30b3664e6ccbf84fa97ae4ae9d33043c09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.
Transparency log