NewFeneri MCP server · public beta

Plug Feneri into any agent.

A standards-compliant MCP server that exposes the emotional-intelligence engine as tools any agent can invoke: Claude Desktop, Cursor, Cody, and your own. One command. Six tools. Six seconds to setup.

$ npx -y @feneri/mcp install --host claude

Works with every MCP-compatible host

Install

Pick your host. Pick your shell.

One config edit and Feneri shows up as six tools your agent can reach for whenever it needs to read the person on the other side.

Claude Desktop.

Add Feneri to your Claude Desktop configuration. The app detects and loads it on next start.

Or edit config manually · ~/Library/Application Support/Claude/claude_desktop_config.json
{ "mcpServers": { "feneri": { "command": "npx", "args": ["-y", "@feneri/mcp"], "env": { "FENERI_API_KEY": "fnr_••••" } } } }

Cursor.

Cursor reads MCP servers from settings. Add Feneri and it's available in every chat session.

Settings → MCP → Add new server
{ "name": "feneri", "command": "npx -y @feneri/mcp", "env": { "FENERI_API_KEY": "fnr_••••" } }

Cody.

Use Sourcegraph Cody with Feneri as a custom tool provider. Works in VS Code and JetBrains.

.vscode/settings.json
"cody.experimental.mcp.servers": { "feneri": { "transport": "stdio", "command": "npx", "args": ["-y", "@feneri/mcp"] } }

Zed.

Zed's context-server feature picks up Feneri automatically once configured.

~/.config/zed/settings.json
"context_servers": { "feneri": { "command": { "path": "npx", "args": ["-y", "@feneri/mcp"] } } }

One-line install.

The installer figures out your host and writes the right config. Works with most popular MCP clients.

Terminal
# auto-detects Claude · Cursor · Cody · Zed npx -y @feneri/mcp install # or pick a host explicitly npx -y @feneri/mcp install --host claude

Custom agent.

Feneri ships as a Node and Python package so any MCP-compatible runtime can spawn it as a subprocess.

Node SDK
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio"; import { FeneriServer } from "@feneri/mcp"; const server = new FeneriServer({ apiKey: process.env.FENERI_API_KEY }); await server.connect(new StdioServerTransport());
Python SDK
from mcp.server.stdio import stdio_server from feneri_mcp import FeneriServer server = FeneriServer(api_key=os.environ["FENERI_API_KEY"]) await stdio_server(server).run()
The toolset

Six tools your agent can reach for.

Standard MCP tools. Strongly typed. Streaming where it matters. Use one, use all six. The agent decides when to read the room.

feneri.read_cliptool

Analyze a recorded clip: video, audio, text, or any combination. Returns a single multimodal state object.

args · path:string · modes:string[] · region?:string
feneri.read_streamstreaming

Open a live capture for the duration of an agent turn. Emits state updates every 33ms; closes when the turn ends.

args · source:enum · duration_s?:number · modes:string[]
feneri.summarize_sessiontool

Aggregate state across an entire session. Peaks, troughs, transitions, and a narrative summary the agent can repeat back.

args · session_id:string · format:'json' | 'text'
feneri.flag_distresstool

Boolean check: is distress above a threshold, sustained for N seconds? Designed for clinical and safety workflows.

args · threshold:number · sustained_ms:number · session_id?:string
feneri.compare_baselinestool

Diff two sessions: pre/post intervention, week-over-week, before/after a change. Returns deltas per signal.

args · session_a:string · session_b:string
feneri.subscribe_webhookresource

Tell Feneri to post back when state transitions cross a threshold. Stress spikes, attention dips, distress baselines shifting.

args · url:string · events:string[] · secret?:string
Quickstart

From config
to first call.

Once the server's installed, the agent does the work. Ask "How am I doing?" It picks up the camera and mic, calls read_stream, and brings back a real answer.

  • Zero glue code · the agent picks the right tool
  • Local capture · raw streams never leave your machine
  • Streaming tools surface updates between agent turns
  • Same API key works across every host
example · agent transcriptsimulated
// user prompts the agent USER: How am I doing right now? // agent reaches for the tool AGENT: feneri.read_stream({ source: "webcam", duration_s: 10, modes: ["emotion", "attention", "stress"] }) // engine streams back RESULT: { emotion: 0.62, attention: 0.78, stress: 0.41, trend: "stress rising" } AGENT: You're focused but a little tense. Stress ticked up over the last few seconds. Want to pause for a minute?
Get started

Six tools. One install.

Free for sandbox keys. No card. The agent gets emotion, attention, and intent. You keep the credits for production.