Unofficial dubco-mcp-server
非官方 dubco-mcp-server
用于创建和管理Dub.co短链接的模型上下文协议 (MCP) 服务器(非官方)。该服务器支持 AI 助手通过 Dub.co API 创建、更新和删除短链接。
🚀 功能
使用您的 Dub.co 域名创建自定义短链接
更新现有的短链接
删除短链接
通过模型上下文协议与人工智能助手无缝集成
Related MCP server: MCP API Server
📋 先决条件
Node.js 16.0.0 或更高版本
具有 API 访问权限的 Dub.co 帐户
Dub.co 仪表板上的 API 密钥
💻安装
通过 Smithery 安装
要通过Smithery自动为 Claude Desktop 安装 Dub.co MCP 服务器:
npx -y @smithery/cli install @Gitmaxd/dubco-mcp-server-npm --client claude全局安装
npm install -g dubco-mcp-server本地安装
npm install dubco-mcp-server直接使用 npx
npx dubco-mcp-server⚙️ 配置
此 MCP 服务器需要 Dub.co API 密钥才能运行。您可以从Dub.co 仪表板获取 API 密钥。
将 API 密钥设置为环境变量:
export DUBCO_API_KEY=your_api_key_here对于持久配置,请将其添加到您的 shell 配置文件(例如.bashrc 、 .zshrc ):
echo 'export DUBCO_API_KEY=your_api_key_here' >> ~/.zshrc🖥️ Cursor IDE 设置
Cursor IDE 原生支持 MCP 服务器。请按照以下步骤在 Cursor 中设置 dubco-mcp-server:
步骤 1:安装 Cursor IDE
如果还没有,请下载并安装Cursor IDE (版本 0.4.5.9 或更高版本)。
第 2 步:打开光标设置
打开游标 IDE
单击左下角的齿轮图标,或使用键盘快捷键
Cmd+,(Mac) 或Ctrl+,(Windows/Linux)导航至“功能”部分
向下滚动找到“MCP 服务器”部分
步骤 3:添加 MCP 服务器
点击“+ 添加新的 MCP 服务器”
在出现的对话框中:
名称:输入“Dub.co MCP Server”(或您喜欢的任何名称)
类型:从下拉菜单中选择“命令”
命令:输入
env DUBCO_API_KEY=your_api_key_here npx -y dubco-mcp-server(将your_api_key_here替换为您的实际 Dub.co API 密钥)
点击“保存”添加服务器
步骤 4:验证连接
添加 MCP 服务器后,您应该会在服务器名称旁边看到一个绿色的状态指示器。如果显示红色或黄色状态,请尝试:
检查您的 API 密钥是否正确
重启 Cursor IDE
验证 Node.js (16.0.0+) 是否正确安装
步骤5:使用服务器
dubco-mcp-server 提供了可与 Cursor 的 AI 功能一起使用的工具:
打开 Cursor 的 Composer 或 Agent 模式(MCP 仅在这些模式下有效)
明确指示 AI 使用 Dub.co 工具(create_link、update_link、delete_link)
当出现工具使用提示时接受它们
🔧 与 MCP 一起使用
此服务器提供可供 AI 助手通过模型上下文协议 (MCP) 使用的工具。要将其与兼容 MCP 的 AI 助手一起使用,请将其添加到您的 MCP 配置中。
MCP 配置示例
{
"mcpServers": {
"dubco": {
"command": "npx",
"args": ["-y", "dubco-mcp-server"],
"env": {
"DUBCO_API_KEY": "your_api_key_here"
},
"disabled": false,
"autoApprove": []
}
}
}可用工具
创建链接
在 Dub.co 上创建一个新的短链接。
参数:
{
"url": "https://example.com",
"key": "optional-custom-slug",
"externalId": "optional-external-id",
"domain": "optional-domain-slug"
}例子:
{
"url": "https://github.com/gitmaxd/dubco-mcp-server-npm",
"key": "dubco-mcp"
}更新链接
更新 Dub.co 上现有的短链接。
参数:
{
"linkId": "link-id-to-update",
"url": "https://new-destination.com",
"domain": "new-domain-slug",
"key": "new-custom-slug"
}例子:
{
"linkId": "clwxyz123456",
"url": "https://github.com/gitmaxd/dubco-mcp-server-npm/releases"
}删除链接
删除 Dub.co 上的短链接。
参数:
{
"linkId": "link-id-to-delete"
}例子:
{
"linkId": "clwxyz123456"
}🔍 工作原理
服务器使用您的 API 密钥连接到 Dub.co API,并通过模型上下文协议 (MCP) 为 AI 助手提供与 Dub.co 交互的标准化接口。调用工具时:
服务器验证输入参数
它向 Dub.co API 发送适当的请求
它处理响应并以 AI 助手可以理解的格式返回
🛠️ 开发
从源代码构建
git clone https://github.com/gitmaxd/dubco-mcp-server-npm.git
cd dubco-mcp-server-npm
npm install
npm run build以开发模式运行
npm run dev📝 许可证
该项目根据 ISC 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。
🔗 链接
👥 贡献
欢迎贡献代码!欢迎提交 Pull 请求。
分叉存储库
创建你的功能分支(
git checkout -b feature/amazing-feature)提交您的更改(
git commit -m 'Add some amazing feature')推送到分支(
git push origin feature/amazing-feature)打开拉取请求
👨💻 创建者
这个非官方的 Dub.co MCP 服务器是由GitMaxd (X 上的@gitmaxd )创建的。
这个项目是为了学习练习而开发的,旨在理解模型上下文协议 (MCP) 以及如何构建 MCP 服务器。我选择 Dub.co 作为集成目标,是因为它拥有直观的 API 和实用功能,是学习项目的理想选择。
虽然我与 Dub.co 没有正式关系,但我强烈推荐他们的服务,无论是手动还是自动创建短链接。他们的 API 文档齐全,使用方便,非常适合这类集成。
如果您觉得本项目有用,或者有任何改进建议,欢迎随时联系我们或为代码库贡献代码。祝您链接缩短愉快!
Available Tools
3 toolscreate_linkB
Create a new short link on dub.co, asking the user which domain to use
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The destination URL to shorten | |
| key | No | Optional custom slug for the short link. If not provided, a random slug will be generated. | |
| externalId | No | Optional external ID for the link | |
| domain | No | Optional domain slug to use. If not provided, the primary domain will be used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions domain selection but fails to describe key traits like authentication requirements, rate limits, error handling, or what happens on success (e.g., returns a short URL). For a creation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words, though it could be slightly more structured by explicitly mentioning the required 'url' parameter or output expectations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a creation tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the return value (e.g., the generated short link), error conditions, or behavioral nuances like idempotency. This leaves gaps for an AI agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by hinting at domain selection ('asking the user which domain to use'), but doesn't provide additional syntax, format details, or context for parameters like 'key' or 'externalId'. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new short link') and the resource ('on dub.co'), with a specific verb+resource combination. It distinguishes from siblings like 'delete_link' and 'update_link' by focusing on creation, though it doesn't explicitly contrast with 'upsert_link' which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when creating a short link on dub.co, with a hint about domain selection ('asking the user which domain to use'). However, it lacks explicit guidance on when to use this tool versus alternatives like 'upsert_link' or 'update_link', and doesn't mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_linkC
Delete a short link on dub.co
| Name | Required | Description | Default |
|---|---|---|---|
| linkId | Yes | The ID of the link to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool deletes a link, implying a destructive mutation, but doesn't mention whether this action is reversible, what permissions are required, how it affects associated data, or what happens on success/failure. For a destructive operation, this lack of detail is a significant gap, leaving the agent with insufficient information about behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core action without unnecessary words. It's front-loaded with the key verb 'Delete' and specifies the resource clearly. There's zero waste, making it easy for an agent to parse quickly while still being informative enough for basic understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature (deletion), no annotations, and no output schema, the description is incomplete. It doesn't address critical context like what 'delete' entails (permanent vs. soft delete), error handling, or return values. For a mutation tool with zero annotation coverage, the description should provide more behavioral and outcome details to be sufficiently complete for safe agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'linkId' clearly documented as 'The ID of the link to delete'. The description doesn't add any additional meaning beyond this, such as format examples or sourcing instructions. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema adequately handles parameter semantics without extra help from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('a short link on dub.co'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'create_link' or 'update_link', but the verb 'Delete' inherently distinguishes it from creation and modification operations. The description is specific enough to understand what the tool does without being tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update_link' or 'upsert_link'. It doesn't mention prerequisites (e.g., needing an existing link ID), error conditions, or typical use cases. While the action is clear, there's no context to help an agent decide between this and other link management tools in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_linkC
Update an existing short link on dub.co
| Name | Required | Description | Default |
|---|---|---|---|
| linkId | Yes | The ID of the link to update | |
| url | No | The new destination URL | |
| domain | No | The new domain for the short link | |
| key | No | The new slug for the short link |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an update operation but doesn't mention what permissions are required, whether changes are reversible, what happens to existing data not mentioned in parameters, or any rate limits. For a mutation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states exactly what the tool does without any wasted words. It's appropriately sized and front-loaded with the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens when the update succeeds or fails, what permissions are needed, or how this differs from sibling tools. Given the complexity of updating database records and the lack of structured safety information, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information beyond what the schema provides. According to scoring rules, when schema coverage is high (>80%), the baseline score is 3 even with no parameter information in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('an existing short link on dub.co'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'upsert_link' which might also update links, leaving some ambiguity about when to choose one over the other.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'upsert_link' or 'create_link'. It mentions 'existing short link' which implies a prerequisite that the link must already exist, but offers no explicit when/when-not instructions or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
create_link - First observed
delete_link - First observed
update_link
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose targeting a specific CRUD operation on short links: create, delete, and update. There is no overlap or ambiguity between these actions, making it easy for an agent to select the correct tool based on the intended operation.
All tool names follow a consistent verb_noun pattern (create_link, delete_link, update_link) with uniform snake_case styling. This predictability enhances readability and reduces cognitive load for agents when scanning the toolset.
With only 3 tools, the set feels thin for a link management domain, as it lacks a 'get' or 'list' tool to retrieve existing links, which is a common and necessary operation. While the tools present are well-defined, the count is borderline low for practical use.
The toolset has significant gaps for a dub.co link management server. It covers create, update, and delete operations but omits retrieval tools (e.g., get_link, list_links), leaving agents unable to query existing links. This incompleteness will likely cause agent failures in workflows requiring read operations.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Short-link service embedded in your AI workflow — shorten links, track campaigns, read stats.
Related MCP Servers
- FlicenseAqualityDmaintenanceA Model Control Protocol server that enables Claude Desktop to interact with your self-hosted YOURLS URL shortener, allowing Claude to automatically shorten URLs, expand short URLs, and retrieve click statistics.14-
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI assistants to make HTTP requests (GET, POST, PUT, DELETE) to external APIs through standardized MCP tools.42MIT
- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server that standardizes tool discovery, execution, and context management for AI applications.MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for Dub that enables creating, updating, deleting short links and retrieving link analytics through natural language.-