
一个模型上下文协议(MCP)服务器,为AI应用程序如Claude Desktop和Cursor提供链上工具,使它们能够与Base网络和Coinbase API进行交互。
此MCP服务器通过提供工具扩展了任何MCP客户端的功能,使其能够在Base上执行任何操作:
该服务器与Base交互,由Base开发者工具和AgentKit驱动。
Base MCP旨在可扩展,允许您添加自己的第三方协议、工具和数据源。本节概述了如何扩展Base MCP服务器的新功能。
如果您想向Base MCP服务器添加新工具,请遵循以下步骤:
src/tools目录中为您的工具创建一个新目录index.ts:定义并导出您的工具。工具被定义为AgentKit ActionProviders。schemas.ts:定义您的工具的输入模式types.ts:定义您的工具所需类型utils.ts:您的工具的实用程序src/main.ts中的可用工具列表中Base MCP服务器遵循以下工具结构:
src/
├── tools/
│ ├── [TOOL_NAME]/ <-------------------------- 在此处添加目录
│ │ ├── index.ts (定义并导出工具)
│ │ ├── schemas.ts (定义输入模式)
│ └── utils/ (共享工具实用程序)
在为Base MCP开发新工具时:
有关如何为Base MCP做出贡献的更详细信息,包括添加新工具和协议,请参阅CONTRIBUTING.md文件。
# 全局安装
npm install -g base-mcp
# 或者在项目中本地安装
npm install base-mcp
一旦安装了包,您可以使用以下命令配置客户端:
base-mcp --init
克隆此仓库:
git clone https://github.com/base/base-mcp.git
cd base-mcp
安装依赖项:
npm install
构建项目:
npm run build
可选,全局链接:
npm link
创建一个.env文件,包含您的凭证:
# Coinbase API凭证
# 您可以从Coinbase开发者门户获取这些凭证:https://cdp.coinbase.com/
COINBASE_API_KEY_NAME=your_api_key_name
COINBASE_API_PRIVATE_KEY=your_private_key
# 钱包助记词(12或24个单词)
# 这是您的钱包助记词
SEED_PHRASE=your seed phrase here
# Coinbase项目ID(用于入金功能)
# 您可以从Coinbase开发者门户获取此项目ID
COINBASE_PROJECT_ID=your_project_id
# Alchemy API密钥(NFT功能所需)
# 您可以从https://alchemy.com获取此密钥
ALCHEMY_API_KEY=your_alchemy_api_key
# OpenRouter API密钥(可选,用于购买OpenRouter积分)
# 您可以从https://openrouter.ai/keys获取此密钥
OPENROUTER_API_KEY=your_openrouter_api_key
# 链ID(可选,用于Base Sepolia测试网)
# 使用84532用于Base Sepolia测试网
# 如果您想使用Base主网,则无需包含此参数
CHAIN_ID=your_chain_id
# Neynar API密钥(Farcaster功能所需)
# 您可以从https://neynar.com获取此密钥
NEYNAR_API_KEY=
测试MCP服务器,确保其正常工作:
npm test
此脚本将通过测试连接和可用工具来验证您的MCP服务器是否正常工作。
查看examples.md文件,了解如何通过Claude与Base MCP工具进行交互的详细示例。
要将此MCP服务器添加到Claude Desktop:
创建或编辑Claude Desktop配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json您可以通过Claude Desktop应用导航至Claude > 设置 > 开发者 > 编辑配置轻松访问此文件。
添加以下配置:
{
"mcpServers": {
"base-mcp": {
"command": "npx",
"args": ["-y", "base-mcp@latest"],
"env": {
"COINBASE_API_KEY_NAME": "your_api_key_name",
"COINBASE_API_PRIVATE_KEY": "your_private_key",
"SEED_PHRASE": "your seed phrase here",
"COINBASE_PROJECT_ID": "your_project_id",
"ALCHEMY_API_KEY": "your_alchemy_api_key",
"PINATA_JWT": "your_pinata_jwt",
"OPENROUTER_API_KEY": "your_openrouter_api_key",
"CHAIN_ID": "optional_for_base_sepolia_testnet"
},
"disabled": false,
"autoApprove": []
}
}
}
重启Claude Desktop以使更改生效。
检索您的钱包地址。
向Claude查询示例:
"我的钱包地址是什么?"
列出您的所有钱包余额。
向Claude查询示例:
"显示我的钱包余额。"
从您的钱包向另一个地址转移资金。
参数:
destination:要转移资金的目标地址assetId:要转移的资产IDamount:要转移的资金数量向Claude查询示例:
"将0.01 ETH转移到0x1234567890abcdef1234567890abcdef12345678。"
将智能合约部署到区块链。
参数:
constructorArgs:合约构造器的参数contractName:要部署的合约名称solidityInputJson:Solidity编译器的JSON输入,包含合约源代码和设置solidityVersion:Solidity编译器的版本向Claude查询示例:
"为我部署一个简单的ERC20代币合约。"
检查地址的声誉。
参数:
address:要检查的以太坊地址向Claude查询示例:
"0x1234567890abcdef1234567890abcdef12345678的声誉如何?"
获取给定资产在Morpho上的金库。
参数:
assetSymbol:用于筛选金库的资产符号(可选)向Claude查询示例:
"显示可用于USDC的Morpho金库。"
调用区块链上的合约函数。
参数:
contractAddress:要调用的合约地址functionName:要调用的函数名称functionArgs:传递给函数的参数abi:合约的ABIvalue:随交易发送的ETH值(可选)向Claude查询示例:
"调用合约0x1234567890abcdef1234567890abcdef12345678上的balanceOf函数。"
获取给定国家/地区子区域可用于入金的资产。
参数:
country:表示购买用户居住国的ISO 3166-1两位数国家代码字符串subdivision:ISO 3166-2两位数国家子区域代码(美国需要)向Claude查询示例:
"在美国纽约州我可以入金哪些资产?"
获取通过Coinbase进行资金入金的URL。
参数:
amountUsd:要入金的资金金额assetId:要入金的资产ID向Claude查询示例:
"我想入金价值100美元的ETH。"
获取ERC20代币的余额。
参数:
contractAddress:ERC20合约地址向Claude查询示例:
"我在合约0x1234567890abcdef1234567890abcdef12345678的代币余额是多少?"
将ERC20代币转移到另一个地址。
参数:
contractAddress:ERC20合约地址toAddress:接收者的地址amount:要转移的代币数量向Claude查询示例:
"将10 USDC转移到0x1234567890abcdef1234567890abcdef12345678。"
列出特定地址拥有的NFT。
参数:
ownerAddress:拥有NFT的所有者地址limit:返回的最大NFT数量(默认:50)向Claude查询示例:
"显示0x89A93a48C6Ef8085B9d07e46AaA96DFDeC717040拥有的NFT。"
将NFT转移到另一个地址。支持ERC721和ERC1155标准。
参数:
contractAddress:NFT合约地址tokenId:要转移的NFT的token IDtoAddress:接收者的地址amount:要转移的数量(仅用于ERC1155,默认:1)向Claude查询示例:
"将我的合约0x3F06FcF75f45F1bb61D56D68fA7b3F32763AA15c和token ID 56090175025510453004781233574040052668718235229192064098345825090519343038548的NFT转移到0x1234567890abcdef1234567890abcdef12345678。"
使用USDC购买OpenRouter积分。
参数:
amountUsd:要购买的积分金额,以美元计向Claude查询示例:
"购买价值20美元的OpenRouter积分。"
如果遇到问题:
欢迎贡献!请随时提交拉取请求。
对于如何为Base MCP做出贡献的详细指南,包括:
请参考我们的综合CONTRIBUTING.md指南。
基本贡献步骤:
git checkout -b feature/amazing-feature)git commit -m '添加一些精彩功能')git push origin feature/amazing-feature)请确保您的代码遵循现有风格,并包含适当的测试。