mcpField
P
Pump SDK MCP Server

Pump SDK MCP Server

本地服务
sdk.pumpk.it金融数据1403 周前更新

关于 Pump SDK MCP Server

Pump SDK MCP Server 基于 Pump 协议(Solana)的 TypeScript SDK,覆盖代币创建、联合曲线交易、AMM 池、费用分享等操作。面向需要构建或维护 Pump 相关应用的开发者。SDK 本身不发送交易,而是返回 TransactionInstruction 供调用方自行签名和发送。

主要功能

  1. 01离线指令构建器,不直接发送交易
  2. 02代币创建与联合曲线买卖
  3. 03AMM 池管理与分层费用配置
  4. 04创作者费用分享与交易量奖励
  5. 05pump 命令行工具,支持 JSON 输出

适用场景

  1. 01在 Solana 上程序化创建并交易 Pump 代币
  2. 02查询联合曲线价格、报价与毕业进度
  3. 03为代币配置费用分享并领取创作者费用

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"nirholas-pump-fun-sdk": {
"command": "npx",
"args": [
"-y",
"pump-fun-mcp"
]
}
}
}
启动命令npx -y pump-fun-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmpump-fun-mcp1.0.0

工具

67

收录的工具列表 · 更新于 2 周前

参数类型必填说明
mintstring是代币铸造地址
userstring是买方钱包地址
solAmountstring是要花费的 SOL 数量(lamports 単位)

详细介绍

Pump SDK

用于 Solana 上 Pump 协议的 TypeScript SDK,支持代币创建、联合曲线、AMM 池、费用分成和交易量奖励。

npm 版本 许可证 下载量 TypeScript Solana


什么是 Pump SDK?

Pump SDK 是面向 Solana 上 Pump.fun 协议的社区 TypeScript SDK。它为所有链上操作提供离线优先的指令构建器,包括代币创建、联合曲线交易、AMM 池管理、分级费用配置、创作者费用分成、基于交易量的代币激励以及社交推荐费用。

SDK 本身不会发送交易。它会返回 TransactionInstruction[],供你使用自己偏好的签名和发送策略组合成交易。


📋 目录


🚀 在线演示与资源

GitHub 社交费用提现是实际的链上活动,但不能自动证明开发者创建或认可了某种代币。领取卡片会区分已验证的代码库/创作者钱包关系、身份不匹配、未经验证的链接以及尚未解决的资金池提现。请参阅上面的通知规则。

📈 证明与传播力

证明 GitHub Claim Tracker 机器人监控能带来收益
→ 查看推文

迅速走红
→ 查看推文

刚刚在 Telegram 上发布了一个实时 PumpFun 情报机器人

17 个命令。零成本。完全链上运行。

/price → 即时查看代币价格和联合曲线
/monitor → 实时代币发行动态
/cto → 创建者接管提醒
/watch → 追踪钱包手续费申领情况
/quote → 买入/卖出估算
/graduated → AMM 毕业状态
/alerts → 自定义通知

所有功能均由开源 pump-fun-sdk 提供支持

→ 查看原帖

一切由此开始的帖子
→ 查看推文

想了解更多?来看看 PumpKit 💊💚

用于在 Solana 上构建 PumpFun Telegram 机器人的开源框架。申领监控、频道动态、群组追踪、巨鲸提醒——构建自己的机器人,或使用我们的机器人。

PumpKit Web App + 文档


🚀 快速开始

安装
# npm
npm install @nirholas/pump-sdk

# yarn
yarn add @nirholas/pump-sdk

# pnpm
pnpm add @nirholas/pump-sdk
对等依赖

SDK 需要以下 Solana 软件包(如果尚未安装,请先安装):

npm install @solana/web3.js @solana/spl-token @coral-xyz/anchor bn.js
最简示例
import { Connection, PublicKey } from "@solana/web3.js";
import { OnlinePumpSdk } from "@nirholas/pump-sdk";

