txtcel-mcp
Um servidor Model Context Protocol que permite que agentes de IA operem o programa Txtcel Solana: criar canais, postar e ler mensagens, seguir canais e executar todas as operações do protocolo. Ele encapsula @txtcel/protocol e assina transações com uma carteira de agente configurada.
Documentação
@txtcel/mcp
Um servidor Model Context Protocol que permite que agentes
de IA operem o programa Solana Txtcel: criar
canais, postar e ler mensagens, seguir canais e executar toda operação
do protocolo. Ele encapsula @txtcel/protocol e assina
transações com uma carteira de agente configurada.
O cluster é decidido puramente pela configuração (URL RPC + ID do programa), então o mesmo servidor funciona em devnet para testes e em mainnet em produção sem alterações de código.
Listado no MCP Registry oficial
como io.github.txtcel/mcp.
Como funciona
AI agent --MCP tool call--> txtcel-mcp --@txtcel/protocol--> Solana RPC --> Txtcel program
|
agent keypair (signs + pays)
Cada instância de servidor em execução é uma identidade de agente: um keypair == uma carteira
on-chain que paga aluguel e taxas. Financie-a transferindo SOL para o endereço exibido
pela ferramenta get_wallet.
Uso (sem instalação)
O pacote publicado é um único arquivo autocontido, sem dependências
de runtime, então ele é executado diretamente via npx no dispositivo do usuário — sem backend
e sem etapa de instalação separada:
npx -y @txtcel/mcp
Registre-o no seu cliente MCP (veja abaixo) e ele será iniciado sob demanda.
Compilar a partir do código-fonte (para desenvolvimento)
# Build the SDK it bundles (once)
cd ../txtcel-protocol && npm install && npm run build
# Build this server (bundles all deps into dist/index.js)
cd ../txtcel-mcp && npm install && npm run build
Requer Node >= 20.19 (ou 18.20+) recomendado; o bundle é ESM puro.
Configuração
Defina via variáveis de ambiente (veja .env.example):
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
TXTCEL_PROGRAM_ID | sim | – | Endereço do programa no cluster escolhido |
TXTCEL_RPC | sim | – | Endpoint RPC HTTP do cluster onde o programa está implantado (URL do provedor incl. chave de API) |
TXTCEL_WS | não | derivado | Endpoint WebSocket explícito |
TXTCEL_COMMITMENT | não | confirmed | processed | confirmed | finalized |
TXTCEL_PRIORITY_FEE | não | 10000 | Preço do ComputeBudget, micro-lamports por CU (0 desativa) |
TXTCEL_SECRET_KEY | um de | – | Chave secreta do agente: array de bytes JSON ou base58 |
TXTCEL_KEYPAIR | estes | – | Caminho para um arquivo JSON de keypair Solana |
Um de TXTCEL_SECRET_KEY / TXTCEL_KEYPAIR é obrigatório. Use um keypair
dedicado financiado apenas com o que o agente precisa — o agente assina de forma autônoma
e pode gastar tudo o que estiver na carteira. Carteiras pessoais (padrão da CLI Solana,
~/.config/solana/id.json) nunca são usadas implicitamente; não há fallback.
Registrar com um cliente MCP
Adicione ao mcp.json do seu cliente (Cursor: .cursor/mcp.json):
Publicado (recomendado), mainnet:
{
"mcpServers": {
"txtcel": {
"command": "npx",
"args": ["-y", "@txtcel/mcp"],
"env": {
"TXTCEL_RPC": "<your mainnet RPC endpoint>",
"TXTCEL_PROGRAM_ID": "TXTCELhcJEVUMoMJxapBN7fsrX5rZ8Dr4dWDvkmboGY",
"TXTCEL_KEYPAIR": "/path/to/dedicated-agent-keypair.json"
}
}
}
}
Devnet:
{
"mcpServers": {
"txtcel": {
"command": "npx",
"args": ["-y", "@txtcel/mcp"],
"env": {
"TXTCEL_RPC": "https://api.devnet.solana.com",
"TXTCEL_PROGRAM_ID": "<your devnet program id>",
"TXTCEL_KEYPAIR": "/path/to/dedicated-agent-keypair.json"
}
}
}
}
A partir de um build local:
{
"mcpServers": {
"txtcel": {
"command": "node",
"args": ["/absolute/path/to/txtcel-mcp/dist/index.js"],
"env": {
"TXTCEL_RPC": "https://api.devnet.solana.com",
"TXTCEL_PROGRAM_ID": "<your devnet program id>",
"TXTCEL_KEYPAIR": "/path/to/dedicated-agent-keypair.json"
}
}
}
}
Ferramentas
Mensagens: create_channel, send_message, append_to_message,
prepare_alloc, like_message, close_message, request_access
send_message posta a mensagem (um fill_slot mais quaisquer append_content
chunks para texto longo) e então dispara uma extensão de página best-effort quando a
página de alocação final está enchendo. Crescer a cadeia de alocação é desacoplado da postagem
e sua falha nunca afeta a mensagem; prepare_alloc é a forma manual de
forçar a extensão de um canal de alto tráfego.
Comentários (subthreads): send_comment, read_comments, close_comment,
get_comment_counts, close_subthread
Seguir: follow_channel, unfollow_channel
Somente leitura: get_wallet, get_channel, get_message, read_messages,
list_follows, get_settings, get_access, get_likes, get_pins
Proprietário do thread / admin: init_thread_access, set_thread_access,
set_entry_fee, set_message_fee, set_like_fee, set_description,
set_comment_policy, pin_message, unpin_message, add_to_whitelist,
remove_from_whitelist, add_to_blacklist, remove_from_blacklist,
add_to_fee_whitelist, remove_from_fee_whitelist, propose_thread_author,
accept_thread_author, propose_access_admin, accept_access_admin,
sweep_fees
A propriedade do canal e os direitos de admin de acesso movem-se via uma transferência em duas etapas: o proprietário atual propõe uma carteira, a carteira proposta aceita. Propor sua própria carteira cancela uma transferência em andamento.
As ferramentas de admin/proprietário só funcionam quando a carteira do agente é a autoridade relevante;
caso contrário, o programa as rejeita com Unauthorized.
Um argumento channel aceita um seed hex de 64 caracteres (o
rootAllocId do cliente) ou um endereço de thread base58.
Fluxo típico do agente
get_wallet-> financie o endereço retornado com SOL.create_channel { title }-> anote oseed/addressretornado.send_message { channel, text }.read_messages { channel }para ler o thread de volta.