budget-evaluation-mcp
Uses GitHub Copilot model to generate executive budget narratives and answer follow-up questions from structured evaluation results.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@budget-evaluation-mcpEvaluate the engineering budget workbook and provide approval recommendations."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Engineering Budget Evaluation Agent

Microsoft Agent Framework + GitHub Copilot SDK (gpt-5.6-sol) solution for evaluating engineering
budget source documents through MCP and Microsoft Teams.
Users may upload one combined file or several files over multiple messages in PDF, DOC/DOCX, or
XLS/XLSX format. The app checks for PER Budget, QS Estimation, Vendor Quotation, MAPPING RULES, Historical Unit Rates, and Summary, then prompts for any missing source. The calculation
layer maps every priced vendor WBS row and normalizes category and total rates to USD/Sqm. GPT-5.6
Sol normalizes non-workbook documents, produces the English executive narrative, and answers
follow-up questions with report-scoped RAG over the uploaded source files.
Architecture
Application flow
Microsoft Teams user → uploads PDF, Word, or Excel sources → Teams bot → validates source coverage through the MCP client → requests any missing PER, QS, quotation, mapping, history, or summary source → calls the Budget Evaluation MCP service → runs deterministic comparison and model-assisted document normalization → returns a structured four-page report and executive recommendation → renders Teams Adaptive Cards → supports report-scoped follow-up Q&A and approval.
Stage | Component | Responsibility | State |
1 | Microsoft Teams | File upload, chat questions, and approval actions | Teams conversation |
2 | Teams bot ( | Accumulates attachments, tracks report IDs, routes follow-up questions, and replaces approved cards with a completed state | Bounded in-memory conversation and approval maps |
3 | Adaptive Card layer ( | Upload guidance, four-page evaluation dashboard, errors, and idempotent approval completion UI | Card payload |
4 | MCP client ( | Calls inspection, evaluation, and report Q&A tools over Streamable HTTP | Request scoped |
5 | MCP server ( | Exposes | Bounded in-memory report cache |
6 | Document pipeline ( | Decodes PDF, Word, and Excel files, identifies source types, chunks content, and retrieves report evidence | Report scoped |
7 | Evaluation engine ( | Maps vendor WBS rows, normalizes USD/Sqm, calculates variances, and assigns traffic-light decisions | Deterministic structured model |
8 | AI layer ( | Uses GitHub Copilot | Ephemeral agent session |
Azure deployment topology
Azure resource | Deployed workload | Connection |
Microsoft Entra ID application | Single-tenant bot identity and credential | Authenticates Azure Bot Service requests to the Teams bot |
Azure Bot Service + Teams channel | Teams registration and messaging endpoint | Sends activities to |
Azure Container App | Node.js 20 Teams bot image | Pulls from ACR and calls the MCP endpoint through |
Azure Container Registry | Versioned | Supplies immutable Teams bot revisions |
Azure Container Apps Sandbox | Python 3.12 Budget Evaluation MCP service | Exposes anonymous HTTPS Streamable HTTP at |
GitHub Copilot SDK |
| Receives normalized document content or deterministic report JSON |
Runtime request path
→ Teams channel
→ Azure Bot Service
→ Teams Container App /api/messages
→ Sandbox MCP /mcp
→ document and evaluation pipeline
→ GitHub Copilot model when extraction, summary, or grounded Q&A is required
→ Adaptive Card or chat response returned through the same path.
Approval path → user selects Approve on an Adaptive Card → Teams sends an Adaptive Card invoke or submit activity → the bot derives a stable conversation/action key → duplicate approvals return the existing result → the original card is replaced with approver, timestamp, and completed status.
Key components
teams_app/— Microsoft Teams bot and UI integrationbudget_agent/server.py— MCP server exposing evaluation and report-query toolsbudget_agent/evaluator.py— Excel validation and deterministic cost comparison logicbudget_agent/agent.py— GitHub Copilot-based narrative and Q&A generationtests/— validation and regression tests for evaluator behavior
Related MCP server: Tri-Tender Pricing MCP
Evaluation rules
Vendor total versus PER Budget:
|variance| <= 10%: approve10% < |variance| <= 20%: conditional approval|variance| > 20%: reject
Vendor mapped category versus QS Estimate:
|variance| <= 5%: reasonable5% < |variance| <= 15%: review required|variance| > 15%: significant concern
Vendor mapped category unit rate versus historical USD/Sqm: same ±5% / ±15% thresholds.
Unmapped priced rows and missing benchmarks are reported explicitly.
OUTPUT-style dashboard
The MCP report and Teams Adaptive Card follow the workbook OUTPUT tab:
Page 1 — Vendor total versus PER Budget
Page 2 — Vendor mapped category amount versus QS Estimate
Page 3 — Vendor mapped category USD/Sqm versus Historical Unit Rate
Page 4 — QS versus Vendor construction scope, specification, brand, and quantity/unit
Traffic-light indicators are consistent across the structured JSON and Teams UI:
🟢 Green — approve / reasonable
🟡 Yellow — conditional approval / review required
🔴 Red — reject / significant cost concern
⚪ Gray — benchmark missing
Page 4 aligns each vendor line with the closest QS requirement. Text fields are normalized and compared for compliance; quantity differences within ±5% match, ±5–15% require review, and differences above ±15% or inconsistent units are flagged as mismatches. The result includes the QS value, vendor value, field-level status, and a recommendation for clarification, compliance confirmation, substitution review, or repricing.
Local validation
conda activate agentdev
pip install -e '.[dev,azure]'
pytest -q
ruff check budget_agent tests scripts
python -m budget_agent.serverThe MCP endpoint is http://localhost:8000/mcp; health is http://localhost:8000/healthz.
Teams app
cd teams_app
npm install
npm run buildSet the values in teams_app/.env.example, then run npm start. Upload PDF, DOC/DOCX, or XLS/XLSX
files in Teams. The bot retains files within the conversation, shows which required source categories
are still missing, calls evaluate_budget_documents when all inputs are available, and keeps the
returned report ID for follow-up questions. A normal question retrieves evidence across all source
documents. Use [filename] question to chat with one file, and type files or 文件 to list the
available filenames. Questions may request totals, differences, percentages, unit-rate conversions,
and other calculations; answers include the evidence inputs, formula, result, unit, and source citations.
Azure deployment
conda activate agentdev
export AZURE_SUBSCRIPTION_ID="$(az account show --query id -o tsv)"
export AZURE_RESOURCE_GROUP="rg-budget-agent"
export AZURE_LOCATION="eastus2"
export ACA_SANDBOX_GROUP="aca-sbx-budget-agent"
export COPILOT_GITHUB_TOKEN="<GitHub token authorized for Copilot requests>"
python scripts/deploy_sandbox.py
export MCP_URL="$(python -c 'import json; print(json.load(open(".azure/sandbox-deployment.json"))["mcp_url"])')"
bash scripts/deploy_teams.shThe scripts create an Azure Container Apps Sandbox MCP service and a single-tenant Teams bot,
disable Sandbox auto-suspend, enable the Microsoft Teams channel, and generate
.azure/engineering-budget-teams-app.zip for Teams upload. The .azure/ directory and all
deployment-specific identifiers are intentionally excluded from source control.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
Evidence-readiness MCP server: validate, audit, and score briefs, memos, and evidence packs.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAI-powered MCP server that enables Claude and other LLMs to interact directly with construction documents, drawings, and specifications through advanced RAG and hybrid search capabilities.9MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server designed to automate tender and RFQ pricing by extracting requirements from documents and building structured pricing models. It enables users to calculate final costs, compare market rates, and generate styled HTML pricing reports for PDF export.
- AlicenseNot gradedqualityAmaintenanceMCP server that connects AI assistants to Actual Budget for budget management, enabling natural language queries, transaction creation, and spending analysis.1,67149MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that enables LLMs to read and analyze Microsoft Project schedules, including critical path, resources, and advanced construction planning layers (AWP and LPS) for work packages and Lean planning.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kinfey/hack_demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server