一个Solana MCP服务器。

要安装并使用@cubie-ai/solana-mcp包,请使用以下命令:
npm i @cubie-ai/solana-mcp
阅读文档:文档
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { solanaMCPServer } from "../../dist";
import { SOLANA_RPC_URL } from "./contants";
async function main() {
await solanaMCPServer({
transport: new StdioServerTransport(),
config: {
solanaRpcUrl: SOLANA_RPC_URL,
commitment: "confirmed",
},
});
}
main();
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
import { solanaMCPClient } from "../../dist";
const CUBIE_MINT = "2MH8ga3TuLvuvX2GUtVRS2BS8B9ujZo3bj5QeAkMpump";
async function main() {
const transport = new StdioClientTransport({
args: ["dist/server.js"],
command: "node",
});
const client = await solanaMCPClient({
name: "Solana MCP Client",
version: "1.0.0",
transport: transport,
});
const tools = await client.listTools();
console.dir(tools, { depth: null });
const supply = await client.callTool({
name: "getTokenSupply",
arguments: {
mint: CUBIE_MINT,
},
});
console.dir(supply, { depth: null });
}
main();
运行示例将产生以下输出
{
tools: [
{
name: "getTokenHolders",
description: "获取特定铸币地址的代币持有者",
inputSchema: {
type: "object",
properties: { mint: { type: "string" } },
required: ["mint"],
additionalProperties: false,
$schema: "http://json-schema.org/draft-07/schema#",
},
},
{
name: "getTokenSupply",
description: "获取特定代币的总供应量",
inputSchema: {
type: "object",
properties: { mint: { type: "string" } },
required: ["mint"],
additionalProperties: false,
$schema: "http://json-schema.org/draft-07/schema#",
},
},
{
name: "getTokenProgramByMintAddress",
description: "通过铸币地址获取代币程序",
inputSchema: {
type: "object",
properties: { mint: { type: "string" } },
required: ["mint"],
additionalProperties: false,
$schema: "http://json-schema.org/draft-07/schema#",
},
},
{
name: "getAddressBalance",
description: "获取特定地址的余额",
inputSchema: {
type: "object",
properties: { address: { type: "string" } },
required: ["address"],
additionalProperties: false,
$schema: "http://json-schema.org/draft-07/schema#",
},
},
{
name: "getAddressHoldings",
description: "获取特定地址的持有情况",
inputSchema: {
type: "object",
properties: { address: { type: "string" } },
required: ["address"],
additionalProperties: false,
$schema: "http://json-schema.org/draft-07/schema#",
},
},
{
name: "getSignaturesForAddress",
description: "获取特定地址的签名",
inputSchema: {
type: "object",
properties: { address: { type: "string" } },
required: ["address"],
additionalProperties: false,
$schema: "http://json-schema.org/draft-07/schema#",
},
},
{
name: "getJupiterQuote",
description: "从Jupiter获取特定交换的报价",
inputSchema: {
type: "object",
properties: {
inputMint: { type: "string" },
outputMint: { type: "string" },
amount: { type: "string" },
slippage: { type: "string" },
},
required: ["inputMint", "outputMint", "amount"],
additionalProperties: false,
$schema: "http://json-schema.org/draft-07/schema#",
},
},
{
name: "getPrice",
description: "获取特定代币的价格",
inputSchema: {
type: "object",
properties: {
inputMint: { type: "string" },
outputMint: {
type: "string",
default: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
},
},
required: ["inputMint"],
additionalProperties: false,
$schema: "http://json-schema.org/draft-07/schema#",
},
},
];
}
{
content: [
{
type: "text",
text: '{"amount":"999725949874932","decimals":6,"uiAmount":999725949.874932,"uiAmountString":"999725949.874932"}',
},
];
}