@sgs/oa-mcp-server
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., "@@sgs/oa-mcp-server济南的办公场所有哪些?"
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 Server
山钢资本数智办公平台 AI 接入工具,支持所有主流 AI Agent 一键安装。
⚠️ 重要:架构说明(部署前必读)
本工具连接山钢资本数智办公平台(OA 系统),需要以下运行环境:
依赖 | 说明 | 原因 |
Kimi WebBridge | 本地运行在 | OA 系统仅支持浏览器 Session 认证,需通过 WebBridge 代理请求 |
浏览器登录态 | 已登录 | WebBridge 利用浏览器 Cookie 访问 OA API |
Windows 操作系统 | 当前实现基于 Windows + git-bash | 使用 |
架构图
AI Agent (Claude Code / Cursor / ...)
↓ MCP Protocol
MCP Server (Node.js)
↓ HTTP POST (localhost:10086)
Kimi WebBridge 守护进程
↓ CDP Protocol
浏览器(已登录 OA 系统)
↓ HTTP + Cookie
数智办公平台 (oatest.sgscf.cn)为什么不直接 HTTP 请求?
OA 系统认证基于浏览器 Session Cookie,不支持 API Key / Token 直接调用。Cookie 有效期约 30 分钟,且绑定浏览器指纹,终端直接发送无效。
当前方案是通过 WebBridge 复用浏览器的登录态,这是唯一可行的方式。
Related MCP server: DiSH MCP Server
🚀 安装
前置要求
Node.js >= 18.0
Kimi WebBridge 已安装并运行(
http://127.0.0.1:10086)浏览器已登录 OA 系统(
https://oatest.sgscf.cn)
安装命令
# 全局安装
npm install -g sgs-oa-mcp-server
# 或 npx 直接运行
npx sgs-oa-mcp-server🔧 配置
环境变量(可选)
创建 .env 文件:
# MCP Server 配置
MCP_API_KEYS=dev-key-001,prod-key-002
PORT=3000注:OA 系统地址和认证通过 WebBridge 自动处理,无需手动配置。
📋 可用工具
工具名 | 功能 | 参数 |
| 查询办公场所 | officenm, address, current, size |
| 获取场所详情 | officeid |
| 查询会议室 | roomnm, capacity, building, current, size |
| 获取会议室详情 | roomid |
📖 使用示例
安装后,在 AI Agent 中直接输入:
帮我查一下济南的办公场所或 API 直接调用:
curl -X POST http://localhost:3000/api/v1/tools/search_office \
-H "Content-Type: application/json" \
-H "X-API-Key: dev-key-001" \
-d '{"officenm": "济南"}'🐛 常见问题
Q: 提示 "WebBridge session has no tab"?
确保 WebBridge 守护进程已启动,且浏览器已打开 OA 系统页面。
运行以下命令检查 WebBridge 状态:
curl http://127.0.0.1:10086/healthQ: 提示 "Failed to fetch"?
浏览器中的 OA 登录态可能已过期。在浏览器中重新访问 https://oatest.sgscf.cn 并登录。
Q: 为什么不能脱离浏览器使用?
OA 系统当前不支持 API Key / Token 认证,必须通过浏览器 Session 访问。如需纯 API 方式,需要 OA 系统开发团队开放 Token 认证接口。
Q: 安全性如何?
WebBridge 守护进程仅监听
localhost,不暴露到外网MCP Server 支持 API Key 认证
所有操作记录审计日志(
logs/audit.log)
📝 License
MIT © 2026 山钢资本金融科技服务中心
🔗 链接
Available Tools
4 toolsget_office_detail获取办公场所详情B
根据场所ID获取详细信息
| Name | Required | Description | Default |
|---|---|---|---|
| officeid | Yes | 办公场所ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but discloses no behavioral traits beyond the basic read operation. It does not mention return format, error behavior, permissions, or any side effects. The description is minimal and offers little beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that fully communicates the core action and parameter. There is no fluff or repetition, and it is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required parameter, no output schema), and the description covers the basic purpose. However, it lacks details about what fields are included in '详细信息' or any special behavior, which makes it adequate but not complete for an agent that needs to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (officeid is described as '办公场所ID'). The description essentially restates the parameter's role without adding extra format, constraints, or examples, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '根据场所ID获取详细信息' clearly states the action (获取/obtain) and resource (详细信息/detailed information) keyed by an ID. It is specific to a detail lookup, but does not explicitly differentiate from the sibling get_room_detail; differentiation relies on the tool name and title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the tool is for retrieving office details when an office ID is available. However, there is no explicit guidance on when to prefer this over search_office or get_room_detail, nor any exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_room_detail获取会议室详情B
根据会议室ID获取详细信息
| Name | Required | Description | Default |
|---|---|---|---|
| roomid | Yes | 会议室ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure, but it only says 'get detailed information.' It does not mention that it is read-only, what happens if the room is not found, required permissions, or the structure of returned data. This is a significant gap for a tool that may involve network calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and purpose. It is concise and free of fluff, though it lacks extra context that could be useful. It earns its place but is minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema (1 parameter) and no output schema, the description is adequate but vague: it does not specify what 'detailed information' includes, whether it returns partial data, or any error behavior. For a tool with no annotations, this leaves room for ambiguity but is not grossly insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (roomid is described as '会议室ID'). The description merely restates the parameter ('根据会议室ID') without adding additional context, such as format, constraints, or examples. Baseline of 3 is appropriate when the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('获取' / get) and resource ('详细信息' / detailed information) keyed to a room ID, clearly distinguishing it from sibling tools like get_office_detail and search_room. It is direct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a room ID, but it does not explicitly state when to use this tool versus alternatives (e.g., search_room to find the ID first, or get_office_detail for offices). No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_office查询办公场所A
查询山钢资本数智办公平台的办公场所列表。可按名称、地址筛选。返回场所ID、名称、地址、所属机构等信息。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 每页条数 | |
| address | No | 地址 | |
| current | No | 页码 | |
| officenm | No | 办公场所名称 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns office ID, name, address, and organization, and supports filtering. However, it does not mention pagination behavior (size/current parameters), which is a significant behavioral trait for a list API. The schema covers the parameters but the description could have added more context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the main purpose, then specifies filtering capabilities and return fields. Every word is useful with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the essential purpose, filtering options, and return fields, which is largely sufficient for a list/search tool. It omits explicit mention of pagination parameters, but the schema already documents them, and the output schema is absent but return fields are described. Minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds that filtering is possible by name and address, aligning with officenm and address parameters, but does not explain the pagination parameters (size, current) meaning. Thus it adds minimal semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries the office list on the specific Shangang Capital Digital Office Platform, using a specific verb '查询' and specific resource '办公场所列表'. It distinguishes from sibling tools by focusing on offices rather than rooms and list versus detail operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use this tool: when searching/filtering office locations by name or address. It does not explicitly exclude other tools like get_office_detail for details, but the context makes the general usage pattern obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_room查询会议室A
查询会议室列表。可按名称、容纳人数、楼宇筛选。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 每页条数 | |
| roomnm | No | 会议室名称 | |
| current | No | 页码 | |
| building | No | 楼宇 | |
| capacity | No | 最低容纳人数 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It identifies the operation as a query ('查询'), implying a safe read-only action, and lists filterable fields. However, it does not disclose pagination behavior, default result size, or any other behavioral traits beyond the basic query nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence (two in Chinese) that efficiently conveys the core purpose and main filters. There is no wasted wording, and it is front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool with 5 parameters and no output schema, the description plus 100% schema coverage is mostly sufficient. It clearly indicates a list result and the main filter criteria, though it omits mention of pagination parameters (current/size) which are present in the schema. This is a minor gap given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description merely restates some parameter purposes (name, capacity, building) without adding new semantic meaning or clarifying nuances like 'capacity' meaning minimum capacity. No value is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '查询会议室列表' (query meeting room list), specifying the verb and resource. It also mentions filters, which distinguishes it as a list/search operation from detail retrieval. However, it does not explicitly name or contrast sibling tools like get_room_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing meeting rooms with filters, but provides no explicit guidance on when to use this tool versus alternatives like search_office or get_room_detail. The context is clear but lacks exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.1.1- First observed
get_office_detail - First observed
get_room_detail - First observed
search_office - First observed
search_room
TDQS
Each tool targets a distinct resource and action: search and detail for offices, search and detail for meeting rooms. There is no overlap between office and room tools, so an agent can easily select the correct tool.
All tool names follow a consistent verb_noun pattern: search_office, search_room, get_office_detail, get_room_detail. The pattern is uniform and predictable, making it easy to infer functionality from names.
With only 4 tools, the set is well-scoped for a read-only query service focused on offices and meeting rooms. Each tool serves a clear purpose and the count is appropriate for the narrow domain.
The tool surface covers the full lifecycle for this domain: search both resource types and retrieve detailed information for each. No obvious missing operations are apparent given the presumably read-only nature of the server.
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 Connectors
Let AI agents query data and act across all your business apps via MCP.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
- SkilderOAuthai.skilder
One place to build, share, and govern the skills and tools your AI agents use at work.
Connect AI assistants to Subotiz - Using Subotiz's external capabilities through natural language
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables Claude to search for available meeting rooms, check reservation status, and create room bookings through an integrated SSO-authenticated meeting room system. Supports natural language queries for room availability by date, time, floor, and duration requirements.-
- FlicenseAqualityDmaintenanceEnables interaction with the DiSH room booking platform to search availability, create bookings, and manage reservations. It allows AI assistants to handle meeting room logistics directly through natural language commands.3-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Enterprise WeChat (WeCom) using natural language to manage meetings, book rooms, and search contacts. It supports multiple AI models and provides intelligent contact matching via Pinyin.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to browse, search, and book meeting rooms across multiple buildings with realistic seed data and conflict detection.-
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/lipeng5941/oa-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server