field-agent-mcp
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., "@field-agent-mcpDo you accept HSA cards?"
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.
Forward-Deployed Agent Lab
A production-shaped, synthetic service-business agent that demonstrates the work between a model demo and a usable customer system: workflow discovery, grounded answers, tool boundaries, human escalation, evaluation, voice integration, and Kubernetes deployment.
This repository contains no client data or client code. The fictional Northstar Clinic dataset was written for reproducible testing. The operating pattern is informed by hands-on work helping small service businesses adopt AI workflows; see the anonymized case study.
System at a glance
Web / Voice / MCP client
|
v
FastAPI + MCP adapters
|
v
deterministic route + safety boundary
/ | \
knowledge intake tool human handoff
citations pending only normal / urgent
|
v
tests + synthetic evaluation + Kubernetes runtime controlsRelated MCP server: ToolBridge
What is implemented
FastAPI endpoints for agent responses, voice-ready SSML/audio, health, readiness, and evaluation
Deterministic retrieval over an approved bilingual knowledge base with source citations
Explicit escalation for emergencies, professional judgment, and ungrounded questions
MCP tools for knowledge search, intake collection, and human escalation
Local macOS text-to-speech adapter with no external data transfer
Reproducible synthetic evaluation for route, handoff, tool-selection, and grounding behavior
Compact BERT intent-router fine-tuning experiment, kept outside the deterministic safety boundary
Docker image and Kubernetes Deployment, Service, HPA, probes, resource limits, and NetworkPolicy
Automated API, core-engine, MCP-tool, evaluation, and deployment-manifest tests
Run locally
Python 3.11–3.13 is supported.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"
pytest
python scripts/run_eval.py
uvicorn field_agent_lab.api:app --reloadOpen http://127.0.0.1:8000/docs for the interactive API.
Grounded knowledge request
curl -s http://127.0.0.1:8000/v1/agent/respond \
-H 'content-type: application/json' \
-d '{"message":"Do you accept HSA cards?","locale":"en-US"}'The response includes a knowledge route and citations to the approved payment document.
Scheduling request
curl -s http://127.0.0.1:8000/v1/agent/respond \
-H 'content-type: application/json' \
-d '{"message":"I want to book an appointment","customer_id":"demo-123"}'The system returns a collect_intake tool call and explicitly says that staff must confirm availability.
Voice-ready response
curl -s http://127.0.0.1:8000/v1/voice/respond \
-H 'content-type: application/json' \
-d '{"message":"When are you open?","generate_audio":false}'Set generate_audio to true on macOS to return base64-encoded AIFF audio generated by the local say provider.
MCP server
field-agent-mcpTools:
search_service_knowledgecollect_intakeescalate_to_human
The MCP interface reuses the same core engine as the HTTP API, so safety and grounding behavior do not drift by channel.
Compact-model experiment
Install the optional training dependencies and run:
python -m pip install -e ".[train]"
python training/train_router.pyThe script fine-tunes prajjwal1/bert-tiny on four synthetic intent classes and writes transparent metrics to artifacts/router_metrics.json. The model is an experiment; deterministic rules remain the safety boundary.
Deployment
docker build -t forward-deployed-agent-lab .
kubectl apply -f deployment/k8s.yamlThe manifest intentionally includes readiness/liveness probes, non-root execution, dropped Linux capabilities, resource requests/limits, horizontal autoscaling, and a network policy.
Evidence and limitations
Generated reports are committed under artifacts/ after execution. All benchmark cases are visible in data/eval_cases.jsonl. The dataset is small and synthetic, so the reported score is a regression baseline—not a claim of clinical quality or production generalization.
Available Tools
3 toolscollect_intakeA
Collect scheduling details without claiming that an appointment is confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| service | Yes | ||
| preferred_time | Yes | ||
| callback_number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses a key behavioral trait: the tool does not claim appointment confirmation. This is valuable, but it omits other potential behaviors like data persistence, return format, or side effects. Still, it adds meaningful beyond-schema context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core action and includes a key nuance. No wasted words, though it omits potentially useful details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with four self-explanatory parameters and an output schema (not shown). The description is enough to understand the basic operation but lacks details about what happens after collection, any constraints on input values, or how the returned data is structured. Sibling tools indicate there are other pathways, but the description does not connect to them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any of the four parameters (name, callback_number, service, preferred_time). The phrase 'scheduling details' vaguely maps to these fields but adds no specific semantics beyond what the parameter names already convey. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Collect scheduling details' with a specific verb and resource. It also adds a distinguishing constraint ('without claiming that an appointment is confirmed'), which helps differentiate it from other tools like escalate_to_human or search_service_knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used when gathering scheduling information and explicitly notes it does not confirm appointments, providing some usage context. However, it does not mention alternatives like search_service_knowledge or escalate_to_human, nor does it state when not to use this tool, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
escalate_to_humanC
Queue a request for a human staff member.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | ||
| priority | No | normal |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only states 'Queue a request' without detailing what happens after queuing, whether it is synchronous, or if any confirmation is returned. The term 'Queue' hints at asynchronous handling but lacks specificity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action, and contains no filler words. While under-specified, the efficient structure earns a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, no enums) and has an output schema, but the description omits critical usage context such as when to escalate, how priority affects queuing, and what happens to the request. The output schema may cover return values, but the description alone is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the summary or priority parameters. With 0% schema description coverage, the agent receives no guidance on what content to include in summary or what priority values are valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Queue' and identifies the resource as 'a request for a human staff member', clearly indicating the action. It is distinct from siblings like search_service_knowledge and collect_intake, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to escalate versus using search_service_knowledge or collect_intake. No prerequisites, scenarios, or exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_service_knowledgeB
Search approved service-business knowledge and return citations.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| locale | No | en-US |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does mention returning citations, which is useful, but lacks context about authentication, result limits, error behavior, or the meaning of 'approved' knowledge. The read-only nature of a search is implied but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is immediately front-loaded with the verb and purpose. Every word earns its place, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists, the description lacks essential context such as when to use this tool versus alternatives, and what the locale parameter does. For a search tool with two parameters, the description is under-specified and leaves the agent to guess about locale semantics and search scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain the 'query' or 'locale' parameters beyond their names. 'Query' is somewhat self-evident, but 'locale' is unexplained and could significantly affect results. The description adds no value over the bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and clearly identifies the resource ('approved service-business knowledge') and outcome ('return citations'). It distinguishes itself from sibling tools like collect_intake and escalate_to_human, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching knowledge, but does not explicitly state when to use this tool versus the sibling tools, nor any exclusions or prerequisites. There is no mention of 'use this before escalating' or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
collect_intake - First observed
escalate_to_human - First observed
search_service_knowledge
TDQS
Each tool has a clearly distinct purpose: searching knowledge, collecting intake details, and escalating to a human. There is no overlap or ambiguity between them.
All tool names follow the same verb_noun pattern with lowercase and underscores: search_service_knowledge, collect_intake, escalate_to_human. This is highly consistent.
With only 3 tools, the server is well-scoped for a focused triage workflow. Each tool serves a necessary function without redundancy or bloat.
The tools cover the core lifecycle of a field agent interaction: retrieving information, gathering details, and escalating when needed. A minor gap is the lack of a confirmation or follow-up action, but this may be intentional to avoid false commitments.
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 unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server designed for multi-tenant, authenticated, and observable AI agent systems, enabling secure tool execution across heterogeneous data sources.62MIT
- FlicenseNot gradedqualityDmaintenanceA governed MCP server for integrating AI agents with customer data, featuring role-based access control, field redaction, and human-in-the-loop approval for secure support operations.1-
- FlicenseAqualityBmaintenanceA production-grade MCP server that provides a centralized microservice toolkit for LLM agents, enabling web search and extensible tool integration.1-
- AlicenseNot gradedqualityCmaintenanceGoverned MCP server for bank-grade agent tool access with RBAC, PII redaction, rate limiting, and audit logging.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/YihengLi-1/forward-deployed-agent-lab'
If you have feedback or need assistance with the MCP directory API, please join our Discord server