frasma
Exposes read-only MCP tools for discovering Frasma's profile and knowledge base, accessing the diagnostic framework, and preparing validated process briefs and diagnostic summaries with handoff URLs. It enables agents to gather operational context and generate quote-ready process assessments without sending emails.
README
This is a Next.js project bootstrapped with create-next-app.
Getting Started
First, run the development server:
npm run dev
# or
yarn dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying pages/index.tsx. The page auto-updates as you edit the file.
API routes can be accessed on http://localhost:3000/api/hello. This endpoint can be edited in pages/api/hello.ts.
The pages/api directory is mapped to /api/*. Files in this directory are treated as API routes instead of React pages.
Process brief (quote request)
The landing form and the chat widget both submit a process brief to POST /api/request-process-assessment. Francesco uses that brief to prepare a quote.
Fields: name, work email, optional company and role, process (required), optional current tools and volume.
When MONGODB_URI is set, the same endpoint upserts users, inserts leads, and logs project_brief_submitted.
Required environment variables
Create a .env.local file in the project root with:
# Destination email (defaults to francemazzi@gmail.com)
MEETING_NOTIFICATION_EMAIL=francemazzi@gmail.com
# Sender identity (defaults to SMTP_USER if using SMTP)
MEETING_FROM_EMAIL=francemazzi@gmail.com
# Sender display name (defaults to "Frasma")
MEETING_FROM_NAME=Frasma
# --- Option A (recommended): Gmail SMTP via App Password ---
SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
SMTP_SECURE=true
SMTP_USER=francemazzi@gmail.com
SMTP_PASS=your_gmail_app_password
# --- Option B: Resend ---
# RESEND_API_KEY=your_resend_api_key
Notes:
- In production you should set these variables in your hosting provider (e.g. Vercel).
- If neither SMTP nor Resend is configured, the API returns an error and the popup shows it to the user.
Diagnostic chat agent
The website chat is a process-diagnostic assistant. It uses the bilingual, versioned knowledge base in lib/knowledge/ to:
- identify operational bottlenecks;
- collect workflow, systems, volumes, baseline metrics, data, and constraints;
- map the need to Frasma capabilities;
- prepare an editable process brief;
- submit that brief to
POST /api/request-process-assessmentonly after explicit user review.
If the assistant times out, the widget shows the same process brief form, prefilled from the conversation history (no extra LLM call).
Each browser session stores a conversationId in localStorage. Messages are persisted server-side in MongoDB Atlas through the official Node.js driver. On reopen, the widget restores the conversation via GET /api/conversations/:id. If MongoDB is not configured, the chat keeps working in stateless mode.
Do not add prices, guaranteed savings, customer secrets, credentials, or personal data about third parties to the knowledge base or diagnostic examples.
Required OpenAI environment variable (chat agent + voice dictation on the process assessment form):
OPENAI_API_KEY=your_openai_api_key
# Optional; defaults to gpt-4o-mini
OPENAI_CHAT_MODEL=gpt-4o-mini
# Optional; defaults to whisper-1 (process assessment voice dictation)
OPENAI_WHISPER_MODEL=whisper-1
Chat persistence (MongoDB Atlas)
Persistence is optional but recommended in production. When configured, the API stores:
- conversation metadata (
lang,timezone,pagePath, conversion flags); - user and assistant messages;
- conversion events from the process brief (
project_brief_submitted).
Setup:
- Create a free M0 cluster on MongoDB Atlas (recommended region: Frankfurt or Ireland).
- Create a database user with read/write access.
- In Network Access, allow
0.0.0.0/0(required for Vercel serverless). - Copy the connection string and set these environment variables locally and on Vercel:
MONGODB_URI=mongodb+srv://user:pass@cluster.mongodb.net/frasma_chat?retryWrites=true&w=majority
CHAT_RETENTION_DAYS=90
Indexes and a TTL policy on conversations.expiresAt are created automatically on first use.
Without MONGODB_URI, POST /api/chat and the form APIs continue to work; persistence calls are skipped silently.
Verify the connection:
npm run check:mongodb
curl http://localhost:3000/api/status
Expected when configured correctly:
{
"persistence": { "configured": true, "connected": true }
}
A successful chat response also includes conversationId.
MongoDB troubleshooting
- Network Access on Atlas must include
0.0.0.0/0for Vercel serverless. - The URI must include the database name:
...mongodb.net/frasma_chat?... - If you reset the Atlas user password, update both
.env.localand Vercel, then redeploy. - URL-encode special characters in the password (
@,#,%, etc.). - After changing Vercel env vars, trigger a new deployment; env changes are not applied to existing deployments automatically.
AI discovery and public MCP
Public discovery surfaces for agents and humans:
| Resource | URL |
|---|---|
| Agents hub | https://www.frasma.org/for-agents |
| Services hub | https://www.frasma.org/servizi |
| Case studies | https://www.frasma.org/casi |
| llms.txt | https://www.frasma.org/llms.txt |
| llms-it.txt | https://www.frasma.org/llms-it.txt |
| Home markdown | GET / with Accept: text/markdown |
| OpenAPI | https://www.frasma.org/openapi.json |
| API catalog | https://www.frasma.org/.well-known/api-catalog |
| Agent skills | https://www.frasma.org/.well-known/agent-skills/index.json |
| MCP (Streamable HTTP) | https://www.frasma.org/api/mcp |
MCP tools (read-only + handoff)
get_frasma_profilesearch_frasma_knowledgeget_diagnostic_frameworkprepare_diagnostic_summary— validates a diagnosis and returns handoff URLs; never sends emailprepare_project_brief— validates the process brief used for a quote; never sends email
Example Cursor / Claude Desktop remote config:
{
"mcpServers": {
"frasma": {
"url": "https://www.frasma.org/api/mcp"
}
}
}
For stdio-only clients:
{
"mcpServers": {
"frasma": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.frasma.org/api/mcp"]
}
}
}
Directory listing (after production deploy)
- Confirm
/for-agents,/servizi,/llms.txt,/llms-it.txt, and/api/mcprespond in production. - Smoke:
curl -H 'Accept: text/markdown' https://www.frasma.org/andhttps://www.frasma.org/servizi/ddt-erp, plus an MCPinitialize+tools/listagainst/api/mcp. - Submit the server to relevant MCP directories with the short description from
/for-agents(mention the services hub). - Keep the agent-skills digest in sync when
SKILL.mdchanges (shasum -a 256).
Quality checks:
npm run lint
npm test
npm run build
Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。