mcp-uof
The mcp-uof server exposes UOF (U-Office Force) workflow operations as AI-callable tools, enabling AI agents to manage enterprise workflow forms end-to-end through natural language via HTTPS requests against UOF endpoints.
Authentication & Session Management
uof_custom_check_auth: Verify the current UOF account identity and session validity; supports browser sign-in or credential-based login/logout.
Form Discovery
uof_custom_get_form_list: Browse all form categories, IDs, and version codes needed for submission.uof_custom_get_external_form_list: Query forms marked as "not for online use".
Form Schema Inspection
uof_custom_get_form_structure: Retrieve field structure (IDs and names) using a form version ID.uof_custom_get_form_structure_by_id: Retrieve full field structure including field types and filling instructions — recommended before submitting.Get dialog field structures and search dialog options.
Workflow Initiation
uof_custom_preview_workflow: Simulate a form submission to validate the signing route before submitting.uof_custom_apply_form: Officially submit a new workflow task; returns aTaskIdfor all subsequent operations.
Task Tracking
uof_custom_get_task_data: Quickly check a task's status (applicant, current result, close date).uof_custom_get_task_result: View the full step-by-step signing history — who signed, what decision, comments, and timestamps.uof_custom_query_forms: Search submitted or signed forms by date range and keyword to retrieveTaskIds.
Signing & Approval
uof_custom_sign_next: Advance a fixed-flow form to the next signing step and designate the next signer.uof_custom_terminate_task: Close a task by voiding it (Cancel), approving (Adopt), or rejecting (Reject).Get pending sign list.
User Lookup
uof_custom_search_users: Look up UOF users by name or account keyword to get correct account IDs for routing forms.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-uofquery my pending forms"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP UOF
An open-source MCP (Model Context Protocol) server that turns UOF (U-Office Force) workflow operations into AI-callable tools, driven entirely through httpx web automation.
Built for Claude Code, Claude Desktop, VS Code, and any MCP-compatible client. It lets AI agents query workflow forms, inspect form schemas, submit forms, track workflow progress, sign off, and close workflow tasks through natural language.
What This Does
19 exposed tools for UOF workflow operations.
preview_workflowandget_external_form_listcurrently return capability guidance rather than live data.MCP server over stdio for local AI clients.
Tool-first interface: users call the same tools without ever choosing a mechanism — how each tool talks to UOF is an internal, developer-time decision.
Browser sign-in:
uof_custom_loginopens the real UOF login page in the user's own browser and captures the session. The local MCP proxy relays the login form to UOF, so the password transits the server process in memory but is never parsed, logged, persisted, written to a config file, or returned to the AI. An unattended username/password fallback stays available for CI.Single identity model: one server process represents one UOF identity, and the session persists across restarts.
httpx web automation: operations use HTTPS requests (
httpx+lxml) against UOF'saspx/ashxendpoints, without a browser runtime. On Alpine Linux or musl, ensure binary wheels or native build dependencies are available.
Related MCP server: mcp2ws
API Reference
This project targets UOF first-generation web flows, driven over httpx.
Authentication: a
Login.aspxcookie session, obtained either through browser sign-in or the credential fallback.Base URL: configured with
UOF_BASE_URL, for examplehttps://your-uof-domain.com/VirtualPath.Required UOF settings: see docs/configuration.md.
Quick Start
Install
Install from PyPI:
pip install mcp-uofOr run without installing:
uvx --from mcp-uof mcp-uofTo install and run the current source instead:
git clone https://github.com/asgard-ai-platform/mcp-uof.git
cd mcp-uof
uv sync
cp .env.example .envSet the connection URL — that is the only required variable:
export UOF_BASE_URL=https://your-uof-domain.com/VirtualPathSign in by calling the uof_custom_login tool in your chat: it opens the real UOF login page in
your default browser, and the session is handed back to the server once you log in. Credentials
are relayed as-is by the local proxy — never parsed, logged, persisted, or returned to the AI, and
never written to a config file. See docs/configuration.md
for the unattended (username/password) fallback used by CI.
Use with Claude Code
Add the server via the Claude CLI:
claude mcp add --transport stdio uof -- mcp-uofOr with environment variables inline:
claude mcp add --transport stdio uof \
-e UOF_BASE_URL=https://your-uof-domain.com/VirtualPath \
-- mcp-uofIf you clone the repo locally, run it through uv:
claude mcp add --transport stdio uof -- uv --directory /absolute/path/to/mcp-uof run mcp-uofUse with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"uof": {
"command": "mcp-uof",
"env": {
"UOF_BASE_URL": "https://your-uof-domain.com/VirtualPath"
}
}
}
}Or with a local checkout:
{
"mcpServers": {
"uof": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/mcp-uof", "run", "mcp-uof"],
"env": {
"UOF_BASE_URL": "https://your-uof-domain.com/VirtualPath"
}
}
}
}See docs/integration.md and examples/ for more client configuration examples.
Tools (19)
All tool names use the uof_custom_ prefix.
Domain | Tools |
System |
|
WKF Workflow |
|
Important behavior and constraints:
get_pending_sign_listreturns every form awaiting the current identity's signature (with TaskId/SiteId/NodeSeq), sourced from the Homepage pending-sign widget.query_formsis a different set — the forms you submitted or signed, by date range (query_mode=apply/sign). Ask "what do I need to sign?" →get_pending_sign_list.Composite fields (line items, vendor pickers, expense details) live inside dialogs. Use
get_dialog_structureto see a dialog field's inner controls,search_dialog_optionsto look up real picker candidates (never fabricate codes), and pass them intoapply_formvia the_lookups/_fill_before/_press_after/_rowsreserved keys.operate_dialogis a probe only — it cannot accumulate rows.sign_nextperforms approval for the current pending step and can close the flow or route to a designated next signer. It does not accept a signing comment; return, parallel/countersign, and fixed-flow stepping still require the Web UI.terminate_taskcloses a task:Cancelvoids an in-flight form (via the web recall page),Adopt/Rejectapprove/reject through the web sign flow. It checks task status first and blocks repeated closure of an already-closed task.preview_workflow(flow simulation) is not available over httpx and directs the user to the Web UI; you can still submit directly withapply_formand inspect the real signing route afterward withget_task_result.apply_formalways submits as the identity this server process is signed in as (the browser-login user, or the configuredUOF_ACCOUNTwhen the credential fallback is used). Itsapplicant_accountandfirst_signer_accountparameters are currently retained for interface compatibility but do not change the submitted identity or routing.
See docs/tools.md for full tool specs, role model, examples, and operational boundaries.
Project Structure
mcp-uof/
├── src/mcp_uof/ # MCP server, auth (web session), routing, httpx web backend
├── docs/ # Architecture, configuration, integration, tools, testing
├── examples/ # Claude Desktop and VS Code MCP config examples
├── tests/ # smoke / mounted test layers
├── .env.example # Environment variable template
├── README.zh-TW.md # Traditional Chinese README
└── pyproject.tomlDevelopment
uv sync
uv run python tests/run.py smoke
uv run python -m compileall src testsTests that connect to a real UOF test environment require .env:
uv run python tests/run.py mountedSee CONTRIBUTING.md and docs/testing.md for development and testing guidelines.
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceWraps IBM Maximo API services as MCP tools, enabling AI applications like Dify Agent to manage assets, work orders, and inventory through natural language interactions with enterprise asset management systems.Last updated
- AlicenseCqualityCmaintenanceExposes SOAP-based web services as MCP servers by parsing WSDL files. Enables AI assistants to interact with legacy SOAP/WS-\* web services through the Model Context Protocol.Last updated214MIT

IBM Business Automationofficial
Alicense-qualityCmaintenanceEnables AI agents to integrate with IBM Business Automation Workflow by exposing workflow REST services as MCP tools, allowing natural language interaction with business automation capabilities.Last updated10Apache 2.0- AlicenseBqualityDmaintenanceEnables AI agents to issue, void, query, and manage Taiwan e-invoices via 27 MCP tools, wrapping the Universal EC POS Web Service.Last updated27MIT
Related MCP Connectors
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/asgard-ai-platform/mcp-uof'
If you have feedback or need assistance with the MCP directory API, please join our Discord server