@noeva/agents-mcp
v1.10.0
Published
MCP server for the NOEVA Mastra agents — lets external LLMs invoke NOEVA agents and converse with them over the noeva-agents server (chat SSE, threads). Ships an HTTP service (central deploy) and a stdio package (client-distributable).
Readme
noeva-agents-mcp
MCP server that lets external LLMs invoke NOEVA Mastra agents and converse with them.
Protocol adapter over the noeva-agents server (default https://agents.noeva.ai):
the chat SSE stream is consumed server-side and collapsed into a flat envelope, so
MCP clients never deal with streaming.
Public install (npm)
Installazione pubblica senza credenziali GitHub:
npx -y @noeva/agents-mcpConfig MCP (es. Claude Desktop):
{
"mcpServers": {
"noeva-agents": {
"command": "npx",
"args": ["-y", "@noeva/agents-mcp"],
"env": {
"NOEVA_AGENTS_BASE_URL": "https://agents.noeva.ai",
"NOEVA_API_KEY": "noeva_sk_..."
}
}
}
}Il canale
@my-ginkgo/noeva-agents-mcpsu GitHub Packages resta disponibile per uso interno (richiede un PATread:packages).
Tools
| Tool | Actions | What it does |
| ---------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| agents_catalog | list [read] | Curated whitelist of invocable agents (id, title, description, example). Static — no upstream call. |
| agents_chat | ask [soft-write] | One conversational turn with a whitelisted agent. Returns { text, tool_calls, thread_id, usage, citations }; a tool_calls entry carries an error field when that tool invocation failed mid-turn. |
| agents_threads | list [read] | Paginated thread listing for a resource_id (by convention, the agent id). |
The conversational loop
agents_chat action=askwithworkspace_id,agent_id(pick fromagents_catalog;noevaSuperAgentis the default recommendation) andmessage. Omitthread_id.- The envelope comes back with a generated
thread_id(mcp-<uuid>). - Follow-ups: call
askagain with the SAMEthread_id— the agent keeps its memory of the conversation. - If a turn times out, the server keeps generating in the background (stream recovery): retry
askon the samethread_idto retrieve the result.
Environment variables
| Variable | Default | Notes |
| ------------------------- | ------------------------- | --------------------------------------------------------------------------------------- |
| NOEVA_API_KEY | — (required, stdio) | Personal NOEVA API key (noeva_sk_…), generated in the Noeva app (Profile → API Keys). |
| NOEVA_AGENTS_BASE_URL | https://agents.noeva.ai | The noeva-agents server. Plain http allowed only for loopback. |
| NOEVA_AGENTS_TIMEOUT_MS | 120000 | Whole-turn budget for the chat stream. |
| MCP_RATE_LIMIT_PER_MIN | 60 | Courtesy in-process limiter (not a security control). |
| LOG_LEVEL | info | pino level; stdio logs go to stderr. |
Every call also needs a workspace_id argument (the API key is user-scoped, not
workspace-scoped) — find yours in the Noeva app or via the noeva-core MCP.
Claude Desktop
{
"mcpServers": {
"noeva-agents": {
"command": "npx",
"args": ["-y", "@my-ginkgo/noeva-agents-mcp"],
"env": {
"NOEVA_API_KEY": "noeva_sk_…",
"NOEVA_AGENTS_BASE_URL": "https://agents.noeva.ai"
}
}
}
}Development
pnpm install # needs GitHub Packages auth for @my-ginkgo scope
pnpm test # vitest (unit + integration)
pnpm run typecheck
pnpm run lint
pnpm run inspect # MCP Inspector against src/stdio.tsHTTP build (central deploy): pnpm run start:http — stateless StreamableHTTP on
POST /mcp, bearer-gated, per-request auth forwarded to noeva-agents.
