Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Launch, deposit into, rebalance and redeem onchain funds on Solana mainnet.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
DFM_API_KEY, DFM_AGENT_WRITE_ENABLED, DFM_MCP_CONFIRM_REQUIRED标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"dfm-agent": {
"command": "npx",
"args": [
"-y",
"@dfm-fi/agent"
],
"env": {
"DFM_API_KEY": "your-value",
"DFM_AGENT_WRITE_ENABLED": "your-value",
"DFM_MCP_CONFIRM_REQUIRED": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add dfm-agent --env DFM_API_KEY=your-value --env DFM_AGENT_WRITE_ENABLED=your-value --env DFM_MCP_CONFIRM_REQUIRED=your-value -- npx -y @dfm-fi/agent运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"dfm-agent": {
"command": "npx",
"args": [
"-y",
"@dfm-fi/agent"
],
"env": {
"DFM_API_KEY": "your-value",
"DFM_AGENT_WRITE_ENABLED": "your-value",
"DFM_MCP_CONFIRM_REQUIRED": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"dfm-agent": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dfm-fi/agent"
],
"env": {
"DFM_API_KEY": "your-value",
"DFM_AGENT_WRITE_ENABLED": "your-value",
"DFM_MCP_CONFIRM_REQUIRED": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
DFM_AGENT_WRITE_ENABLED envDFM_MCP_CONFIRM_REQUIRED env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 DFM-Finance 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:DFM_API_KEY
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.2.2397)于5天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Asset Notation
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Read and maintain an Asset Notation file on disk: net worth, holdings, valuations, CSV import.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Mirror. This repo is published automatically from DFM's monorepo on every
@dfm-fi/agentrelease (see CONTRIBUTING.md). Docs: https://app.dfm.finance/docs · npm:@dfm-fi/agent· Skill:skills/dfm-fund-manager· Claude Code:/plugin marketplace add DFM-Finance/dfm-agent
Run DFM onchain funds from any MCP-capable AI agent (Claude Code, Claude Desktop, Cursor, …): discover funds and tokens, launch a fund, deposit, rebalance, redeem, manage your app wallet, and follow other traders — against the live API at https://app.dfm.finance (Solana mainnet).
DFM is a permissionless launchpad for onchain funds: baskets of SPL tokens whose execution, NAV and fees are enforced by Solana programs. Fees are flat and factory-global: 75 bps on entry and 75 bps on exit, split 50/50 between the fund creator and the platform. There are no management or performance fees. Machine-readable summary: https://app.dfm.finance/llms.txt
npx -y @dfm-fi/agent install # read-only
npx -y @dfm-fi/agent install --write --api-key dfm_... # with real-money tools
install registers the server with the claude CLI when it is present and always prints the manual command and a Claude Desktop config as a fallback (--dry-run only prints).
The API key. Create it while signed in at app.dfm.finance → Agent → KEYS. Keys are read-only by default: a read-only key can only read. For the write tools tick the option that allows writes when you create it. A key is revocable at any time and never holds your private key.
Manual registration (Claude Code):
claude mcp add dfm -- npx -y @dfm-fi/agent@latest # read-only
claude mcp add dfm --env DFM_API_KEY=dfm_... --env DFM_AGENT_WRITE_ENABLED=true \ -- npx -y @dfm-fi/agent@latest # read + write
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": { "dfm": { "command": "npx", "args": ["-y", "@dfm-fi/agent@latest"], "env": { "DFM_API_KEY": "dfm_...", "DFM_AGENT_WRITE_ENABLED": "true" } } } }
claude mcp add dfm --env DFM_AGENT_WRITE_ENABLED=true -- npx -y @dfm-fi/agent@latest
Then ask the agent to onboard: it creates its identity keypair, signs in, sets a profile (a default avatar is generated when there is no image), creates an app wallet owned by a local P-256 key, and prints the funding step — send USDC and SOL to the identity public key, then app_wallet_fund {usdc, sol}. whoami prints the same funding step while the app wallet is short. No API key is needed for writes.
Fund operations run from your app wallet, not from your own wallet. Some actions — a swap into an arbitrary token, a withdrawal of fund shares or other tokens — must be approved by you in the app, so from the MCP those tools answer "approve it in the app" instead of running. Write tools also require DFM_AGENT_WRITE_ENABLED=true.
| Tool | Kind | What it does |
|---|---|---|
whoami | read | Your profile, acting wallet, app wallet, API/cluster and whether writes are enabled. Call first. |
list_dtfs | read | List funds (same filters, sort and search as the marketplace). |
get_vault | read | One fund: basket, current vs target weights, fees, TVL. |
discover_tokens | read | Turn words into mints (Jupiter search; exact symbol first). |
protocol_facts | read | Live factory numbers: creation fee, locked seed, entry/exit fees + split, Season 0 cap, basket and default-policy rules. |
get_token_price | read | Live USD price for up to 20 mints. |
get_portfolio | read | Your positions. |
zap_status | read | Progress of an open deposit/redeem escrow. |
app_wallet | read | App wallet status, live SOL/USDC and the next step. |
list_app_wallet_assets | read | Every token in your app wallet, fund shares included. |
swap_quote | read | Quote a token → token swap from the app wallet. |
trader_profile | read | A trader's public profile by wallet or @username. |
xp_status | read | Your XP and the top of the leaderboard. |
follow_trader / unfollow_trader | social | Follow or unfollow a trader. Moves no funds. |
report_bug | support | Send a bug report to the DFM team. Moves no funds. |
onboard | onboarding | Headless agent: runs the steps below in order, stops at the first missing one and prints the funding step. |
create_identity_wallet | onboarding | The agent's own Solana identity keypair (SIWS sign-in); reused if present, never a second. |
set_profile | onboarding | Display name, bio, avatar (no DFM @username; the only @ is a linked X). No image file? A deterministic default avatar is generated. |
create_app_wallet | onboarding | An app wallet owned by the agent's local P-256 key. |
create_api_key | onboarding | Mint a dfm_ key (read-only unless DFM_ALLOW_WRITE_KEY_MINT=1), stored 0600, never shown in chat. |
launch_vault | write | Launch a fund (2–10 assets, weights sum to 10,000 bps). |
deposit | write | USDC → fund shares (full zap-in; resumes an open escrow). |
redeem | write | Fund shares → USDC (full zap-out; resumes an open escrow). |
swap | write | Swap one token for another in the app wallet (Jupiter). |
update_vault_assets | write | Manager: replace a fund's target basket. |
rebalance_to_targets | write | Manager: swap holdings back to the target weights. |
init_rebalancer | write | Manager: enable rebalancing (normally done by launch_vault). Rebalancing is manual: there are no auto-rebalance tools. |
attach_metadata | write | Retry a fund's share-token metadata (name, symbol, logo) when the launch skipped it or it failed. |
zap_v2_cancel / zap_v2_update_envelope | write | Recover or unstick a stalled escrow. |
transfer_admin / accept_admin_transfer | write | Not available yet in this MCP: transfer_admin always refuses; accept_admin_transfer only reconciles an acceptance that already landed. |
app_wallet_fund / app_wallet_withdraw / withdraw_asset / app_wallet_rearm | write | Fund (from the local identity wallet; not in key-only mode), sweep or re-arm the app wallet; withdraw one token. |
close_empty_accounts | write | Agent-owned app wallet: close empty token accounts and reclaim the rent. |
The authoritative list is the server's tools/list.
There is no fee tool: fees are set by the protocol, not per fund.
| Variable | Default | Description |
|---|---|---|
DFM_API_KEY | — | Auth for an agent operating a human's account: a dfm_ key the human mints in the app (write access needed for write tools). Not needed by a headless agent. |
DFM_AGENT_WRITE_ENABLED | false | Master switch for every write tool. |
DFM_API_URL | https://app.dfm.finance | API base (/api/v2 is appended). |
DFM_MCP_CONFIRM_REQUIRED | unset | 1 = every write needs confirmPhrase:" " typed by the human (prompt-injection guard). |
DFM_MCP_NONINTERACTIVE_WRITES | unset | 1 = skip the phrase even when required. Only for unattended machines. |
DFM_WITHDRAWAL_WALLET | unset | Agent-owned app wallet: the withdrawal wallet saved in the app, pinned locally. The owner key signs a withdrawal to the saved wallet only when the tx pays exactly this address; unset = refused (use to:"sign_in_wallet" or set it). The MCP never takes the server's word for where money goes. |
DFM_ALLOW_WRITE_KEY_MINT | unset | 1 = create_api_key may mint write keys / write caps. Otherwise it mints read-only keys only. |
DFM_AGENT_AVATAR_PATH | ~/.config/dfm/avatar.{png,jpg,jpeg,webp,gif} | Operator avatar for set_profile (≤ 2 MB). Absent → a generated default. |
DFM_AGENT_KEYPAIR_PATH / DFM_AGENT_KEYPAIR_JSON | ~/.config/dfm/agent-wallet.json | Identity of a headless agent (SIWS sign-in; create_identity_wallet creates it once). It only signs in and funds the app wallet (app_wallet_fund); fund operations are signed by the app wallet. Keep it 0600 and backed up. |
HELIUS_RPC_URL / DFM_RPC_URL | — | Optional: submit through your own RPC instead of the backend. |
SOLANA_CLUSTER | mainnet-beta | Cluster name. |