ubtc-pv-fe-mcp
v1.5.0
Published
The official MCP Server for the Fe API
Downloads
8
Readme
Fe TypeScript MCP Server
It is generated with Stainless.
Installation
Direct invocation
You can run the MCP Server directly via npx:
export FE_API_KEY="My API Key"
npx -y ubtc-pv-fe-mcp@latestVia MCP Client
There is a partial list of existing clients at modelcontextprotocol.io. If you already have a client, consult their documentation to install the MCP server.
For clients with a configuration JSON, it might look something like this:
{
"mcpServers": {
"ubtc_pv_fe_api": {
"command": "npx",
"args": ["-y", "ubtc-pv-fe-mcp", "--client=claude", "--tools=dynamic"],
"env": {
"FE_API_KEY": "My API Key"
}
}
}
}Exposing endpoints to your MCP Client
There are two ways to expose endpoints as tools in the MCP server:
- Exposing one tool per endpoint, and filtering as necessary
- Exposing a set of tools to dynamically discover and invoke endpoints from the API
Filtering endpoints and tools
You can run the package on the command line to discover and filter the set of tools that are exposed by the MCP Server. This can be helpful for large APIs where including all endpoints at once is too much for your AI's context window.
You can filter by multiple aspects:
--toolincludes a specific tool by name--resourceincludes all tools under a specific resource, and can have wildcards, e.g.my.resource*--operationincludes just read (get/list) or just write operations
Dynamic tools
If you specify --tools=dynamic to the MCP server, instead of exposing one tool per endpoint in the API, it will
expose the following tools:
list_api_endpoints- Discovers available endpoints, with optional filtering by search queryget_api_endpoint_schema- Gets detailed schema information for a specific endpointinvoke_api_endpoint- Executes any endpoint with the appropriate parameters
This allows you to have the full set of API endpoints available to your MCP Client, while not requiring that all of their schemas be loaded into context at once. Instead, the LLM will automatically use these tools together to search for, look up, and invoke endpoints dynamically. However, due to the indirect nature of the schemas, it can struggle to provide the correct properties a bit more than when tools are imported explicitly. Therefore, you can opt-in to explicit tools, the dynamic tools, or both.
See more information with --help.
All of these command-line options can be repeated, combined together, and have corresponding exclusion versions (e.g. --no-tool).
Use --list to see the list of available tools, or see below.
Specifying the MCP Client
Different clients have varying abilities to handle arbitrary tools and schemas.
You can specify the client you are using with the --client argument, and the MCP server will automatically
serve tools and schemas that are more compatible with that client.
--client=<type>: Set all capabilities based on a known MCP client- Valid values:
openai-agents,claude,claude-code,cursor - Example:
--client=cursor
- Valid values:
Additionally, if you have a client not on the above list, or the client has gotten better over time, you can manually enable or disable certain capabilities:
--capability=<name>: Specify individual client capabilities- Available capabilities:
top-level-unions: Enable support for top-level unions in tool schemasvalid-json: Enable JSON string parsing for argumentsrefs: Enable support for $ref pointers in schemasunions: Enable support for union types (anyOf) in schemasformats: Enable support for format validations in schemas (e.g. date-time, email)tool-name-length=N: Set maximum tool name length to N characters
- Example:
--capability=top-level-unions --capability=tool-name-length=40 - Example:
--capability=top-level-unions,tool-name-length=40
- Available capabilities:
Examples
- Filter for read operations on cards:
--resource=cards --operation=read- Exclude specific tools while including others:
--resource=cards --no-tool=create_cards- Configure for Cursor client with custom max tool name length:
--client=cursor --capability=tool-name-length=40- Complex filtering with multiple criteria:
--resource=cards,accounts --operation=read --tag=kyc --no-tool=create_cardsImporting the tools and server individually
// Import the server, generated endpoints, or the init function
import { server, endpoints, init } from "ubtc-pv-fe-mcp/server";
// import a specific tool
import healthCheckAPI from "ubtc-pv-fe-mcp/tools/api/health-check-api";
// initialize the server and all endpoints
init({ server, endpoints });
// manually start server
const transport = new StdioServerTransport();
await server.connect(transport);
// or initialize your own server with specific tools
const myServer = new McpServer(...);
// define your own endpoint
const myCustomEndpoint = {
tool: {
name: 'my_custom_tool',
description: 'My custom tool',
inputSchema: zodToJsonSchema(z.object({ a_property: z.string() })),
},
handler: async (client: client, args: any) => {
return { myResponse: 'Hello world!' };
})
};
// initialize the server with your custom endpoints
init({ server: myServer, endpoints: [healthCheckAPI, myCustomEndpoint] });Available Tools
The following tools are available in this MCP server.
Resource api:
health_check_api(read):list_stamps_api(read): Get all stamps of company
Resource api.auth:
login_api_auth(write): Login by email & password . Returns a custom JWT token which includes user's roles and permissions.refresh_token_api_auth(write): Refresh JWT token using refresh tokenregister_otp_api_auth(write): Register OTP for userverify_email_api_auth(write): Verify email using verification codeverify_otp_api_auth(write): Verify OTP for user
Resource api.notifications:
list_api_notifications(read): Get notificationsmark_as_read_api_notifications(write): Mark notification as read
Resource api.users:
create_api_users(write): Create a new userretrieve_api_users(read): Get a user by idupdate_api_users(write): Update a userlist_api_users(read): Get paginated list of usersdelete_api_users(write): Delete a userchange_password_api_users(write): Update user passwordreset_account_api_users(write): Reset user accountretrieve_current_api_users(read): Get the current login userupdate_password_api_users(write): Update user passwordupdate_status_api_users(write): Update user status
Resource api.users.signatures:
create_users_api_signatures(write): Create a new signature for current userlist_users_api_signatures(read): Get list signatures of current userdelete_users_api_signatures(write): Delete a signature of a userset_default_users_api_signatures(write): Set a signature as default for a user
Resource api.superadmin:
send_email_to_all_api_superadmin(write): Send email to all userssend_welcome_email_api_superadmin(write): Send welcome email to user
Resource api.files:
retrieve_api_files(read): Get file by iddelete_api_files(write): Delete file by idcreate_with_preuploaded_api_files(write): Get direct upload URLget_direct_upload_url_api_files(write): Get direct upload URLupload_api_files(write): Upload files
Resource api.departments:
create_api_departments(write): Create a new departmentretrieve_api_departments(read): Get a department by IDupdate_api_departments(write): Update a department by IDlist_api_departments(read): Get departments by paginate and filterdelete_api_departments(write): Delete a department by IDget_employees_api_departments(read): Get employees by department slugget_related_departments_api_departments(read): Get related departments by IDget_relationships_api_departments(read): Get all department relationships
Resource api.department_roles:
create_api_department_roles(write): Create a new department roleretrieve_api_department_roles(read): Get a department role by IDupdate_api_department_roles(write): Update a department role by IDlist_api_department_roles(read): Get paginated department rolesdelete_api_department_roles(write): Delete a department role by IDget_by_department_api_department_roles(read): Get department roles by department ID
Resource api.employees:
create_api_employees(write): Create employeeretrieve_api_employees(read): Get employee by IDupdate_api_employees(write): Update employee by IDlist_api_employees(read): Get employees with paginationdelete_api_employees(write): Delete employee by IDget_histories_api_employees(read): Get employee histories by IDget_status_summary_api_employees(read): Get employees status summaryupload_avatar_api_employees(write): Upload employee avatar
Resource api.documents:
create_api_documents(write): Create a new documentretrieve_api_documents(read): Get document by uniqueCodelist_api_documents(read): Get documents with paginationadd_appendix_and_related_files_api_documents(write): Add appendix and related files to documentadd_approvers_api_documents(write): Add more approvers to pending documentcancel_api_documents(write): Cancel pending/need-update documentcreate_new_version_api_documents(write): Create a new version of the documentdownload_api_documents(read): Download document directly by document IDnotify_api_documents(write): Notify document is successfully signed and stampedrequest_re_sign_api_documents(write): Request re-sign for documentreview_api_documents(write): Review document by idset_signatures_api_documents(write): Set signatures for documentset_stamps_api_documents(write): Set stamps for documentsignatures_api_documents(read): Get signatures of approved documentsigned_files_api_documents(read): Get signed files of document by uniqueCodestatus_summary_api_documents(read): Get documents status summary
Resource api.document_categories:
create_api_document_categories(write):retrieve_api_document_categories(read):update_api_document_categories(write):list_api_document_categories(read): Get document categories with paginationdelete_api_document_categories(write):
Resource api.document_issuers:
create_api_document_issuers(write):retrieve_api_document_issuers(read):update_api_document_issuers(write):list_api_document_issuers(read): Get document issuers with paginationdelete_api_document_issuers(write):
Resource api.folders:
create_api_folders(write):retrieve_api_folders(read):update_api_folders(write):list_api_folders(read): Get folders with paginationdelete_api_folders(write):
Resource api.library:
retrieve_api_library(read): Get items by idlist_api_library(read): Get items with paginationcreate_shortcut_api_library(write): Create shortcut to filedownload_api_library(read): Download file directly by file IDget_breadcrumbs_api_library(read): Get breadcrumbs by folder idget_temp_url_api_library(read): Get temporary URL by file IDupload_api_library(write): Upload file to library
Resource api.permissions.policies:
update_permissions_api_policies(write): Update a department role with permissions attachedlist_permissions_api_policies(read): List all resources and their permissions
Resource api.permission_requests:
create_api_permission_requests(write): Create a new permission requestlist_api_permission_requests(read): Get all permission requestsapprove_api_permission_requests(write): Approve a permission requestassign_api_permission_requests(write): Assign permission requests to multiple userscheck_api_permission_requests(read): Check permission for a specific item and typedeny_api_permission_requests(write): Deny a permission request
Resource api.settings:
delete_api_settings(write): Delete a settingcreate_or_update_api_settings(write): Create or update a settinglist_all_api_settings(read): List all the settingslist_public_api_settings(read): List all public settings
Resource files:
retrieve_temp_url_files(read): Get temporary URL by file ID
