feat: initial release with 48 Mattermost MCP tools

- 27 base tools: channels, messaging, users, reactions, files, DMs
- Team management: invite/remove users, get stats, list members
- Slash commands: execute /remind, /poll, etc.
- Webhook management: incoming and outgoing webhooks
- System tools: server config, logs, bulk status updates
- Channel admin: create, invite, leave, delete channels
- Read-only mode for safe exploration
- Dual token support (bot + PAT) for enhanced security
- Apache 2.0 licensed
This commit is contained in:
2026-04-15 21:14:47 -07:00
commit 35a0b2b715
52 changed files with 10495 additions and 0 deletions
+99
View File
@@ -0,0 +1,99 @@
package operation
import (
"github.com/karti-ai/mattermost-mcp-server/operation/channel"
"github.com/karti-ai/mattermost-mcp-server/operation/command"
"github.com/karti-ai/mattermost-mcp-server/operation/dm"
"github.com/karti-ai/mattermost-mcp-server/operation/file"
"github.com/karti-ai/mattermost-mcp-server/operation/messaging"
"github.com/karti-ai/mattermost-mcp-server/operation/outgoing"
"github.com/karti-ai/mattermost-mcp-server/operation/reaction"
"github.com/karti-ai/mattermost-mcp-server/operation/system"
"github.com/karti-ai/mattermost-mcp-server/operation/team"
"github.com/karti-ai/mattermost-mcp-server/operation/user"
"github.com/karti-ai/mattermost-mcp-server/operation/webhook"
"github.com/karti-ai/mattermost-mcp-server/pkg/flag"
"github.com/karti-ai/mattermost-mcp-server/pkg/log"
"github.com/karti-ai/mattermost-mcp-server/pkg/tool"
"github.com/mark3labs/mcp-go/server"
)
func Register() []server.ServerTool {
log.Infof("Registering tools for Mattermost MCP server %s", flag.Version)
tools := tool.New()
for _, t := range messaging.Tool.WriteTools() {
tools.RegisterWrite(t)
}
for _, t := range file.Tool.WriteTools() {
tools.RegisterWrite(t)
}
for _, t := range dm.Tool.WriteTools() {
tools.RegisterWrite(t)
}
for _, t := range reaction.Tool.WriteTools() {
tools.RegisterWrite(t)
}
for _, t := range channel.AdminTool.WriteTools() {
tools.RegisterWrite(t)
}
for _, t := range messaging.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range file.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range channel.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range user.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range team.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range dm.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range reaction.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range webhook.Tool.WriteTools() {
tools.RegisterWrite(t)
}
for _, t := range webhook.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range command.Tool.WriteTools() {
tools.RegisterWrite(t)
}
for _, t := range outgoing.Tool.WriteTools() {
tools.RegisterWrite(t)
}
for _, t := range outgoing.Tool.ReadTools() {
tools.RegisterRead(t)
}
for _, t := range system.Tool.ReadTools() {
tools.RegisterRead(t)
}
return tools.Tools()
}