// 1. Create an online SDK instance
const connection = new Connection("https://api.mainnet-beta.solana.com");
const sdk = new OnlinePumpSdk(connection);

// 2. Fetch current token state
const mint = new PublicKey("YourTokenMintAddress...");
const summary = await sdk.fetchBondingCurveSummary(mint);

console.log("Market Cap:", summary.marketCap.toString(), "lamports");
console.log("Graduated:", summary.isGraduated);
console.log("Progress:", summary.progressBps / 100, "%");

💻 pump CLI

SDK 附带一个二进制文件。对于任何读取链上数据的操作,都无需钱包、API 密钥或配置。

npm install -g @nirholas/pump-sdk

pump curve <mint>                  # price, market cap, graduation meter, fee tier
pump quote buy <mint> --sol 1      # what 1 SOL really buys, after fees and impact
pump watch <mint>                  # live dashboard
pump doctor                        # check your RPC, wallet, and balance in one shot

也可以不安装任何内容:npx -p @nirholas/pump-sdk pump curve <mint>。

FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump live on the bonding curve
────────────────────────────────────────────────────────────

  Market cap   93.705347 SOL
  Buy price    0.000000096 SOL per token
  Sell price   0.000000091 SOL per token
  Trading fee  1.25% 0.95% protocol + 0.3% creator

  Graduation  ███████████████░░░░░░░░░ 61.39%

  SOL to graduate   60.684661 SOL
  SOL in curve      24.921536 SOL
  Tokens left       306.21M of 793.1M
命令功能
pump curve / price / pool / global读取联合曲线、价格、AMM 池和协议状态
pump quote buy|sell离线估算交易:输出、手续费、实际价格、价格影响
pump buy / sell交易,并在联合曲线和 PumpAMM 之间自动路由
pump create发行代币,可选择同时原子性地进行首次买入
pump vanity生成以 ...pump 结尾的铸币地址
pump fees / incentives查看并申领创建者手续费和交易量奖励
pump watch实时刷新的仪表板,或 JSON 价格数据流
pump events解码任意交易中的 Pump 事件
pump pda派生任意 Pump 程序地址
pump doctor / config诊断和配置

默认安全。 读取操作绝不会加载密钥对。每笔交易都会先模拟,再打印即将执行的操作,并等待明确确认。--simulate 不会发送任何内容;--yes 是用于脚本的快捷选项;通过管道运行且未指定这两个选项的命令会拒绝执行,而不会在无人值守时花费资金。

支持脚本化。 每个命令都支持 --json,在此模式下不会向 stdout 写入其他内容:

pump curve <mint> --json | jq .marketCapSol
pump watch <mint> --json --interval 10 | jq -r '"\(.at)  \(.marketCapSol) SOL"'
pump events <sig> --json | jq '.events[] | select(.type=="trade")'

完整参考:docs/cli.md。十分钟快速教程:tutorial 45。


🧪 50 个可运行示例

代码库附带 50 个经过测试且可运行的示例,涵盖整个 SDK。每个示例都可通过一条命令运行,导出其逻辑以便离线测试,并配有对应的分步教程。

git clone https://github.com/nirholas/pump-fun-sdk && cd pump-fun-sdk && npm install
npm run example        # list all 50
npm run example 11     # offline buy quotes
npm run test:examples  # run every example's test suite offline
范围类别
01-10代币生命周期:创建、买入、卖出、混乱模式、返现
11-20联合曲线数学与手续费:离线报价、等级、价格影响
21-30账户与事件:所有 PDA、所有解码器
31-40实时数据:主网读取、批处理、WebSocket 数据流
41-50AMM 与进阶:资金池、流动性、手续费分成、激励、靓号铸币地址

完整目录:docs/examples.md · 浏览:examples/ · 教程:tutorials/examples/


📖 使用示例

创建代币
import { Keypair } from "@solana/web3.js";
import { PUMP_SDK } from "@nirholas/pump-sdk";

const mintKeypair = Keypair.generate();
const creator = wallet.publicKey;

const createIx = await PUMP_SDK.createV2Instruction({
  mint: mintKeypair.publicKey,
  name: "My Token",
  symbol: "MYTKN",
  uri: "https://arweave.net/metadata.json",
  creator,
  user: creator,
  mayhemMode: false,
});

// createIx is a TransactionInstruction — add to a Transaction and send

警告:请勿使用 createInstruction——它已弃用(v1)。请始终使用 createV2Instruction。

创建持有者奖励代币

设置 holderReward: true,即可将创建者费用定向到协议派生的持有者奖励 PDA。Pump.fun 会自动将这些费用分发给持有者;持有者无需提交领取请求。

const createIx = await PUMP_SDK.createV2Instruction({
  mint: mintKeypair.publicKey,
  name: "Holder Helper",
  symbol: "HOLD",
  uri: "https://example.com/holder-helper.json",
  creator: wallet.publicKey,
  user: wallet.publicKey,
  mayhemMode: false,
  holderReward: true,
});

如需原子化启动并进行初始买入,请将相同的标志传递给 createV2AndBuyInstructions;SDK 会通过 creatorVaultPda(holderRewardsPda(mint)) 路由买入。运行完整的无广播演示:

npm run example 51。

新创建的返现代币已弃用,且会被拒绝。现有返现代币仍可交易,已累计的返现金额仍可领取。

创建具有 ...pump 短地址的代币铸币地址

以 pump 结尾的代币铸币地址(例如 pump.fun 上的地址)通过链下穷举密钥对生成。SDK 将此功能作为一等辅助工具提供——将 Keypair.generate() 替换为 generateVanityMint(),其余流程保持不变。

import { generateVanityMint, PUMP_SDK } from "@nirholas/pump-sdk";

// Grind until we find a mint whose address ends in "pump" (~11M attempts, ~1–4 min in Node)
const { keypair: mintKeypair } = await generateVanityMint({ suffix: "pump" });

const createIx = await PUMP_SDK.createV2Instruction({
  mint: mintKeypair.publicKey,  // ← ends in "pump"
  name: "My Token",
  symbol: "MYTKN",
  uri: "https://arweave.net/metadata.json",
  creator: wallet.publicKey,
  user: wallet.publicKey,
  mayhemMode: false,
});

// Sign the transaction with BOTH the payer and the mint keypair.
// tx.sign([wallet, mintKeypair]);

支持 prefix、suffix、caseInsensitive、maxAttempts、onProgress 和 AbortSignal。对于长度超过 4 个字符的模式,请使用 rust/ 中的多线程 Rust 生成器。有关完整的端到端流程和可运行的 devnet 示例,请参阅教程 13:短地址。

在联合曲线上买入代币
import { Connection, PublicKey } from "@solana/web3.js";
import BN from "bn.js";
import { getBuyTokenAmountFromSolAmount, OnlinePumpSdk } from "@nirholas/pump-sdk";

const connection = new Connection("https://api.mainnet-beta.solana.com");
const sdk = new OnlinePumpSdk(connection);

const mint = new PublicKey("TokenMintAddress...");
const user = wallet.publicKey;

// Fetch all required state in parallel — buyState includes tokenProgram (auto-detected)
const [buyState, global, feeConfig] = await Promise.all([
  sdk.fetchBuyState(mint, user),
  sdk.fetchGlobal(),
  sdk.fetchFeeConfig(),
]);

assert(!buyState.bondingCurve.complete, "Token has already graduated to AMM");

// Calculate expected tokens for 0.1 SOL
const solAmount = new BN(100_000_000); // 0.1 SOL in lamports
const expectedTokens = getBuyTokenAmountFromSolAmount({
  global,
  feeConfig,
  mintSupply: buyState.bondingCurve.tokenTotalSupply,
  bondingCurve: buyState.bondingCurve,
  amount: solAmount,
});

