MCP server and CLI for researching developer tools using Firecrawl, LangGraph, and Ollama
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file advanced_agent-0.1.1.tar.gz.
File metadata
- Download URL: advanced_agent-0.1.1.tar.gz
- Upload date:
- Size: 96.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
067f5cc0cbac361ddb3e451a0bbdbd9ad292e750b7a9a953c62c07bee87d8848
|
|
| MD5 |
cc6e73af0121a374ac127650754bd54d
|
|
| BLAKE2b-256 |
e4ff66a43f880ed43c7210404168ad108b9792ef113f3e2766405420bea2cd96
|
Provenance
The following attestation bundles were made for advanced_agent-0.1.1.tar.gz:
Publisher:
pypi.yml on will-dabeest/developer-tools-research-agent-workflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
advanced_agent-0.1.1.tar.gz -
Subject digest:
067f5cc0cbac361ddb3e451a0bbdbd9ad292e750b7a9a953c62c07bee87d8848 - Sigstore transparency entry: 1355919730
- Sigstore integration time:
-
Permalink:
will-dabeest/developer-tools-research-agent-workflow@caa43e74911986027194bc9dbc60680fe49fae32 -
Branch / Tag:
refs/tags/v.0.1.1 - Owner: https://github.com/will-dabeest
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@caa43e74911986027194bc9dbc60680fe49fae32 -
Trigger Event:
push
-
Statement type:
File details
Details for the file advanced_agent-0.1.1-py3-none-any.whl.
File metadata
- Download URL: advanced_agent-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
128e685040f00219ddd26e0d16f8b31e39f1ce4934c14a2611281c156a83c875
|
|
| MD5 |
df23fd144bc2448efa63a00ad5fca706
|
|
| BLAKE2b-256 |
02694ada031fa34afc2328867b16ce30b3664e6ccbf84fa97ae4ae9d33043c09
|
Provenance
The following attestation bundles were made for advanced_agent-0.1.1-py3-none-any.whl:
Publisher:
pypi.yml on will-dabeest/developer-tools-research-agent-workflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
advanced_agent-0.1.1-py3-none-any.whl -
Subject digest:
128e685040f00219ddd26e0d16f8b31e39f1ce4934c14a2611281c156a83c875 - Sigstore transparency entry: 1355919736
- Sigstore integration time:
-
Permalink:
will-dabeest/developer-tools-research-agent-workflow@caa43e74911986027194bc9dbc60680fe49fae32 -
Branch / Tag:
refs/tags/v.0.1.1 - Owner: https://github.com/will-dabeest
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@caa43e74911986027194bc9dbc60680fe49fae32 -
Trigger Event:
push
-
Statement type: