Skip to content

Commit 3ae07af

Browse files
committed
minor fixes
1 parent 0cf8833 commit 3ae07af

File tree

3 files changed

+71
-53
lines changed

3 files changed

+71
-53
lines changed

apps/account-management/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "cloudflare-browser-mcp-server",
2+
"name": "cloudflare-account-management-mcp-server",
33
"version": "0.0.1",
44
"private": true,
55
"scripts": {

apps/account-management/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ export class AccountManagementMCP extends McpAgent<Env, State, Props> {
6161

6262
registerAccountTools(this)
6363

64-
// Register Cloudflare Log Push tools
6564
registerAccountManagementTools(this)
6665
}
6766

apps/account-management/src/tools/accountManagement.ts

Lines changed: 70 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -5,63 +5,79 @@ import { getCloudflareClient } from '@repo/mcp-common/src/cloudflare-api'
55
import type { AccountManagementMCP } from '../index'
66

77
export function registerAccountManagementTools(agent: AccountManagementMCP) {
8-
agent.server.tool('get_members_in_account', 'Get members in account', {}, async () => {
9-
const accountId = await agent.getActiveAccountId()
10-
if (!accountId) {
11-
return {
12-
content: [
13-
{
14-
type: 'text',
15-
text: 'No currently active accountId. Try listing your accounts (accounts_list) and then setting an active account (set_active_account)',
16-
},
17-
],
8+
agent.server.tool(
9+
'get_members_in_account',
10+
'Get members in a Cloudflare account',
11+
{
12+
page: z.number().min(1).default(1),
13+
per_page: z.number().min(1).max(100).default(20),
14+
},
15+
async (params) => {
16+
const accountId = await agent.getActiveAccountId()
17+
if (!accountId) {
18+
return {
19+
content: [
20+
{
21+
type: 'text',
22+
text: 'No currently active accountId. Try listing your accounts (accounts_list) and then setting an active account (set_active_account)',
23+
},
24+
],
25+
}
1826
}
19-
}
20-
try {
21-
const client = getCloudflareClient(agent.props.accessToken)
22-
const r = await client.accounts.members.list({
23-
account_id: accountId,
24-
})
27+
try {
28+
const client = getCloudflareClient(agent.props.accessToken)
29+
const r = await client.accounts.members.list({
30+
account_id: accountId,
31+
page: params.page,
32+
per_page: params.per_page,
33+
})
34+
35+
const { result } = r
2536

26-
const { result } = r
37+
// From results array return the user id, name, and roles array
38+
// We should not return their email as it is sensitive information
39+
const members = result.map((member) => {
40+
return {
41+
id: member.user?.id,
42+
name: member.user?.first_name + ' ' + member.user?.last_name,
43+
roles: member.roles,
44+
policies: member.policies,
45+
status: member.status,
46+
}
47+
})
2748

28-
// From results array return the user id, name, and roles array
29-
// We should not return their email as it is sensitive information
30-
const members = result.map((member) => {
3149
return {
32-
id: member.user?.id,
33-
name: member.user?.first_name + ' ' + member.user?.last_name,
34-
roles: member.roles,
35-
policies: member.policies,
36-
status: member.status,
50+
content: [
51+
{
52+
type: 'text',
53+
text: JSON.stringify({
54+
result: members,
55+
result_info: r.result_info,
56+
page_info: {
57+
page: params.page,
58+
per_page: params.per_page,
59+
has_more: members.length === params.per_page,
60+
},
61+
}),
62+
},
63+
],
64+
}
65+
} catch (error) {
66+
return {
67+
content: [
68+
{
69+
type: 'text',
70+
text: `Error getting members in account: ${error instanceof Error && error.message}`,
71+
},
72+
],
3773
}
38-
})
39-
40-
return {
41-
content: [
42-
{
43-
type: 'text',
44-
text: JSON.stringify({
45-
result: members,
46-
}),
47-
},
48-
],
49-
}
50-
} catch (error) {
51-
return {
52-
content: [
53-
{
54-
type: 'text',
55-
text: `Error getting members in account: ${error instanceof Error && error.message}`,
56-
},
57-
],
5874
}
5975
}
60-
})
76+
)
6177

6278
agent.server.tool(
6379
'get_roles',
64-
'List all the available roles',
80+
'List all the available roles in a Cloudflare account',
6581
{
6682
page: z.number().min(1).default(1),
6783
per_page: z.number().min(1).max(100).default(20),
@@ -116,10 +132,13 @@ export function registerAccountManagementTools(agent: AccountManagementMCP) {
116132

117133
agent.server.tool(
118134
'invite_to_account',
119-
'Invite a user to an account with at least one role. The role is an array with the value set as the ID of that role.',
135+
'Invite a user to a Cloudflare account with at least one role.',
120136
{
121137
email: z.string().email(),
122-
roles: z.array(z.string()),
138+
roles: z
139+
.array(z.string())
140+
.min(1)
141+
.describe('Array of role IDs. You can get the roles by using the get_roles tool.'),
123142
},
124143
async (params) => {
125144
const accountId = await agent.getActiveAccountId()
@@ -173,7 +192,7 @@ export function registerAccountManagementTools(agent: AccountManagementMCP) {
173192

174193
agent.server.tool(
175194
'update_member',
176-
'Update a member in an account',
195+
'Update a member in a Cloudflare account',
177196
{
178197
member_id: z.string(),
179198
roles: z.array(z.string()),
@@ -226,7 +245,7 @@ export function registerAccountManagementTools(agent: AccountManagementMCP) {
226245

227246
agent.server.tool(
228247
'remove_member',
229-
'Remove a member from an account',
248+
'Remove a member from a Cloudflare account',
230249
{
231250
member_id: z.string(),
232251
},

0 commit comments

Comments
 (0)