mcpbeat Sign in

Archive MCP Server

by lunenburgbudgetproject Your server? Claim it
answering

Archive is answering right now. Last checked 15 min ago. It exposes 8 tools. Last commit 18 Sep 2026.

The Lunenburg, Massachusetts town and school budget, every figure traced to its source document.

Uptime history 12 days of history
12 days agonow
100.0%
Uptime 24h
91 of 91 checks
8
Tools
read from the server
342 ms
Response time
average over 24h
0
Stars
last commit 18 Sep 2026

What the code does

We read the source, 19 h ago · tools taken from the live server · rules 3dff92dd89df

Capabilities

What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.

Builds a file path from a variable model/business.py:23, model/taxbase.py:197
    with open(os.path.join(DATA, name)) as fh:

Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.

This code can reach further than it looks

We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 15 min ago.

run in your terminal
claude mcp add archive --transport http https://lunenburgbudgetproject.org/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "archive": {
      "url": "https://lunenburgbudgetproject.org/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.archive]
url = "https://lunenburgbudgetproject.org/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "archive": {
      "url": "https://lunenburgbudgetproject.org/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "archive": {
      "url": "https://lunenburgbudgetproject.org/mcp"
    }
  }
}

Available tools 8

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

budget
budget_history
What a school budget line was in each year, AT ONE STAGE. The stage argument is required and singular on purpose: `proposed`, `settled` and `actual` are three different documents about the same year, and a growth rate measured from an actual to a budget is partly growth and partly the step between them. That mistake put a special education escalator 1.5 points too high here and was invisible until somebody asked how the number was derived. Note also that a budget line is NET — what the town must raise after grants, fees and state aid — so a line can rise because a grant ended rather than because anything cost more.
datasets
list_datasets
Every dataset in the archive, with THE YEARS EACH COVERS, its row count and its size. Call this before answering from prose: it is how you find out whether the archive holds data for the year and subject you are being asked about. 49 datasets covering the town and school budgets, the town ledger, staff rosters, out-of-district placements, elections, and fifteen years of annual town reports.
document
document
Where a document came from: the publisher's URL, our copy, and its sha256 so a reader can check they have the same bytes. Use it to cite anything.
first
read_first
The grain of every table and the specific ways to get a confident wrong answer out of this data. Read this before computing anything. It states, among others, that a budget and an actual must never be combined in one calculation; that a budget line is NET of grants and fees and is not what a thing costs; and that no budget line is mapped to a ledger account, so budget-to-actual at line level cannot be answered from this data at all.
meetings
search_meetings
Which of the 1,422 published town meeting documents contain a word — every board, 2025 onward. Returns the board, the date and a citable URL for each. AN EMPTY RESULT MEANS THE WORD IS NOT IN THE INDEXED DOCUMENTS, which is not the same as nobody having said it: the archive starts in January 2025. It matches words exactly, so plurals are separate terms — search "jersey" and "jerseys" both.
query
query
Any question the other tools do not cover, as one read-only SQL statement over the archive database. SELECT or WITH only; a LIMIT is imposed if you omit one. Call `read_first` before computing anything and `list_datasets` to find table names. A query estimated to read more than 250,000 rows is refused — narrow it with a WHERE, or ask for one table at a time.
staff
staff
How many people the town PRINTED on a school staff roster, by year, school and kind of job. Uses our classification of the printed title, never the title itself, because the town has called the same job Tutor, Aide, Paraprofessional, Para, (para) and Sped Para across fifteen years. THIS IS A COUNT OF NAMES, NOT A STAFFING LEVEL: a roster carries no FTE, so a 0.4 music teacher and a full-timer are one row each, and it names no funding source, which is the question that usually matters. Grade appears only where the page happened to print it.
worked
worked_examples
107 questions this archive can answer, each with the SQL that answers it. Every one is executed against the database on every build, so none of them is a claim. Start from the nearest one and edit it rather than writing a query from scratch.

Endpoints

URLTransportStateLatencyChecked
https://lunenburgbudgetproject.org/mcp streamable-http answering 581 ms 15 min ago

Alternatives to Archive

same job, measured the same way
Signal Bureau
by evolutionlabs-dev

SigB (Signal Bureau): maintained, source-traced record of entities and events in your named domain.

22 tools answering
Agent Observability
by kryptosai

Trace AI agent execution: every tool call, every error, every dollar. Open source, local-first.

72 installs/wk local only
Dynatrace Managed MCP
by dynatrace-oss

MCP server for Dynatrace Managed to access logs, events, and metrics.

602 installs/wk local only
Footnote
by brick-byte

Every number in an AI answer traces back to the rows that produced it.

65 installs/wk local only
Myco Brain
by thegoodguysla

Self-hosted, source-traceable memory layer and MCP server for AI agents, on your own Postgres.

66 installs/wk local only
Tru8 Evidence Research
by samyatessmith

Source-traced evidence research for AI agents. We organise the evidence; you decide.

166 installs/wk 3 tools answering
Superlog
by superlog

Open-source agent that observes and fixes your application. Query logs, traces, metrics, incidents.

answering
Agentguard47
by bmdhodl

Read-only MCP server for coding-agent traces, alerts, costs, usage, and budget health.

35 installs/wk local only

Archive — questions

Answers built from our own checks of this server.

What can Archive do?
It exposes 8 tools, read directly from the server on our last check. Among them: budget_history, document, list_datasets, query, read_first, search_meetings and 2 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Archive working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 342 ms. The bar chart above shows every period we have measured.
How do I connect Archive?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Archive need an API key?
No. Archive completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 8 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Archive?
It answers our handshake in 342 ms on average, which is faster than 45% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is Archive open source?
We cannot say either way: written in Python and 0 stars on GitHub, but we could not determine the licence, and without one the code is not open source by default.