Felix 是 AI Skill Hub 本期精选MCP工具之一。综合评分 7.5 分,整体质量较高。我们推荐使用将其纳入你的 AI 工具库,帮助提升工作效率。
Felix是一款开源的MCP工具,提供单个二进制AI代理网关,支持多个LLM提供商,持久性内存等功能。值得关注的开源项目,适合于AI开发者和研究人员。
Felix 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
Felix是一款开源的MCP工具,提供单个二进制AI代理网关,支持多个LLM提供商,持久性内存等功能。值得关注的开源项目,适合于AI开发者和研究人员。
Felix 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/sausheong/felix
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"felix": {
"command": "npx",
"args": ["-y", "felix"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 Felix 执行以下任务... Claude: [自动调用 Felix MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"felix": {
"command": "npx",
"args": ["-y", "felix"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
A self-hosted AI agent gateway written in Go. Single binary, low memory, runs entirely on your own machine.
Felix connects you (via CLI or web chat) to LLMs — Claude, GPT, Gemini, Qwen, Ollama, or any OpenAI-compatible endpoint — and lets agents execute tasks on your hardware using a fixed registry of in-process tools plus any number of remote MCP servers.
Interfaces - Single binary, no runtime dependencies. Download and run. - macOS / Windows system tray app that runs the gateway in the background and serves a web chat at http://127.0.0.1:18789/chat. - felix chat CLI that auto-detects a running gateway and shares its session, memory, and MCP state — start in the browser, continue in the terminal. - WebSocket JSON-RPC 2.0 control plane for programmatic access.
Models - Claude, GPT, Gemini, Qwen, Ollama, LM Studio, DeepSeek, or any OpenAI-compatible API. - Bundled Ollama runtime so you can run agents with no API key. Downloads gemma4 on first startup if no other models are available. - Per-agent extended reasoning (off|low|medium|high) mapped to Claude thinking budgets, OpenAI reasoning_effort, Gemini ThinkingConfig, and Qwen enable_thinking. - Context-window auto-detection from the model identifier (handles proxy prefixes correctly), with a per-agent contextWindow override for unusual fine-tunes. - Cross-provider tool portability: JSON Schema fields one provider rejects (Gemini drops anyOf/oneOf/format; OpenAI drops $ref/definitions) are stripped at the provider boundary.
Memory & knowledge - Persistent memory: BM25 lexical search over Markdown files, recalled automatically each turn. Optional vector search via chromem-go when an embedding provider is configured. - Cortex knowledge graph (SQLite) that ingests completed conversations and surfaces relevant facts on subsequent turns. - Skill system: Markdown files with YAML frontmatter, lazily loaded by the agent on demand from a system-prompt index. Bundled starters (ffmpeg, imagemagick, pandoc, pdftotext, cortex) seeded on first run; user skills are managed live from the Settings UI.
Agents & tools - Multiple agents per install, each with its own model, workspace, persona, and tool policy. - Subagents invocable via the task tool, so a supervisor can delegate to a specialist with a different model. - Per-agent allow/deny lists for every built-in and MCP-provided tool. - Vision: paste image paths in the CLI or drop them in web chat; bytes go straight to the model. - Cron jobs: recurring prompts on configurable intervals, with pause/resume/remove management. - MCP client: Streamable-HTTP and stdio transports, OAuth2 (client credentials, authorization code + PKCE) and bearer auth, in-chat re-authentication, per-server circuit breaker.
Robustness - Append-only JSONL session storage with a DAG view; compaction is splice-based and never destructive. - Smart compaction: token-threshold or message-count triggered, three-stage fallback chain, per-session circuit breaker, runs asynchronously between turns. - Cache-stability invariant: request prefixes are byte-stable across turns (sorted tool defs, deterministic schema normalization) so Anthropic and OpenAI prompt caches keep hitting. - Stream-failure resilience: when a streaming response dies mid-flight, the runtime discards the partial output and retries via the provider's non-streaming endpoint, preserving the byte-identical prompt prefix. - Config hot-reload: edit felix.json5 while running, changes apply immediately.
Operations - All state in ~/.felix/ as plain files. No external database. - OpenTelemetry export (opt-in): traces, metrics, and logs to any OTLP/HTTP collector via config or standard OTEL_* env vars. - Localhost-only by default; optional bearer token auth on all HTTP and WebSocket endpoints.
| Purpose | Package |
|---|---|
| HTTP router | github.com/go-chi/chi/v5 |
| WebSocket | github.com/gorilla/websocket |
| CLI framework | github.com/spf13/cobra |
| Anthropic | github.com/anthropics/anthropic-sdk-go |
| OpenAI / Qwen / local Ollama | github.com/sashabaranov/go-openai |
| Gemini | google.golang.org/genai |
| MCP client | github.com/modelcontextprotocol/go-sdk |
| Knowledge graph | github.com/sausheong/cortex |
| Vector index | github.com/philippgille/chromem-go |
| HTML → Markdown | github.com/JohannesKaufmann/html-to-markdown/v2 |
| Markdown rendering (CLI) | github.com/charmbracelet/glamour |
| Browser automation | github.com/chromedp/chromedp |
| OAuth2 (MCP auth) | golang.org/x/oauth2 |
| System tray | fyne.io/systray |
make build # CLI binary -> ./felix
make build-app # macOS menu bar app -> Felix.app (also bundles felix and ollama)
make build-app-windows # Windows system tray app -> felix-app.exe
Then run ./felix onboard to walk through provider setup. If you skip every cloud provider, the wizard configures the bundled Ollama with gemma4 so you have a working agent with zero credentials.
// Anthropic — get a key at https://console.anthropic.com
"anthropic": { "kind": "anthropic", "api_key": "sk-ant-..." }
// Models: claude-sonnet-4-5, claude-opus-4, claude-haiku-3-5
// OpenAI — get a key at https://platform.openai.com/api-keys
"openai": { "kind": "openai", "api_key": "sk-proj-..." }
// Models: gpt-5, gpt-5-mini, o3-mini
// Google Gemini — get a key at https://aistudio.google.com/apikey
"gemini": { "kind": "gemini", "api_key": "AIza..." }
// Models: gemini-2.5-flash, gemini-2.5-pro, gemini-2.0-flash
// Qwen (Alibaba)
"qwen": { "kind": "qwen", "api_key": "sk-..." }
// Models: qwen-plus, qwen-max, qwen-turbo
// External Ollama (running outside Felix)
"ollama": { "kind": "openai-compatible", "base_url": "http://localhost:11434/v1" }
// Models: any tag pulled into Ollama (llama3.2, qwen2.5, mistral, llava, ...)
// LM Studio (default port 1234)
"lmstudio": { "kind": "openai-compatible", "base_url": "http://localhost:1234/v1" }
// DeepSeek — get a key at https://platform.deepseek.com
"deepseek": {
"kind": "openai-compatible",
"api_key": "sk-...",
"base_url": "https://api.deepseek.com/v1"
}
// Models: deepseek-chat, deepseek-coder, deepseek-reasoner
// Bundled Ollama (wired up automatically by `felix onboard`)
"local": { "kind": "local", "base_url": "http://127.0.0.1:18790/v1" }
~/.felix/felix.json5 (Windows: C:\Users\<you>\.felix\felix.json5). JSON5 means comments and trailing commas are allowed. Hot-reloaded — edits apply immediately, no restart needed.
{
"providers": {
"anthropic": { "kind": "anthropic", "api_key": "sk-ant-..." }
},
"agents": {
"list": [
{ "id": "default", "name": "Felix", "model": "anthropic/claude-sonnet-4-5" }
]
}
}
Environment variables take precedence over config-file values. The convention is {PROVIDER}_API_KEY (or {PROVIDER}_AUTH_TOKEN) and {PROVIDER}_BASE_URL, where {PROVIDER} is the uppercased provider name from your config:
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-proj-..."
export GEMINI_API_KEY="AIza..."
export DEEPSEEK_API_KEY="sk-..."
| Command | Description |
|---|---|
felix onboard | Interactive setup wizard |
felix start | Start the gateway server |
felix start -c path/to/config.json5 | Custom config |
felix chat [agent] | Interactive CLI chat (auto-detects running gateway) |
felix chat --no-gateway | Force in-process runtime, ignore any running gateway |
felix chat -m provider/model | Override model for this session (forces in-process) |
felix clear [agent] | Clear local CLI session history |
felix sessions [agent] | List sessions for an agent |
felix model list \| pull <name> \| rm <name> \| status | Manage local Ollama models |
felix mcp login <id> | Run interactive OAuth login for an MCP server |
felix status | Query the running gateway for agent status |
felix doctor | Diagnostic checks |
felix version | Print version + commit |
Agents reference models as provider/model-name where the provider name matches a key in the providers block:
anthropic/claude-sonnet-4-5 → uses the "anthropic" provider
openai/gpt-5 → uses the "openai" provider
ollama/llama3.2 → uses the "ollama" provider
local/gemma4 → uses the bundled local Ollama
deepseek/deepseek-chat → uses the "deepseek" provider
You can override the model for one CLI session: felix chat -m openai/gpt-5.
JSON-RPC 2.0 over WebSocket at ws://127.0.0.1:18789/ws.
| Method | Description |
|---|---|
chat.send | Send a message to an agent (streams response events) |
chat.abort | Cancel the active response for this connection |
chat.compact | Force-compact the active session immediately |
agent.status | List all configured agents and their state |
session.list / new / switch / history / clear | Session management |
jobs.list / add / pause / resume / remove / update | Cron job management |
HTTP endpoints: GET /health, /ws, /metrics (when enabled), /chat, /jobs, /settings, /logs (+ SSE), POST /api/mcp/reauth/{id}.
const ws = new WebSocket("ws://127.0.0.1:18789/ws");
ws.onopen = () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
method: "chat.send",
params: { agentId: "default", text: "What files are in the current directory?" },
id: 1
}));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
// msg.result.type is one of:
// "text_delta" — streaming text chunk
// "tool_call_start" — agent is calling a tool
// "tool_result" — tool execution result
// "compaction.start" / "compaction.done" / "compaction.skipped"
// "done" — response complete
// "error" / "aborted"
};
If gateway.auth.token is set in felix.json5, include Authorization: Bearer <token> on the WebSocket upgrade.
{
"providers": {
"local": { "kind": "local", "base_url": "http://127.0.0.1:18790/v1" }
},
"agents": {
"list": [
{ "id": "default", "model": "local/gemma4",
"tools": { "allow": ["read_file", "write_file", "bash"] } }
]
},
"memory": { "enabled": true }
}
- Always create feature branches from main - Use conventional commit messages: feat:, fix:, docs:, refactor: - Run tests before committing - Squash merge into main ```
Where they live: - ~/.felix/skills/ — shared across all agents - <agent-workspace>/skills/ — agent-specific
How they're matched. Felix injects only the index (name + description + tags) into every turn's system prompt. The model decides when it needs a skill body and calls the load_skill tool to fetch it on demand. This keeps the cached prompt prefix small and stable, which keeps prompt caches hitting.
Manage from the UI. Open /settings → Skills. Upload a .md file (256 KB max) and it's available on the next chat turn — no restart. View raw markdown, delete, or check for parse warnings inline. The same operations are exposed via REST at GET/POST/DELETE /settings/api/skills*.
The default install seeds cortex, ffmpeg, imagemagick, pandoc, and pdftotext so the agent arrives knowing how to reason about common command-line tools.
Felix是一款值得关注的开源MCP工具,提供了多种功能和特性,适合于AI开发者和研究人员使用。然而,项目的活跃度和维护情况需要进一步监测。
该工具未明确声明开源协议,商业使用前请联系原作者确认授权范围,避免侵权风险。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
经综合评估,Felix 在MCP工具赛道中表现稳健,质量良好。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | felix |
| 原始描述 | 开源MCP工具:Felix — single-binary AI agent gateway. Multi-provider LLM, persistent memory, M。⭐41 · Go |
| Topics | mcpagent-gatewayai-agentanthropicgollm |
| GitHub | https://github.com/sausheong/felix |
| 语言 | Go |
收录时间:2026-06-13 · 更新时间:2026-06-16 · License:未公布 · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端