@cplace/test-mcp-server 0.1.7 → 0.1.9
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 +61 -65
- package/dist/api.d.ts +10 -10
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +31 -4
- package/dist/api.js.map +1 -1
- package/dist/csvUtils.js +1 -1
- package/dist/csvUtils.js.map +1 -1
- package/dist/index.js +597 -40
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.js +7 -7
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,31 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
An MCP (Model Context Protocol) server that provides Claude Desktop with tools to interact with cplace APIs. This server exposes cplace functionality through a set of MCP tools for workspace management, page operations, and search capabilities.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Installation & Setup
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- **Datamodel Information**: Get attributes and metadata
|
|
9
|
-
- **Page Retrieval**: Get pages by UID
|
|
10
|
-
- **Person Retrieval**: Get persons by UID or name
|
|
11
|
-
- **Complex Search**: Structured attribute filtering with multiple conditions
|
|
12
|
-
|
|
13
|
-
## Installation
|
|
14
|
-
|
|
15
|
-
### ONLY For Development/Local Use
|
|
16
|
-
|
|
17
|
-
1. Clone this repository
|
|
18
|
-
2. Install dependencies:
|
|
19
|
-
```bash
|
|
20
|
-
npm install
|
|
21
|
-
```
|
|
22
|
-
3. Build the project:
|
|
23
|
-
```bash
|
|
24
|
-
npm run build
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Configuration with Claude Desktop
|
|
28
|
-
|
|
29
|
-
### For NPM Installation (recommended)
|
|
7
|
+
### Claude Desktop Installation
|
|
30
8
|
Add this entry to your Claude Desktop MCP server configuration file:
|
|
31
9
|
|
|
32
10
|
```json
|
|
@@ -44,41 +22,25 @@ Add this entry to your Claude Desktop MCP server configuration file:
|
|
|
44
22
|
}
|
|
45
23
|
```
|
|
46
24
|
|
|
47
|
-
###
|
|
48
|
-
|
|
25
|
+
### Claude Code Installation
|
|
26
|
+
Use the Claude Code CLI to add the MCP server:
|
|
49
27
|
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"args": ["/absolute/path/to/this/project/dist/index.js"],
|
|
56
|
-
"env": {
|
|
57
|
-
"CPLACE_URL": "https://your-cplace-instance.com/your-tenant/",
|
|
58
|
-
"API_TOKEN": "your-api-token"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
28
|
+
```bash
|
|
29
|
+
claude mcp add cplace \
|
|
30
|
+
--env CPLACE_URL=https://your-cplace-instance.com/your-tenant/ \
|
|
31
|
+
--env API_TOKEN=your-api-token \
|
|
32
|
+
-- npx -y @cplace/test-mcp-server
|
|
63
33
|
```
|
|
64
34
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
- `cplace_list_workspaces` - Get all workspaces with essential properties
|
|
70
|
-
- `cplace_get_workspace_details` - Get comprehensive workspace details
|
|
71
|
-
- `cplace_get_types_in_workspace` - Get types from workspace
|
|
72
|
-
- `cplace_get_type_datamodel` - Get the datamodel of a type including its attributes, constraints, and permissions
|
|
73
|
-
- `cplace_get_page_by_id` - Get page by ID with full details
|
|
74
|
-
- `cplace_get_person_by_id` - Get details about a person including their name and email
|
|
75
|
-
- `cplace_search_person` - Search a person by their name
|
|
76
|
-
- `cplace_search_pages` - Search pages of a type in cplace
|
|
35
|
+
Verify the installation:
|
|
36
|
+
```bash
|
|
37
|
+
claude mcp list
|
|
38
|
+
```
|
|
77
39
|
|
|
78
40
|
## Usage
|
|
79
41
|
|
|
80
42
|
1. Obtain an API Token for your cplace system (see [cplace documentation](https://docs.cplace.io/lowcode/low-code-cli/authentication/))
|
|
81
|
-
2. Configure your credentials (see
|
|
43
|
+
2. Configure your credentials (see Installation section above)
|
|
82
44
|
3. If Claude Desktop is running, close it
|
|
83
45
|
4. Add the MCP server configuration to Claude Desktop
|
|
84
46
|
5. Open Claude Desktop - the cplace tools should now be available
|
|
@@ -87,21 +49,55 @@ Add this entry to your Claude Desktop MCP server configuration file:
|
|
|
87
49
|
|
|
88
50
|
To change `CPLACE_URL` or `API_TOKEN`, update the values in the Claude Desktop configuration, then close & reopen Claude Desktop.
|
|
89
51
|
|
|
90
|
-
## Development
|
|
91
52
|
|
|
92
|
-
```bash
|
|
93
|
-
# Install dependencies
|
|
94
|
-
npm install
|
|
95
53
|
|
|
96
|
-
|
|
97
|
-
npm run build
|
|
54
|
+
## Available Tools
|
|
98
55
|
|
|
99
|
-
|
|
100
|
-
|
|
56
|
+
### Workspace & Type Information
|
|
57
|
+
- `cplace_list_workspaces` - Get all workspaces with essential properties
|
|
58
|
+
- `cplace_list_types` - List all types available in a workspace
|
|
59
|
+
- `cplace_get_type_datamodel` - Get the datamodel of a type including its attributes, constraints, and permissions
|
|
101
60
|
|
|
102
|
-
|
|
103
|
-
|
|
61
|
+
### Page Operations
|
|
62
|
+
- `cplace_get_page_by_id` - Get page by ID with full details
|
|
63
|
+
- `cplace_create_page` - Create a new page with specified attributes and content
|
|
64
|
+
- `cplace_update_page` - Update an existing page's attributes, content, or structure
|
|
65
|
+
- `cplace_update_page_attributes` - Lightweight tool for updating only page attributes
|
|
104
66
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
67
|
+
### Search & Retrieval
|
|
68
|
+
- `cplace_search_pages` - Search pages of a type in cplace
|
|
69
|
+
- `cplace_search_pages_fulltext` - Make a fulltext search across all pages in cplace
|
|
70
|
+
- `cplace_list_pages_of_type` - List all pages of a specific type in a workspace
|
|
71
|
+
- `cplace_search_pages_csv` - Same as cplace_search_pages but returns results in CSV format
|
|
72
|
+
|
|
73
|
+
### User & Person Management
|
|
74
|
+
- `cplace_get_person_by_id` - Get details about a person including their name and email
|
|
75
|
+
- `cplace_get_person_by_name` - Get details about a person by searching for their name
|
|
76
|
+
- `cplace_get_current_user` - Get information about the currently logged-in user
|
|
77
|
+
|
|
78
|
+
### Reference Management
|
|
79
|
+
- `cplace_get_type_incoming_references` - Get comprehensive information about all incoming references to a specific type definition
|
|
80
|
+
- `cplace_get_page_incoming_references` - Get comprehensive information about all incoming references to a specific page
|
|
81
|
+
|
|
82
|
+
### Widget & Layout Management
|
|
83
|
+
|
|
84
|
+
#### Widget Definitions & Discovery
|
|
85
|
+
- `cplace_list_widget_definitions` - Get a list of all available widget definitions with their metadata
|
|
86
|
+
- `cplace_get_widget_definition` - Get detailed information about a specific widget definition including its configuration schema
|
|
87
|
+
|
|
88
|
+
#### Page Layout Operations
|
|
89
|
+
- `cplace_get_page_layout_overview` - Get the high-level layout structure of a page including rows, columns, and widget summaries
|
|
90
|
+
- `cplace_get_widget_details` - Get detailed configuration for a specific widget within a page layout
|
|
91
|
+
- `cplace_add_widget_to_layout` - Add a new widget to a page layout at a specific position
|
|
92
|
+
- `cplace_remove_widget_from_layout` - Remove an existing widget from a page layout
|
|
93
|
+
- `cplace_update_widget_in_layout` - Modify widget configuration or display properties
|
|
94
|
+
- `cplace_move_widget_in_layout` - Relocate a widget to a different position in the layout
|
|
95
|
+
|
|
96
|
+
#### Embedded Layout Operations
|
|
97
|
+
- `cplace_get_embedded_layout` - Get the widget layout structure of an embedded widget within a container widget
|
|
98
|
+
- `cplace_add_widget_to_embedded_layout` - Add a new widget to an embedded layout within a container widget
|
|
99
|
+
- `cplace_remove_widget_from_embedded_layout` - Remove an existing widget from an embedded layout within a container widget
|
|
100
|
+
|
|
101
|
+
## Development
|
|
102
|
+
|
|
103
|
+
For development setup, contribution guidelines, and extending the server, see [DEVELOPMENT.md](DEVELOPMENT.md).
|
package/dist/api.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ export interface WorkspaceDetailed {
|
|
|
8
8
|
totalPages: number;
|
|
9
9
|
hide: boolean;
|
|
10
10
|
url: string;
|
|
11
|
-
absoluteUrl: string;
|
|
12
11
|
creator?: string;
|
|
13
12
|
modifier?: string;
|
|
14
13
|
permissions: WorkspacePermissions;
|
|
@@ -46,7 +45,7 @@ export interface WorkspacesApiResponse {
|
|
|
46
45
|
result: WorkspaceDetailed[];
|
|
47
46
|
}
|
|
48
47
|
export interface PageDetailed {
|
|
49
|
-
|
|
48
|
+
uid: string;
|
|
50
49
|
name: string;
|
|
51
50
|
url: string;
|
|
52
51
|
type: PageType;
|
|
@@ -62,21 +61,21 @@ export interface PageType {
|
|
|
62
61
|
localizedNames: Record<string, string>;
|
|
63
62
|
}
|
|
64
63
|
export interface PageWorkspace {
|
|
65
|
-
|
|
64
|
+
uid: string;
|
|
66
65
|
name: string;
|
|
67
66
|
}
|
|
68
67
|
export interface PageParent {
|
|
69
|
-
|
|
68
|
+
uid: string;
|
|
70
69
|
name: string;
|
|
71
70
|
type: PageType;
|
|
72
71
|
}
|
|
73
72
|
export interface PageChild {
|
|
74
|
-
|
|
73
|
+
uid: string;
|
|
75
74
|
name: string;
|
|
76
75
|
type: PageType;
|
|
77
76
|
}
|
|
78
77
|
export interface PageUser {
|
|
79
|
-
|
|
78
|
+
uid: string;
|
|
80
79
|
name: string;
|
|
81
80
|
}
|
|
82
81
|
export interface PageAttributes {
|
|
@@ -86,7 +85,7 @@ export interface PageApiResponse {
|
|
|
86
85
|
result: PageDetailed;
|
|
87
86
|
}
|
|
88
87
|
export interface PersonDetailed {
|
|
89
|
-
|
|
88
|
+
uid: string;
|
|
90
89
|
name: string;
|
|
91
90
|
email: string;
|
|
92
91
|
url: string;
|
|
@@ -128,9 +127,10 @@ export interface SearchApiResponse {
|
|
|
128
127
|
searchStats: SearchStats;
|
|
129
128
|
filterInfo?: SearchFilterInfo;
|
|
130
129
|
summary: string;
|
|
130
|
+
cplaceJson?: string;
|
|
131
131
|
}
|
|
132
132
|
export interface TypeDefinitionDetailed {
|
|
133
|
-
|
|
133
|
+
uid: string;
|
|
134
134
|
internalName: string;
|
|
135
135
|
workspaceId: string;
|
|
136
136
|
localizedNames: Record<string, string>;
|
|
@@ -166,7 +166,7 @@ export interface ApiEndpoints {
|
|
|
166
166
|
export declare class CplaceApiClient {
|
|
167
167
|
private config;
|
|
168
168
|
constructor(config: CplaceConfig);
|
|
169
|
-
makeApiRequest<T extends keyof ApiEndpoints>(endpoint: T, method?: 'GET' | 'POST', params?: Record<string, any>, data?: any): Promise<ApiEndpoints[T]>;
|
|
170
|
-
makeApiRequest<T = any>(endpoint: string, method?: 'GET' | 'POST', params?: Record<string, any>, data?: any): Promise<T>;
|
|
169
|
+
makeApiRequest<T extends keyof ApiEndpoints>(endpoint: T, method?: 'GET' | 'POST' | 'PATCH', params?: Record<string, any>, data?: any): Promise<ApiEndpoints[T]>;
|
|
170
|
+
makeApiRequest<T = any>(endpoint: string, method?: 'GET' | 'POST' | 'PATCH', params?: Record<string, any>, data?: any): Promise<T>;
|
|
171
171
|
}
|
|
172
172
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api.js
CHANGED
|
@@ -1,26 +1,47 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
+
import { debugLogWithTag } from './logger.js';
|
|
2
3
|
export class CplaceApiClient {
|
|
3
4
|
config;
|
|
4
5
|
constructor(config) {
|
|
5
6
|
this.config = config;
|
|
6
7
|
}
|
|
7
8
|
async makeApiRequest(endpoint, method = 'GET', params, data) {
|
|
9
|
+
debugLogWithTag('API_CLIENT', `Making ${method} request to endpoint: ${endpoint}`);
|
|
10
|
+
debugLogWithTag('API_CLIENT', `Params: ${JSON.stringify(params)}`);
|
|
11
|
+
debugLogWithTag('API_CLIENT', `Data: ${JSON.stringify(data)}`);
|
|
8
12
|
if (!this.config.url || !this.config.apiToken) {
|
|
9
13
|
throw new Error('CPLACE_URL and API_TOKEN environment variables are required');
|
|
10
14
|
}
|
|
11
15
|
try {
|
|
12
16
|
const headers = {
|
|
13
17
|
'X-Cplace-Api-Token': this.config.apiToken,
|
|
14
|
-
'Content-Type': 'application/json'
|
|
18
|
+
'Content-Type': 'application/json',
|
|
19
|
+
'Accept': 'application/json'
|
|
15
20
|
};
|
|
21
|
+
if (method === 'POST' || method === 'PATCH') {
|
|
22
|
+
headers['X-Requested-With'] = 'XMLHttpRequest';
|
|
23
|
+
headers['X-CSRF-TOKEN'] = 'fetch';
|
|
24
|
+
}
|
|
16
25
|
const url = new URL(`cplace-api/cf.cplace.citizenAi/mcp/${endpoint}`, this.config.url).toString();
|
|
26
|
+
debugLogWithTag('API_CLIENT', `Full URL: ${url}`);
|
|
27
|
+
debugLogWithTag('API_CLIENT', `Headers: ${JSON.stringify(headers)}`);
|
|
17
28
|
let response;
|
|
29
|
+
debugLogWithTag('API_CLIENT', `About to make ${method} request`);
|
|
18
30
|
if (method === 'GET') {
|
|
19
31
|
response = await axios.get(url, { headers, params });
|
|
20
32
|
}
|
|
21
|
-
else {
|
|
33
|
+
else if (method === 'POST') {
|
|
34
|
+
debugLogWithTag('API_CLIENT', `POST request body: ${JSON.stringify(data)}`);
|
|
22
35
|
response = await axios.post(url, data, { headers });
|
|
23
36
|
}
|
|
37
|
+
else if (method === 'PATCH') {
|
|
38
|
+
debugLogWithTag('API_CLIENT', `PATCH request body: ${JSON.stringify(data)}`);
|
|
39
|
+
response = await axios.patch(url, data, { headers });
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
throw new Error(`Unsupported HTTP method: ${method}`);
|
|
43
|
+
}
|
|
44
|
+
debugLogWithTag('API_CLIENT', `Response status: ${response.status}`);
|
|
24
45
|
const responseData = response.data;
|
|
25
46
|
if (responseData.result !== undefined) {
|
|
26
47
|
const result = responseData.result;
|
|
@@ -37,14 +58,20 @@ export class CplaceApiClient {
|
|
|
37
58
|
}
|
|
38
59
|
}
|
|
39
60
|
else {
|
|
40
|
-
|
|
61
|
+
debugLogWithTag('API_CLIENT', `API returned error response: ${JSON.stringify(responseData)}`);
|
|
62
|
+
const errorMessage = responseData.error || responseData.errorMessage || 'Unknown error';
|
|
63
|
+
throw new Error(`API Error: ${errorMessage} (Status: ${response.status})`);
|
|
41
64
|
}
|
|
42
65
|
}
|
|
43
66
|
catch (error) {
|
|
44
67
|
if (axios.isAxiosError(error)) {
|
|
45
|
-
|
|
68
|
+
debugLogWithTag('API_CLIENT', `HTTP Error: ${error.response?.status} - ${error.response?.statusText}`);
|
|
69
|
+
debugLogWithTag('API_CLIENT', `Response data: ${JSON.stringify(error.response?.data)}`);
|
|
70
|
+
debugLogWithTag('API_CLIENT', `Full error: ${error.message}`);
|
|
71
|
+
throw new Error(`Request failed: ${error.message} (Status: ${error.response?.status})`);
|
|
46
72
|
}
|
|
47
73
|
else {
|
|
74
|
+
debugLogWithTag('API_CLIENT', `Non-HTTP error: ${error}`);
|
|
48
75
|
throw error;
|
|
49
76
|
}
|
|
50
77
|
}
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/csvUtils.js
CHANGED
|
@@ -97,7 +97,7 @@ export async function convertPagesToCsv(pages, client, includeAttributes) {
|
|
|
97
97
|
csvRows.push(headers.map(escapeCSVValue).join(','));
|
|
98
98
|
for (const page of pages) {
|
|
99
99
|
const row = [];
|
|
100
|
-
row.push(escapeCSVValue(page.
|
|
100
|
+
row.push(escapeCSVValue(page.uid));
|
|
101
101
|
row.push(escapeCSVValue(page.name));
|
|
102
102
|
row.push(escapeCSVValue(page.url));
|
|
103
103
|
row.push(escapeCSVValue(page.type?.localizedNames?.en || page.type?.internalName || ''));
|
package/dist/csvUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csvUtils.js","sourceRoot":"","sources":["../src/csvUtils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"csvUtils.js","sourceRoot":"","sources":["../src/csvUtils.ts"],"names":[],"mappings":"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"}
|