// buyState spreads: bondingCurveAccountInfo, bondingCurve, associatedUserAccountInfo, tokenProgram
const buyIxs = await sdk.buyInstructions({
  ...buyState,
  mint,
  user,
  amount: expectedTokens,
  solAmount,
  slippage: 0.05,         // 5% slippage tolerance
});
// buyIxs is TransactionInstruction[] — compose into a VersionedTransaction and send

注意:fetchBuyState 会自动检测代币使用 SPL Token 还是 Token-2022,并据此返回 tokenProgram。务必将 ...buyState 展开传递给 buyInstructions,以确保使用正确的程序。

卖出代币
import BN from "bn.js";
import { getSellSolAmountFromTokenAmount, OnlinePumpSdk } from "@nirholas/pump-sdk";

const sdk = new OnlinePumpSdk(connection);

// Fetch required state in parallel
// Pass buyState.tokenProgram if you have it to avoid a second mint account fetch
const [sellState, global, feeConfig] = await Promise.all([
  sdk.fetchSellState(mint, user),
  sdk.fetchGlobal(),
  sdk.fetchFeeConfig(),
]);

const tokenAmount = new BN(1_000_000_000); // amount in raw units (6 decimals)
const expectedSol = getSellSolAmountFromTokenAmount({
  global,
  feeConfig,
  mintSupply: sellState.bondingCurve.tokenTotalSupply,
  bondingCurve: sellState.bondingCurve,
  amount: tokenAmount,
});

// sellState spreads: bondingCurveAccountInfo, bondingCurve, tokenProgram
const sellIxs = await sdk.sellInstructions({
  ...sellState,
  mint,
  user,
  amount: tokenAmount,
  solAmount: expectedSol,
  slippage: 0.05,
});

注意:fetchSellState 会返回 tokenProgram(根据代币铸币地址自动检测)。务必将 ...sellState 展开传递给 sellInstructions。

检查毕业进度
import { OnlinePumpSdk } from "@nirholas/pump-sdk";

const sdk = new OnlinePumpSdk(connection);
const progress = await sdk.fetchGraduationProgress(mint);

console.log(`Progress: ${progress.progressBps / 100}%`);
console.log(`Graduated: ${progress.isGraduated}`);
console.log(`Tokens remaining: ${progress.tokensRemaining.toString()}`);
console.log(`SOL accumulated: ${progress.solAccumulated.toString()}`);
设置费用分成
import { PublicKey } from "@solana/web3.js";
import { PUMP_SDK } from "@nirholas/pump-sdk";

// Create a fee sharing config (creator only, before or after graduation)
const createConfigIx = await PUMP_SDK.createFeeSharingConfig({
  creator: wallet.publicKey,
  mint: tokenMint,
  pool: null,  // null for pre-graduation tokens
});

// Update shareholders (must total exactly 10,000 BPS = 100%)
const updateIx = await PUMP_SDK.updateFeeShares({
  authority: wallet.publicKey,
  mint: tokenMint,
  currentShareholders: [wallet.publicKey],
  newShareholders: [
    { address: wallet.publicKey, shareBps: 7000 },         // 70%
    { address: new PublicKey("Partner..."), shareBps: 3000 }, // 30%
  ],
});

警告:份额总和必须恰好为 10,000 BPS。否则,SDK 会抛出 InvalidShareTotalError。股东最多 10 位。


📚 API 参考

完整的 API 文档(包含完整的 TypeScript 签名、参数和示例)请参阅 docs/api-reference.md。

