tlon-mcp-server
Enables interaction with Urbit ships via Tlon agents, supporting direct messaging, group management, channel operations, reactions, and profile management through natural language commands.
README
Tlon MCP Server
An MCP (Model Context Protocol) server that provides tools for interacting with Tlon agents.
Demo
https://github.com/user-attachments/assets/765847b2-df40-44c0-bfd3-c23eb609bbd8
Features
- send-dm tool: Send direct messages to other users by ship ID or nickname
- read-dm-history tool: Retrieve recent messages from a direct-message channel
- list-contacts tool: Get contacts with their nicknames and ship IDs
- groups & channels: List groups, channels, members, and read channel history
- posting & reactions: Send channel messages, react to posts, delete posts
- activity: Fetch mentions/replies and unread counts
- profiles: Get and update contact profiles
- Natural language support: Reference people by their nicknames ("Send a message to Brian")
Prerequisites
- Node.js (v16+)
- A running Urbit ship
Installation
- Clone the repository
- Navigate to the project directory
- Install dependencies:
npm install
Important: Always run npm install manually in the terminal before using with Claude Desktop or any other MCP client. This prevents installation output from interfering with the MCP protocol.
Configuration
Configure the server using environment variables:
| Variable | Description | Default |
|---|---|---|
URBIT_URL |
Full Urbit URL (preferred) | — |
URBIT_SHIP |
Your Urbit ship name (without ~) | zod |
URBIT_CODE |
Your Urbit +code | lidlut-tabwed-pillex-ridrup |
URBIT_HOST |
Urbit host | localhost |
URBIT_PORT |
Urbit port | 8080 |
PORT |
MCP server port (HTTP mode only) | 3001 |
MCP_TRANSPORT |
Transport type (http or stdio) | stdio |
Usage
Starting the server
# Start with default stdio transport
npm start
# Start with HTTP transport
export MCP_TRANSPORT=http && npm start
# Development mode with auto-reload
npm run dev
Setting up with Claude Desktop
The default stdio mode works seamlessly with Claude Desktop. Create or edit the Claude Desktop configuration file at:
~/Library/Application Support/Claude/claude_desktop_config.json
With the following content:
{
"mcpServers": {
"tlon-mcp": {
"command": "/bin/sh",
"args": ["-c", "cd /path/to/server && node index.js"]
}
}
}
Important: Be sure to run npm install in the server directory first before configuring Claude Desktop.
Using the tools with natural language
Once configured, you can use natural language commands:
Send a message to Brian
Show me my recent DM history with ~sampel-palnet
Who are my contacts?
Available Tools
send-dm
Sends a direct message to another ship.
Parameters:
recipient: The recipient's ship name (with ~) or nicknamemessage: The message text to send
Example usage:
Send a message to Brian saying "Let's meet tomorrow"
read-dm-history
Fetches the latest messages from a direct-message channel between your ship and another.
Parameters:
correspondent: The other ship's name (with ~) or nicknamecount(optional): How many messages to return (default 100, max 500)format(optional): Output format - "raw" or "formatted" (default "formatted")
Example usage:
Show me my last 50 messages with Dad
list-contacts
Retrieves your contacts list with ship IDs and nicknames.
Parameters:
format(optional): Output format - "raw" or "formatted" (default "formatted")
Example usage:
List all my contacts
create-group
Creates a new group owned by your ship.
Parameters:
name: Group name (auto-slugified for the URL)title(optional): Display title (defaults to name)description(optional): Group description
Example usage:
Create a group called "Weekend Projects"
list-groups
Lists all groups you are a member of.
Example usage:
What groups am I in?
get-group-info
Get detailed information about a specific group including metadata, channels, and member count.
Parameters:
group: Group flag (e.g.,~sampel-palnet/weekend-projects)
Example usage:
Tell me about the group ~bolbex-fogdys/my-group
list-group-members
List all members of a group with their roles.
Parameters:
group: Group flag (e.g.,~sampel-palnet/weekend-projects)
Example usage:
Who's in the Weekend Projects group?
invite-to-group
Invite one or more ships to a group.
Parameters:
group: Group flag (e.g.,~sampel-palnet/weekend-projects)ships: Array of ship names to invite (with ~)
Example usage:
Invite ~zod and ~bus to my Weekend Projects group
assign-role
Assign a role to a member in a group.
Parameters:
group: Group flagship: Ship to assign role to (with ~)role: Role ID to assign
remove-role
Remove a role from a member in a group.
Parameters:
group: Group flagship: Ship to remove role from (with ~)role: Role ID to remove
create-channel
Creates a new channel in an existing group.
Parameters:
group: Group flag (e.g.,~sampel-palnet/weekend-projects)type: Channel type —chat,notebook, orgalleryname: Channel name (auto-slugified for the URL)title(optional): Display title (defaults to name)description(optional): Channel description
Example usage:
Create a chat channel called "general" in my Weekend Projects group
Add a notebook called "dev-log" to ~bolbex-fogdys/my-group
Create a gallery channel called "screenshots" in ~sampel-palnet/weekend-projects
list-channels
List all channels in a group.
Parameters:
group: Group flag (e.g.,~sampel-palnet/weekend-projects)
Example usage:
What channels are in the Weekend Projects group?
get-channel-info
Get metadata about a specific channel.
Parameters:
channel: Channel nest (e.g.,chat/~sampel-palnet/general)
read-channel-history
Fetch recent messages from a channel.
Parameters:
channel: Channel nest (e.g.,chat/~sampel-palnet/general)count(optional): Number of messages to fetch (default 50, max 100)format(optional): Output format — "raw" or "formatted" (default "formatted")
Example usage:
Show me the last 20 messages in chat/~bolbex-fogdys/general
send-to-channel
Send a message to a channel.
Parameters:
channel: Channel nest (e.g.,chat/~sampel-palnet/general)message: Message text to send
Example usage:
Send "hello everyone" to chat/~bolbex-fogdys/general
react-to-post
Add an emoji reaction to a post.
Parameters:
channel: Channel nestpostId: Post ID (@ud format with dots)emoji: Emoji to react with
unreact-to-post
Remove your reaction from a post.
Parameters:
channel: Channel nestpostId: Post ID (@ud format with dots)
edit-post
Edit an existing post's content.
Parameters:
channel: Channel nestpostId: Post ID to edit (@ud format with dots)message: New message text
delete-post
Delete a post from a channel.
Parameters:
channel: Channel nestpostId: Post ID to delete
get-activity
Fetch recent activity and notifications.
Parameters:
type(optional): Filter by type — "all", "mentions", or "replies" (default "all")limit(optional): Number of items (default 10, max 25)
Example usage:
Show me my recent mentions
get-unreads
Get unread message counts across all channels.
Example usage:
Do I have any unread messages?
get-profile
Fetch another ship's profile information.
Parameters:
ship: Ship name (with ~)
Example usage:
What's ~zod's profile?
get-my-profile
Get your own profile information.
Example usage:
Show me my profile
update-profile
Update your own profile fields.
Parameters:
nickname(optional): Display namebio(optional): Bio/descriptionstatus(optional): Status messageavatar(optional): Avatar image URLcover(optional): Cover image URL
Example usage:
Set my nickname to "Captain Urbit"
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.