Skip to main content
Glama

Kintone MCP Server

by r3-yamauchi
createKintoneClient.js10.3 kB
// src/repositories/base/http/createKintoneClient.js import { KintoneHttpClient } from './KintoneHttpClient.js'; function removePreview(params = {}) { const { preview, ...rest } = params; return { preview: preview === true, params: rest }; } export function createKintoneClient(credentials) { const http = new KintoneHttpClient(credentials); const space = { getSpace: (params) => http.get('space', params), updateSpace: (params) => http.put('space', params), updateSpaceBody: (params) => http.put('space/body', params), getSpaceMembers: (params) => http.get('space/members', params), updateSpaceMembers: (params) => http.put('space/members', params), addThread: (params) => http.post('space/thread', params), updateThread: (params) => http.put('space/thread', params), addThreadComment: (params) => http.post('space/thread/comment', params), updateSpaceGuests: (params) => http.put('space/guests', params), addGuests: (params) => http.post('guests', params) }; const app = { getApps: (params) => http.get('apps', params), addApp: async (params) => { const payload = { name: params.name }; if (params.space) { payload.space = params.space; if (params.thread) { payload.thread = params.thread; } else { const spaceInfo = await space.getSpace({ id: params.space }); if (spaceInfo && spaceInfo.defaultThread) { payload.thread = spaceInfo.defaultThread; } } } else if (params.thread) { payload.thread = params.thread; } return http.post('app', payload, { preview: true }); }, deployApp: (params) => http.post('app/deploy', params, { preview: true }), getDeployStatus: (params) => http.get('app/deploy', params, { preview: true }), getAppSettings: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/settings', rest, { preview }); }, updateAppSettings: (params) => http.put('app/settings', params, { preview: true }), getProcessManagement: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/status', rest, { preview }); }, updateProcessManagement: (params) => http.put('app/status', params, { preview: true }), getFormFields: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/form/fields', rest, { preview }); }, addFormFields: (params) => http.post('app/form/fields', params, { preview: true }), updateFormFields: (params) => http.put('app/form/fields', params, { preview: true }), deleteFormFields: (params) => http.delete('app/form/fields', params, { preview: true }), getFormLayout: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/form/layout', rest, { preview }); }, updateFormLayout: (params) => http.put('app/form/layout', params, { preview: true }), getViews: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/views', rest, { preview }); }, updateViews: (params) => http.put('app/views', params, { preview: true }), getAppAcl: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/acl', rest, { preview }); }, updateAppAcl: (params) => http.put('app/acl', params, { preview: true }), getFieldAcl: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('field/acl', rest, { preview }); }, updateFieldAcl: (params) => http.put('field/acl', params, { preview: true }), getAppActions: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/actions', rest, { preview }); }, updateAppActions: (params) => http.put('app/actions', params, { preview: true }), getPlugins: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/plugins', rest, { preview }); }, updatePlugins: (params) => http.put('app/plugins', params, { preview: true }), getReports: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/reports', rest, { preview }); }, updateReports: (params) => http.put('app/reports', params, { preview: true }), getGeneralNotifications: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/notifications/general', rest, { preview }); }, updateGeneralNotifications: (params) => http.put('app/notifications/general', params, { preview: true }), getPerRecordNotifications: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/notifications/perRecord', rest, { preview }); }, updatePerRecordNotifications: (params) => http.put('app/notifications/perRecord', params, { preview: true }), getReminderNotifications: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/notifications/reminder', rest, { preview }); }, updateReminderNotifications: (params) => http.put('app/notifications/reminder', params, { preview: true }), getAppCustomize: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('app/customize', rest, { preview }); }, updateAppCustomize: (params) => http.put('app/customize', params, { preview: true }), getRecordAcl: (params = {}) => { const { preview, params: rest } = removePreview(params); return http.get('record/acl', rest, { preview }); }, evaluateRecordsAcl: (params) => http.get('records/acl/evaluate', params), move: (params) => http.post('app/move', params) }; const record = { getRecord: (params) => http.get('record', params), addRecord: (params) => http.post('record', params), updateRecord: (params) => http.put('record', params), updateRecordByUpdateKey: (params) => http.put('record', params), getRecords: (params) => http.get('records', params), addRecords: (params) => http.post('records', params), updateRecords: (params) => http.put('records', params), upsertRecord: async (params) => { const { app: appId, updateKey, record: recordData } = params; const response = await http.put('records', { app: appId, upsert: true, records: [ { updateKey, record: recordData } ] }); if (!response || !Array.isArray(response.records) || response.records.length === 0) { throw new Error('Unexpected response format from records upsert operation.'); } const result = response.records[0]; return { id: result.id, revision: result.revision, operation: result.operation }; }, upsertRecords: async (params) => { const { app: appId, records } = params; if (!Array.isArray(records) || records.length === 0) { throw new Error('records must be a non-empty array when calling upsertRecords.'); } const formattedRecords = records.map((entry) => ({ updateKey: entry.updateKey, record: entry.record })); const response = await http.put('records', { app: appId, upsert: true, records: formattedRecords }); if (!response || !Array.isArray(response.records) || response.records.length === 0) { throw new Error('Unexpected response format from records upsert operation.'); } return response.records.map((recordResult) => ({ id: recordResult.id, revision: recordResult.revision, operation: recordResult.operation })); }, addRecordComment: (params) => http.post('record/comment', params), getRecordComments: (params) => http.get('record/comments', params), updateRecordComment: (params) => http.put('record/comment', params), updateRecordStatus: (params) => http.put('record/status', params), updateRecordAssignees: (params) => http.put('record/assignees', params) }; const file = { uploadFile: async (params) => { const form = new FormData(); const fileData = params.file?.data; const fileName = params.file?.name; if (fileData === undefined || fileData === null) { throw new Error('Missing file data for upload.'); } const blob = fileData instanceof Blob ? fileData : new Blob([fileData]); form.append('file', blob, fileName ?? 'upload.bin'); return http.post('file', form); }, downloadFile: async (params) => { const response = await http.get('file', params, { responseType: 'arraybuffer', rawResponse: true }); const contentType = response.headers['content-type'] || response.headers['Content-Type']; return { data: response.data, contentType }; } }; return { app, record, space, file }; }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/r3-yamauchi/kintone-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server