核心类
类说明
PumpSdk离线指令构建器——无需 RPC 连接
OnlinePumpSdk扩展 PumpSdk,提供用于获取账户状态的函数
PUMP_SDK预先实例化的 PumpSdk 单例
联合曲线函数
函数返回值说明
getBuyTokenAmountFromSolAmount(...)BN给定 SOL 数量可收到的代币数量
getBuySolAmountFromTokenAmount(...)BN给定代币数量所需的 SOL
getSellSolAmountFromTokenAmount(...)BN卖出代币可收到的 SOL
bondingCurveMarketCap(...)BN以报价代币铸币地址的基本单位表示的当前市值
newBondingCurve(global, quoteMint?, ...)BondingCurve根据全局配置创建新的联合曲线,适用于任意报价代币铸币地址
getBuyV3QuoteAmountFromTokenAmount(...)BNbuy_v3 的成本,包括合成迁移完成后的部分
getBuyV3TokenAmountFromQuoteAmount(...)BNbuy_exact_quote_in_v3 在给定报价预算下买入的代币数量
pumpQuoteReserves(global, quote){ virtualQuoteReserves, depth }create_v2 为以 pump 代币报价的代币推导出的初始储备
分析函数
函数返回值说明
calculateBuyPriceImpact(...)PriceImpactResult买入交易的价格影响
calculateSellPriceImpact(...)PriceImpactResult卖出交易的价格影响
getGraduationProgress(...)GraduationProgress联合曲线完成百分比
getTokenPrice(...)TokenPriceInfo当前每个代币的买入/卖出价格
getBondingCurveSummary(...)BondingCurveSummary联合曲线完整概览
费用函数
函数返回值描述
getFee(...)BN交易的费用金额
computeFeesBps(...)CalculatedFeesBps当前费用基点(协议 + 创建者)
calculateFeeTier(...)Fees给定市值对应的费用等级
selectCurveFeeSchedule(...)Fees按报价铸币选择费用方案(类 SOL 等级、稳定币等级或其他币种的固定费用)
2026 年 10 月程序升级(3.0.0)
构建器描述
buyV3Instructions / buyExactQuoteInV3Instructions / sellV3InstructionsSOL 和以代币报价的曲线的 v3 交易;费用留在曲线上,等待归集
buyV2Instructions / buyExactQuoteInV2Instructions / sellV2Instructions交易时直接支付费用的 v2 曲线交易;适用于返现币
ammBuyV2Instruction / ammBuyExactQuoteInV2Instruction / ammSellV2InstructionPumpSwap v2 交易;费用留在池中,等待归集
multiHopSwapInstructions一条精确输入路线,经过 pump 池和以 pump 币报价的曲线
sweepCreatorFeeInstruction / ammSweepCreatorFeeInstruction(以及协议对应版本)将 v3 / v2 交易留存的费用支付给创建者金库或协议收款方
OnlinePumpSdk.creatorFeeSweepInstructions(mint, payer)代币在分发、CTO 或更改费用分成前所需的全部归集操作
createV2Instruction({ quoteMint, pumpQuote, ... })创建以白名单、QuoteControl 列表中的铸币或 pump 币铸币报价的代币

各项功能的程序指南见 docs/pump-official/docs/instructions;SDK 相关内容见 docs/api-reference.md、docs/amm-trading.md 和 docs/bonding-curve-math.md。从 2.x 升级请参阅 CHANGELOG.md 中的 3.0.0 条目。

代币激励函数
函数返回值描述
totalUnclaimedTokens(...)BN尚未领取的 $PUMP 奖励代币
currentDayTokens(...)BN今日赚取的代币

🔗 链上程序

程序ID用途
Pump6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P创建、买卖和迁移绑定曲线
PumpAMMpAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA毕业后的 AMM 池——交易、流动性和费用
PumpFeespfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ费用分成配置和社交费用 PDA

🔧 配置

构造函数

SDK 无需任何必需的环境变量。通过构造函数进行配置:

参数类型必需描述
connectionConnection仅适用于 OnlinePumpSdkSolana RPC 连接
关键常量
常量值描述
PUMP_PROGRAM_ID6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P主 Pump 程序
PUMP_AMM_PROGRAM_IDpAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEAAMM 程序
PUMP_FEE_PROGRAM_IDpfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ费用程序
PUMP_TOKEN_MINTpumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn$PUMP 代币铸币地址
MAX_SHAREHOLDERS10费用分成中的最大股东数
ONE_BILLION_SUPPLY1000000000000000具有 6 位小数的 10 亿枚代币
BONDING_CURVE_NEW_SIZE151绑定曲线账户大小,单位为字节

⚠️ 错误处理

