Atr
是一个基于 MCP(Model Context Protocol)协议构建的服务器项目,能为音乐、社交和区块链相关功能提供有力支持。本项目通过集成 Audius SDK,为开发者提供了一套完整的工具集。
npm install @audius/audius-sdk @modelcontextprotocol/mcp-server
创建 config.ts
文件:
export const config = {
port: 3000,
audiusNodeUrl: 'https://nodes.audius.org',
ethProviderUrl: 'https://eth-mainnet.g.alchemy.com/v2/your-api-key'
}
npm run dev
config.ts
文件包含以下配置项:
port
:服务监听端口,默认 3000。audiusNodeUrl
:Audius 网络节点 URL。ethProviderUrl
:以太坊 RPC 提供商地址。AtrSdkClient
封装 Audius SDK 的常用操作,提供简洁的接口:
class AtrSdkClient {
private audiusSdk: AudiusSDK
constructor(config: Config) {
this.audiusSdk = new AudiusSDK({
nodeUrl: config.audiusNodeUrl,
ethProvider: config.ethProviderUrl
})
}
async getTrack(trackId: string): Promise<Track> {
return await this.audiusSdk.getTrack(trackId)
}
}
McpServer
实现 MCP 协议的服务器端逻辑:
class McpServer {
private port: number
constructor(private config: Config) {
this.port = config.port
}
async start(): Promise<void> {
const server = new Server()
// 注册所有工具和资源
registerMcpTools(server, this.config)
await server.listen(this.port)
console.log(`Server running on port ${this.port}`)
}
}
const trackId = '123'
const track = await atrSdkClient.getTrack(trackId)
const audioStream = await getAudioStream(trackId)
audioStream.pipeTo(audioElement)
await uploadMusic({
title: 'New Track',
artist: 'Your Name',
duration: 240,
audioFile: file
})
await postActivity('Check out my new track!', {
type: 'music',
trackId: '123'
})
await followUser('new_artist')
const user = await getUserInfo('new_artist')
await createNft({
name: 'Unique Track',
description: 'Limited edition music NFT',
trackId: '123'
})
await transferNft('123', 'buyer_address')
atrium/
├── src/
│ ├── config.ts # 项目配置文件
│ ├── server.ts # 服务器主程序
│ ├── tools/ # 工具模块集合
│ │ ├── atr-sdk-client.ts # Atr SDK 客户端实现
│ │ └── mcp-server.ts # MCP 协议服务器实现
│ └── resources/ # 资源管理模块
│ ├── music-resource.ts # 音乐资源管理
│ └── user-resource.ts # 用户资源管理
Track
interface Track {
id: string
title: string
artist: string
duration: number
audioUrl?: string | null
}
User
interface User {
id: string
username: string
followersCount: number
followingCount: number
}
npm install -g @modelcontextprotocol/mcp-inspector
mcp-inspect --host localhost:3000
const inspect = require('@modelcontextprotocol/mcp-inspector')
inspect('localhost:3000', {
// 添加检查逻辑
})
本项目遵循 MIT 许可证,具体条款参见 LICENSE
文件。