@utaba/ucm-mcp-server 1.1.8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -12
- package/dist/index.js +1 -1
- package/dist/tools/core/DeleteArtifactTool.js +1 -1
- package/dist/tools/core/EditArtifactMetadataTool.js +1 -1
- package/dist/tools/core/GetArtifactTool.js +1 -1
- package/dist/tools/core/GetArtifactVersionsTool.js +1 -1
- package/dist/tools/core/GetChunkTool.js +1 -1
- package/dist/tools/core/ListArtifactsTool.js +1 -1
- package/dist/tools/core/PublishArtifactFromFileTool.js +1 -1
- package/dist/tools/core/PublishArtifactTool.js +2 -2
- package/dist/tools/core/SearchArtifactsTool.js +1 -1
- package/dist/tools/repository/CreateRepositoryTool.js +1 -1
- package/dist/tools/repository/DeleteRepositoryGuidanceTool.js +1 -1
- package/dist/tools/repository/GetRepositoryTool.js +1 -1
- package/dist/tools/repository/UpdateRepositoryTool.js +1 -1
- package/dist/tools/utility/AuthorIndexTool.js +1 -1
- package/dist/tools/utility/AuthorRecentsTool.js +1 -1
- package/dist/tools/utility/HealthCheckController.js +2 -2
- package/dist/tools/utility/ListRepositoriesTool.js +1 -1
- package/dist/tools/utility/QuickstartTool.js +2 -2
- package/dist/tools/utility/SubmitFeedbackTool.js +1 -1
- package/dist/utils/McpErrorHandler.js +1 -1
- package/package.json +1 -1
- package/package.json.backup +1 -1
package/README.md
CHANGED
|
@@ -10,24 +10,24 @@ Get your auth token from https://ucm.utaba.ai
|
|
|
10
10
|
|
|
11
11
|
## Available MCP Tools
|
|
12
12
|
|
|
13
|
-
The server provides 11 MCP tools following the `
|
|
13
|
+
The server provides 11 MCP tools following the `ucm_` naming convention:
|
|
14
14
|
|
|
15
15
|
### System Tools
|
|
16
|
-
- `
|
|
17
|
-
- `
|
|
16
|
+
- `ucm_health_check` - Check MCP server and UCM API connectivity
|
|
17
|
+
- `ucm_quickstart` - Get the UCM quickstart guide (Tell your AI to load this first)
|
|
18
18
|
|
|
19
19
|
### Discovery Tools
|
|
20
|
-
- `
|
|
21
|
-
- `
|
|
22
|
-
- `
|
|
20
|
+
- `ucm_get_author_index` - Generate dynamic markdown index for an author
|
|
21
|
+
- `ucm_list_repositories` - List all repositories for an author
|
|
22
|
+
- `ucm_list_artifacts` - Browse the 4-level hierarchy
|
|
23
23
|
|
|
24
24
|
### Artifact Management
|
|
25
|
-
- `
|
|
26
|
-
- `
|
|
27
|
-
- `
|
|
28
|
-
- `
|
|
29
|
-
- `
|
|
30
|
-
- `
|
|
25
|
+
- `ucm_get_artifact` - Retrieve artifact content with auto-chunking
|
|
26
|
+
- `ucm_get_chunk` - Get chunks of large responses
|
|
27
|
+
- `ucm_publish_artifact` - Create/update artifacts
|
|
28
|
+
- `ucm_publish_artifact_fromfile` - File-based publishing (preferred for large files)
|
|
29
|
+
- `ucm_delete_artifact` - Remove artifacts
|
|
30
|
+
- `ucm_get_artifact_versions` - Get version history
|
|
31
31
|
|
|
32
32
|
## Usage with Claude Desktop
|
|
33
33
|
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@ async function main() {
|
|
|
11
11
|
const program = new Command();
|
|
12
12
|
program
|
|
13
13
|
.name('ucm-mcp-server')
|
|
14
|
-
.description('Universal Context Manager - Read the
|
|
14
|
+
.description('Universal Context Manager - Read the ucm_quickstart first to avoid mistakes')
|
|
15
15
|
.version('1.0.5')
|
|
16
16
|
.option('-u, --ucm-url <url>', 'UCM API base URL (defaults to https://ucm.utaba.ai)')
|
|
17
17
|
.option('-p, --port <port>', 'Server port', '3001')
|
|
@@ -4,7 +4,7 @@ export class DeleteArtifactTool extends BaseToolController {
|
|
|
4
4
|
super(ucmClient, logger, publishingAuthorId);
|
|
5
5
|
}
|
|
6
6
|
get name() {
|
|
7
|
-
return '
|
|
7
|
+
return 'ucm_delete_artifact';
|
|
8
8
|
}
|
|
9
9
|
get description() {
|
|
10
10
|
return 'Delete a UCM artifact by path and version. This action cannot be undone. Only the latest or specified version is deleted.';
|
|
@@ -6,7 +6,7 @@ export class EditArtifactMetadataTool extends BaseToolController {
|
|
|
6
6
|
super(ucmClient, logger, publishingAuthorId);
|
|
7
7
|
}
|
|
8
8
|
get name() {
|
|
9
|
-
return '
|
|
9
|
+
return 'ucm_edit_artifact_metadata';
|
|
10
10
|
}
|
|
11
11
|
get description() {
|
|
12
12
|
return 'Edit artifact metadata and optionally move artifacts to new locations. Supports updating description, namespace, filename, MIME type, technology, and tags. Move operations affect all versions while metadata-only updates apply to latest version only.';
|
|
@@ -8,7 +8,7 @@ export class GetArtifactTool extends BaseToolController {
|
|
|
8
8
|
this.trustedAuthors = trustedAuthors;
|
|
9
9
|
}
|
|
10
10
|
get name() {
|
|
11
|
-
return '
|
|
11
|
+
return 'ucm_get_artifact';
|
|
12
12
|
}
|
|
13
13
|
get description() {
|
|
14
14
|
return 'Retrieve UCM artifact content with metadata. Large files are automatically chunked.';
|
|
@@ -5,7 +5,7 @@ export class GetArtifactVersionsTool extends BaseToolController {
|
|
|
5
5
|
super(ucmClient, logger, publishingAuthorId);
|
|
6
6
|
}
|
|
7
7
|
get name() {
|
|
8
|
-
return '
|
|
8
|
+
return 'ucm_get_artifact_versions';
|
|
9
9
|
}
|
|
10
10
|
get description() {
|
|
11
11
|
return 'Get all available versions of a specific UCM artifact';
|
|
@@ -6,7 +6,7 @@ export class GetChunkTool extends BaseToolController {
|
|
|
6
6
|
super(ucmClient, logger, publishingAuthorId);
|
|
7
7
|
}
|
|
8
8
|
get name() {
|
|
9
|
-
return '
|
|
9
|
+
return 'ucm_get_chunk';
|
|
10
10
|
}
|
|
11
11
|
get description() {
|
|
12
12
|
return 'Retrieve the next chunk of a large UCM artifact response';
|
|
@@ -5,7 +5,7 @@ export class ListArtifactsTool extends BaseToolController {
|
|
|
5
5
|
super(ucmClient, logger, publishingAuthorId);
|
|
6
6
|
}
|
|
7
7
|
get name() {
|
|
8
|
-
return '
|
|
8
|
+
return 'ucm_list_artifacts';
|
|
9
9
|
}
|
|
10
10
|
get description() {
|
|
11
11
|
return `List artifacts with exploratory browsing support. Can list authors, repositories, categories, subcategories, or artifacts depending on path depth. ${this.publishingAuthorId ? "Your author value is '" + this.publishingAuthorId + "'" : ''}`;
|
|
@@ -8,7 +8,7 @@ export class PublishArtifactFromFileTool extends BaseToolController {
|
|
|
8
8
|
super(ucmClient, logger, publishingAuthorId);
|
|
9
9
|
}
|
|
10
10
|
get name() {
|
|
11
|
-
return '
|
|
11
|
+
return 'ucm_publish_artifact_fromfile';
|
|
12
12
|
}
|
|
13
13
|
get description() {
|
|
14
14
|
return 'Create or update UCM artifacts from a file URI. Supports versioning. PREFERRED METHOD: Use this tool for file-based content as it is much faster and more efficient. Pass the local file path as a file:// URI (e.g., "file:///path/to/file.txt").';
|
|
@@ -6,10 +6,10 @@ export class PublishArtifactTool extends BaseToolController {
|
|
|
6
6
|
super(ucmClient, logger, publishingAuthorId);
|
|
7
7
|
}
|
|
8
8
|
get name() {
|
|
9
|
-
return '
|
|
9
|
+
return 'ucm_publish_artifact';
|
|
10
10
|
}
|
|
11
11
|
get description() {
|
|
12
|
-
return 'Create or update UCM artifacts with content and metadata. Supports versioning and automatic conflict detection. The API automatically detects whether to create or update based on existing artifacts. NOTE: Only use this tool for small data - use
|
|
12
|
+
return 'Create or update UCM artifacts with content and metadata. Supports versioning and automatic conflict detection. The API automatically detects whether to create or update based on existing artifacts. NOTE: Only use this tool for small data - use ucm_publish_artifact_fromfile for files as it is much faster and more efficient.';
|
|
13
13
|
}
|
|
14
14
|
get inputSchema() {
|
|
15
15
|
return {
|
|
@@ -4,7 +4,7 @@ export class SearchArtifactsTool extends BaseToolController {
|
|
|
4
4
|
super(ucmClient, logger, publishingAuthorId);
|
|
5
5
|
}
|
|
6
6
|
get name() {
|
|
7
|
-
return '
|
|
7
|
+
return 'ucm_search_artifacts';
|
|
8
8
|
}
|
|
9
9
|
get description() {
|
|
10
10
|
return `Search artifacts by text across multiple metadata fields with privacy filtering. Searches namespace, filename, description, and tags fields. ${this.publishingAuthorId ? "Your author value is '" + this.publishingAuthorId + "'" : ''}`;
|
|
@@ -5,7 +5,7 @@ export class CreateRepositoryTool extends BaseToolController {
|
|
|
5
5
|
super(ucmClient, logger, publishingAuthorId);
|
|
6
6
|
}
|
|
7
7
|
get name() {
|
|
8
|
-
return '
|
|
8
|
+
return 'ucm_create_repository';
|
|
9
9
|
}
|
|
10
10
|
get description() {
|
|
11
11
|
const authorInfo = this.publishingAuthorId ? ` Your author id is '${this.publishingAuthorId}'.` : '';
|
|
@@ -7,7 +7,7 @@ export class DeleteRepositoryGuidanceTool extends BaseToolController {
|
|
|
7
7
|
this.baseUrl = baseUrl;
|
|
8
8
|
}
|
|
9
9
|
get name() {
|
|
10
|
-
return '
|
|
10
|
+
return 'ucm_delete_repository_guidance';
|
|
11
11
|
}
|
|
12
12
|
get description() {
|
|
13
13
|
return `Provides guidance for deleting a repository via the web UI.`;
|
|
@@ -5,7 +5,7 @@ export class GetRepositoryTool extends BaseToolController {
|
|
|
5
5
|
super(ucmClient, logger, publishingAuthorId);
|
|
6
6
|
}
|
|
7
7
|
get name() {
|
|
8
|
-
return '
|
|
8
|
+
return 'ucm_get_repository';
|
|
9
9
|
}
|
|
10
10
|
get description() {
|
|
11
11
|
const authorInfo = this.publishingAuthorId ? ` Your author id is '${this.publishingAuthorId}'.` : '';
|
|
@@ -5,7 +5,7 @@ export class UpdateRepositoryTool extends BaseToolController {
|
|
|
5
5
|
super(ucmClient, logger, publishingAuthorId);
|
|
6
6
|
}
|
|
7
7
|
get name() {
|
|
8
|
-
return '
|
|
8
|
+
return 'ucm_update_repository';
|
|
9
9
|
}
|
|
10
10
|
get description() {
|
|
11
11
|
const authorInfo = this.publishingAuthorId ? ` Your author id is '${this.publishingAuthorId}'.` : '';
|
|
@@ -4,7 +4,7 @@ export class AuthorIndexTool extends BaseToolController {
|
|
|
4
4
|
super(ucmClient, logger, publishingAuthorId);
|
|
5
5
|
}
|
|
6
6
|
get name() {
|
|
7
|
-
return '
|
|
7
|
+
return 'ucm_get_author_index';
|
|
8
8
|
}
|
|
9
9
|
get description() {
|
|
10
10
|
return `Discover a dynamic markdown index guide for AI assistants working with an author\'s content. Your author id is '${this.publishingAuthorId}'`;
|
|
@@ -4,7 +4,7 @@ export class AuthorRecentsTool extends BaseToolController {
|
|
|
4
4
|
super(ucmClient, logger, publishingAuthorId);
|
|
5
5
|
}
|
|
6
6
|
get name() {
|
|
7
|
-
return '
|
|
7
|
+
return 'ucm_get_author_recents';
|
|
8
8
|
}
|
|
9
9
|
get description() {
|
|
10
10
|
return `Generate author activity tracking showing the 20 most recently modified artifacts within an author context. Your author id is '${this.publishingAuthorId}'`;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { BaseToolController } from '../base/BaseToolController.js';
|
|
2
2
|
//import packageJson from '../../../../publish/package.json' assert { type: 'json' };
|
|
3
|
-
const version = '1.1.
|
|
3
|
+
const version = '1.1.8'; //TODO: tried to sync this with packageJson but it didn't work.
|
|
4
4
|
export class HealthCheckController extends BaseToolController {
|
|
5
5
|
constructor(ucmClient, logger, publishingAuthorId) {
|
|
6
6
|
super(ucmClient, logger, publishingAuthorId);
|
|
7
7
|
}
|
|
8
8
|
get name() {
|
|
9
|
-
return '
|
|
9
|
+
return 'ucm_health_check';
|
|
10
10
|
}
|
|
11
11
|
get description() {
|
|
12
12
|
return 'Check MCP server and UCM API connectivity status';
|
|
@@ -4,7 +4,7 @@ export class ListRepositoriesTool extends BaseToolController {
|
|
|
4
4
|
super(ucmClient, logger, publishingAuthorId);
|
|
5
5
|
}
|
|
6
6
|
get name() {
|
|
7
|
-
return '
|
|
7
|
+
return 'ucm_list_repositories';
|
|
8
8
|
}
|
|
9
9
|
get description() {
|
|
10
10
|
return 'List all repositories for a specific author with pagination and statistics';
|
|
@@ -4,10 +4,10 @@ export class QuickstartTool extends BaseToolController {
|
|
|
4
4
|
super(ucmClient, logger, publishingAuthorId);
|
|
5
5
|
}
|
|
6
6
|
get name() {
|
|
7
|
-
return '
|
|
7
|
+
return 'ucm_quickstart';
|
|
8
8
|
}
|
|
9
9
|
get description() {
|
|
10
|
-
return '
|
|
10
|
+
return 'CRITICAL MANDATORY READING: READ THIS FIRST before using any other tools as it will guide you to understand how to use the UCM system and MCP tools effectively';
|
|
11
11
|
}
|
|
12
12
|
get inputSchema() {
|
|
13
13
|
return {
|
|
@@ -4,7 +4,7 @@ export class SubmitFeedbackTool extends BaseToolController {
|
|
|
4
4
|
super(ucmClient, logger, publishingAuthorId);
|
|
5
5
|
}
|
|
6
6
|
get name() {
|
|
7
|
-
return '
|
|
7
|
+
return 'ucm_submit_user_issue_or_feedback';
|
|
8
8
|
}
|
|
9
9
|
get description() {
|
|
10
10
|
return 'Submit user feedback, bug reports, feature requests ONLY if the user requests it and they want to send details to the UCM development team. Do NOT include sensitive or project related details. Ask the user before submitting the data if it is appropriate.';
|
|
@@ -51,7 +51,7 @@ export class McpErrorHandler {
|
|
|
51
51
|
return new McpError(McpErrorCode.InvalidParams, 'Parameter validation failed', { originalError: error });
|
|
52
52
|
}
|
|
53
53
|
if (message?.includes('ECONNREFUSED')) {
|
|
54
|
-
return new McpError(McpErrorCode.ExternalServiceUnavailable, 'External API is unavailable, try the
|
|
54
|
+
return new McpError(McpErrorCode.ExternalServiceUnavailable, 'External API is unavailable, try the ucm_health_check tool', { originalError: error });
|
|
55
55
|
}
|
|
56
56
|
if (message?.includes('validation') || message?.includes('invalid') ||
|
|
57
57
|
message?.includes('required') || message?.includes('must be')) {
|
package/package.json
CHANGED