SDK 为费用分成验证定义了类型化错误:

错误原因修复方法
NoShareholdersError股东数组为空至少提供 1 位股东
TooManyShareholdersError股东超过 10 位将人数减少至 ≤ 10 位
ZeroShareError某位股东的 BPS 为 0 或负数将所有份额设为正数
InvalidShareTotalError份额总和不等于 10,000 BPS确保份额总和恰好为 10,000
DuplicateShareholderError同一地址出现两次移除重复地址
ShareCalculationOverflowErrorBPS 总和超出安全整数范围检查份额值
PoolRequiredForGraduatedError已毕业代币的 pool 为 null传入来自 fetchPool() 的池地址
常见陷阱

警告:绝不要使用 JavaScript number 表示代币或 lamport 数量。始终使用 bn.js 中的 BN。JavaScript 数字超过 2^53 后会失去精度。

警告:交易前检查 bondingCurve.complete。如果为 true,代币已毕业并进入 AMM 阶段,应改用 ammBuyInstruction/ammSellInstruction。

警告:createInstruction 已弃用。所有新代币创建都请使用 createV2Instruction。


❓ 常见问题

问:使用 SDK 需要 RPC 连接吗? 不需要。PumpSdk(以及 PUMP_SDK 单例)可以离线构建指令。只有在需要获取链上状态时才使用 OnlinePumpSdk。

问:如何判断代币是否已毕业并进入 AMM? 检查 bondingCurve.complete === true,或使用 sdk.isGraduated(mint)。已毕业的代币在 PumpAMM 上交易,而非使用联合曲线。

问:买入/卖出指令中的 slippage 是什么? 一个小数比例(例如,0.05 = 5%)。SDK 会调整 maxSolCost(买入)或 minSolOutput(卖出),以防范价格波动。

问:为什么数量使用 BN 而不是 number? Solana 代币数量(lamport、代币单位)经常超过 JavaScript 的安全整数上限(2^53)。BN 可提供任意精度的算术运算。

问:Pump 和 PumpAMM 程序有什么区别? Pump 负责联合曲线阶段(创建 → 毕业)。PumpAMM 负责毕业后的交易,使用恒定乘积 AMM 池。

问:费用分成如何运作? 代币创建者最多可将创建者费用分给 10 位股东。每位股东获得以基点表示的份额(1/10,000)。总和必须恰好为 10,000 BPS(100%)。

问:什么是 Mayhem Mode? 这是一种特殊的代币创建模式,使用随机化的联合曲线参数。使用 mayhemMode: true 创建的代币,其定价机制不可预测。

问:我可以在浏览器中使用 SDK 吗? 可以。SDK 没有特定于 Node.js 的依赖项。ESM 构建版本可通过打包工具在现代浏览器中运行。


🏗️ 架构

详细的系统设计、数据流图和模块说明,请参阅 docs/architecture.md。


🤝 贡献

欢迎贡献!CONTRIBUTING.md 中介绍了:

  • 开发环境设置
  • 分支命名和提交规范
  • 测试要求
  • PR 流程

📄 许可证

Apache-2.0 © nirholas


🙏 致谢

文档

完整文档网站:https://sdk.pumpk.it

  • 快速入门介绍安装和首次运行。
  • 示例提供可直接复制粘贴的代码片段。

Star 历史

Star 历史图表

支持这个项目

如果 pump-fun-sdk 为你节省了时间,请在 GitHub 上给它加星。其他开发者和 AI Agent 会通过星标找到值得信赖的代码仓库,而且给它加星只需点一下。

认识会用到它的人?发布到 X · 分享到 Bluesky · 分享到 LinkedIn · 提交到 Hacker News · 分享到 Reddit

同样为 AI Agent 打造

编码 Agent 和大模型工具可以直接读取此代码仓库:AGENTS.md、llms.txt、llms-full.txt。将 https://github.com/nirholas/pump-fun-sdk 提供给 Agent,它就能获取所需的上下文。

同一作者的更多项目

贡献者

贡献者

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。