铃声
一个模块化的MCP(模型上下文协议)服务器,将您的生产力工具连接到AI助手。无缝集成啊哈!、Confluence、Jira、GitHub、Slack、Telegram、Quip、Pocketbase和Replicate到Claude、Cursor和其他MCP兼容客户端。
特性
| 集成 | 工具 | 功能 |
|---|
| 啊哈! | 13 | 产品、发布、史诗、功能、想法、评论、要求 |
| 汇流 | 7 | 页面、空格、搜索(CQL)、子页面、评论、附件 |
| Jira | 2 | 获取问题,使用JQL搜索 |
| GitHub | 4 | 拉取请求、差异、评论、内联评论 |
| Slack | 9 | 频道、消息、线程、反应、文件上传/下载 |
| 电报 | 8 | 消息、文件、反应、聊天信息 |
| 妙语 | 9 | 文档、文件夹、搜索、评论、编辑 |
| 口袋底座 | 21 | 集合、记录、设置、日志、文件、身份验证 |
| 复制 | 1 | 使用谷歌nano-banna生成AI图像 |
快速开始
直接通过npx使用klinklang-无需安装:
npx klinklang@latest
或全局安装:
npm install -g klinklang
klinklang
配置
环境变量
啊哈!
| 变量 | 必填 | 描述 |
|---|
AHA_HOST | 是的 | 你的啊哈!基本URL(例如。, https://your-company.aha.io) |
AHA_API_TOKEN | 是的 | API密钥 从“设置”>“个人”>“开发人员”>“API密钥” |
汇流
| 变量 | 必填 | 描述 |
|---|
CONFLUENCE_HOST | 是 | 您的Confluence基础URL(例如。, https://wiki.ariba.com) |
CONFLUENCE_API_TOKEN | 是的 | 个人访问令牌 (PAT)具有读取权限 |
Jira
| 变量 | 必填 | 描述 |
|---|
JIRA_HOST | 是 | 您的Jira基本URL(例如。, https://your-org.atlassian.net) |
JIRA_EMAIL_ADDRESS | 是 | 用于身份验证的电子邮件地址 |
JIRA_API_TOKEN | 是的 | Atlassian API令牌 |
GitHub
| 变量 | 必填 | 描述 |
|---|
GITHUB_HOST | 是的 | https://api.github.com 对于GitHub.com或您的GitHub企业URL(例如。, https://github.mycompany.com) |
GITHUB_API_TOKEN | 是的 | 个人访问令牌 和 repo 范围 |
Slack
| 变量 | 必填 | 描述 |
|---|
SLACK_API_TOKEN | 是 | 机器人令牌以开头 xoxb-.创建一个 Slack应用程序 具有适当的范围 |
电报
| 变量 | 必填 | 描述 |
|---|
TELEGRAM_BOT_TOKEN | 是 | 令牌来自 @植物学家 |
妙语
口袋底座
| 变量 | 必填 | 描述 |
|---|
POCKETBASE_HOST | 是 | 您的Pocketbase基本URL(例如。, https://pb.example.com) |
POCKETBASE_ADMIN_EMAIL | 是 | 超级用户/管理员电子邮件地址 |
POCKETBASE_ADMIN_PASSWORD | 是 | 超级用户/管理员密码 |
复制
| 变量 | 必填 | 描述 |
|---|
REPLICATE_API_TOKEN | 是的 | API令牌 来自Replicate |
模块选择
使用CLI选项或环境变量控制加载哪些模块:
| 方法 | 包含 | 排除 |
|---|
| CLI | --include jira,github | --exclude quip,slack |
| Env | KLINKLANG_INCLUDE=jira,github | KLINKLANG_EXCLUDE=quip,slack |
# CLI examples
npx klinklang@latest -- --include jira,github
npx klinklang@latest -- --exclude quip,slack
# Environment variable examples
KLINKLANG_INCLUDE=jira,github npx klinklang@latest
KLINKLANG_EXCLUDE=quip,slack npx klinklang@latest
优先: 如果同时设置了环境变量和CLI选项,则环境变量将覆盖这两个选项。 注: include 和 exclude 相互排斥(无论来源如何)。
可用工具
啊哈!
| 工具 | 说明 |
|---|
aha_list_products | 列出所有带有参考前缀的产品(工作区) |
aha_get_product | 通过ID或参考前缀(例如“GTT”)获取产品详细信息 |
aha_list_releases | 列出产品中的发布 |
aha_get_release | 通过ID或参考号获取发布详细信息(例如“GTT-R-1”) |
aha_list_epics | 在产品或发布中列出史诗 |
aha_get_epic | 通过ID或参考号获取史诗般的细节(例如“GTT-e-1”) |
aha_list_features | 按产品、版本或史诗列出功能 |
aha_get_feature | 通过ID或参考号获取功能详细信息(例如“GTT-123”) |
aha_list_ideas | 列出产品中的想法/反馈 |
aha_get_idea | 通过ID或参考号(例如“GTT-I-1”)获取创意细节 |
aha_list_comments | 列出对功能、史诗、想法或版本的评论 |
aha_list_requirements | 列出功能的要求(子项) |
aha_get_requirement | 通过ID或参考号获取需求详细信息 |
汇流
| 工具 | 说明 |
|---|
confluence_get_page | 通过ID或URL获取包含正文内容(Markdown)、元数据、标签和祖先的单个页面 |
confluence_search_pages | 使用CQL(汇流查询语言)搜索页面 |
confluence_list_child_pages | 在父页面下列出直接子页面 |
confluence_list_spaces | 列出带有键和名称的可用空间 |
confluence_get_space | 按键获取带有描述和主页的单个空间 |
confluence_list_comments | 在具有解决状态的页面上列出评论 |
confluence_list_attachments | 在包含文件信息和下载URL的页面上列出附件 |
Jira
| 工具 | 说明 |
|---|
jira_get_issue | 通过ID或密钥获取单个问题(例如。, PROJ-123) |
jira_search_issues | 使用JQL(Jira查询语言)搜索问题 |
GitHub
| 工具 | 说明 |
|---|
github_get_pull_request | 获取PR元数据、正文、审阅者和评论 |
github_get_pr_diff | 获取所有文件更改的统一差异 |
github_add_pr_comment | 在特定行添加内联评论 |
github_submit_review | 提交审核(批准、请求更改或评论) |
Slack
| 工具 | 说明 |
|---|
slack_list_channels | 列出机器人可以访问的频道 |
slack_get_conversation_history | 从频道获取消息历史记录 |
slack_get_thread_replies | 在一个帖子中获取所有回复 |
slack_get_user | 按ID获取用户信息 |
slack_send_message | 发送消息或帖子回复 |
slack_update_message | 编辑现有邮件 |
slack_add_reaction | 在消息中添加表情符号反应 |
slack_upload_file | 将本地文件上传到通道或线程 |
slack_download_file | 按文件ID下载文件 |
电报
| 工具 | 说明 |
|---|
telegram_get_chat | 通过ID或用户名获取聊天信息 |
telegram_send_message | 发送短信 |
telegram_update_message | 编辑短信 |
telegram_delete_message | 删除消息 |
telegram_send_document | 发送文件/文档 |
telegram_send_photo | 在线发送照片 |
telegram_download_file | 按ID下载文件 |
telegram_set_message_reaction | 对消息作出反应 |
妙语
| 工具 | 说明 |
|---|
quip_get_document | 获取文档元数据和HTML内容 |
quip_get_folder | 获取文件夹元数据和子列表 |
quip_search_documents | 按关键字搜索文档 |
quip_list_recent | 列出最近访问的文档 |
quip_list_comments | 列出对文档的评论 |
quip_create_document | 创建新文档 |
quip_append_document | 在文档中添加或预置内容 |
quip_edit_document | 编辑文档的特定部分 |
quip_add_comment | 添加注释或内联注释 |
口袋底座
| 工具 | 说明 |
|---|
pocketbase_list_collections | 列出所有具有架构的集合 |
pocketbase_get_collection | 按ID/名称获取单个集合 |
pocketbase_create_collection | 使用架构创建新集合 |
pocketbase_update_collection | 更新集合架构/规则 |
pocketbase_delete_collection | 删除集合和所有记录 |
pocketbase_truncate_collection | 删除所有记录,保留架构 |
pocketbase_list_records | 使用筛选功能列出/搜索记录 |
pocketbase_get_record | 按ID获取单个记录 |
pocketbase_create_record | 创建新记录 |
pocketbase_update_record | 更新现有记录 |
pocketbase_delete_record | 删除记录 |
pocketbase_get_settings | 获取所有应用设置 |
pocketbase_update_settings | 更新应用程序设置 |
pocketbase_test_s3 | 测试S3存储连接 |
pocketbase_test_email | 发送测试电子邮件 |
pocketbase_list_logs | 列出请求日志 |
pocketbase_get_log | 获取单个日志条目 |
pocketbase_get_log_stats | 获取聚合日志统计信息 |
pocketbase_get_file_url | 生成文件下载URL |
pocketbase_generate_file_token | 生成受保护的文件令牌 |
pocketbase_impersonate_user | 生成模拟令牌 |
复制
| 工具 | 说明 |
|---|
replicate_generate_image | 使用谷歌的纳米香蕉模型生成或编辑图像 |
客户端设置
克劳德桌面
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"klinklang": {
"command": "npx",
"args": ["-y", "klinklang@latest"],
"env": {
"AHA_HOST": "https://your-company.aha.io",
"AHA_API_TOKEN": "your-api-key",
"CONFLUENCE_HOST": "https://wiki.example.com",
"CONFLUENCE_API_TOKEN": "your-pat",
"JIRA_HOST": "https://your-org.atlassian.net",
"JIRA_EMAIL_ADDRESS": "you@company.com",
"JIRA_API_TOKEN": "your-token",
"GITHUB_HOST": "https://api.github.com",
"GITHUB_API_TOKEN": "ghp_your-token",
"SLACK_API_TOKEN": "xoxb-your-token",
"TELEGRAM_BOT_TOKEN": "your-bot-token",
"QUIP_API_TOKEN": "your-token",
"POCKETBASE_HOST": "https://pb.example.com",
"POCKETBASE_ADMIN_EMAIL": "admin@example.com",
"POCKETBASE_ADMIN_PASSWORD": "your-password",
"REPLICATE_API_TOKEN": "r8_your-token"
}
}
}
}
光标
添加到光标MCP设置(.cursor/mcp.json 在您的项目或全局配置中):
{
"mcpServers": {
"klinklang": {
"command": "npx",
"args": ["-y", "klinklang@latest", "--", "--exclude", "quip"],
"env": {
"AHA_HOST": "https://your-company.aha.io",
"AHA_API_TOKEN": "your-api-key",
"CONFLUENCE_HOST": "https://wiki.example.com",
"CONFLUENCE_API_TOKEN": "your-pat",
"JIRA_HOST": "https://your-org.atlassian.net",
"JIRA_EMAIL_ADDRESS": "you@company.com",
"JIRA_API_TOKEN": "your-token",
"GITHUB_HOST": "https://api.github.com",
"GITHUB_API_TOKEN": "ghp_your-token",
"SLACK_API_TOKEN": "xoxb-your-token",
"TELEGRAM_BOT_TOKEN": "your-bot-token",
"POCKETBASE_HOST": "https://pb.example.com",
"POCKETBASE_ADMIN_EMAIL": "admin@example.com",
"POCKETBASE_ADMIN_PASSWORD": "your-password",
"REPLICATE_API_TOKEN": "r8_your-token"
}
}
}
}
OpenAI Codex命令行界面
codex mcp add klinklang -- npx -y klinklang@latest
建筑
src/
├── index.ts # Entry point, module registration
├── core/
│ ├── service/
│ │ ├── env.service.ts # Environment variable handling
│ │ ├── file.service.ts # Temporary file output
│ │ └── module-config.service.ts # --include/--exclude parsing
│ └── utils/
│ ├── http.utils.ts # HTTP error formatting
│ └── tool.utils.ts # Handler wrappers (withErrorHandling, etc.)
├── aha/
│ ├── services/external/ # Aha! API client
│ └── tools/ # aha_* tool definitions
├── confluence/
│ ├── services/external/ # Confluence REST API client
│ └── tools/ # confluence_* tool definitions
├── jira/
│ ├── services/external/ # Jira API client
│ └── tools/ # jira_* tool definitions
├── github/
│ ├── services/external/ # GitHub API client
│ └── tools/ # github_* tool definitions
├── slack/
│ ├── services/external/ # Slack Web API client
│ └── tools/ # slack_* tool definitions
├── telegram/
│ ├── services/external/ # Telegram API client
│ └── tools/ # telegram_* tool definitions
├── quip/
│ ├── services/external/ # Quip API client
│ └── tools/ # quip_* tool definitions
├── pocketbase/
│ ├── services/external/ # Pocketbase API client
│ └── tools/ # pocketbase_* tool definitions
└── replicate/
├── services/external/ # Replicate API client
└── tools/ # replicate_* tool definitions
发展
设置
npm install
测试工具
使用JSON-RPC消息通过stdio测试MCP工具:
cat << 'EOF' | node dist/index.js
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"stdio-test","version":"0.0.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"jira_get_issue","arguments":{"issueIdOrKey":"PROJ-123"}}}
EOF
建筑
npm run build # Build with tsup
指南
代码检查
npm run lint # Check for issues
npm run lint:fix # Auto-fix issues
许可证
麻省理工学院