signal_foundry_mcp
by JhaNishant
README.md
# Signal Foundry MCP
Signal Foundry watches competitor pricing pages so product teams can spend less time copying numbers between tabs. Ask a plain language question, let the MCP tools collect the source, and keep useful pricing plans in SQLite for the next question.
## What it does
* Scrapes pricing pages through Firecrawl and saves markdown and HTML.
* Records source details so saved pages can be found by provider, URL, or domain.
* Uses Claude through Vocareum to decide which MCP tool should run and to explain results clearly.
* Extracts supported pricing details into SQLite for fast follow up questions.
* Shows recent plans with `show data`.
## How the pieces work
```text
Question in terminal
↓
Claude client and MCP tool loop
↓
Scraper server → saved page files and metadata
↓
Pricing extractor → SQLite MCP server
↓
Clear comparison answer
```
Think of the system as a small research desk. The scraper gathers the page, the database keeps the useful notes, and Claude turns those notes into an answer.
## Setup
1. Install Python 3.11 or later, Node.js, and `uv`.
2. Copy `.env.example` to `.env`, then add the Vocareum key and Firecrawl key.
The supplied defaults route Claude through Vocareum. Leave them unchanged unless
Udacity provides a different endpoint or model.
3. Install dependencies.
```bash
uv sync --all-groups
```
4. Start the client.
```bash
uv run python starter_client.py
```
The client starts the custom scraper, SQLite, and filesystem MCP servers from `server_config.json`.
## Practical safeguards
Saved pages are reused for 24 hours, so a follow up question does not spend another
Firecrawl credit. The scraper also supports `force: true` when a fresh page is needed.
Short retries help with temporary network errors, while a failed provider does not stop
the remaining sites from finishing. A saved DeepSeek comparison uses matching SQLite rows
first, which keeps repeat questions quick and avoids another scrape.
## Example prompts
```text
scrape these sites: {'cloudrift': 'https://www.cloudrift.ai/inference', 'deepinfra': 'https://deepinfra.com/pricing', 'fireworks': 'https://fireworks.ai/pricing#serverless-pricing', 'groq': 'https://groq.com/pricing'}
Compare cloudrift ai and deepinfra's costs for deepseek v3
show data
```
## Tests
```bash
uv run pytest
```
The test suite checks scraper persistence, cache refreshes, retrieval, MCP retries,
database writes, Claude tool use, terminal data display, and a mocked scrape to answer workflow.
## Limits
Pricing pages change often and providers may use different billing units. Signal Foundry reports only what a saved source supports and keeps the source URL with each scrape. Live runs need valid API keys and may use API credits.
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues