Skills vs MCP is a boundary decision, not a technology contest. Model Context Protocol (MCP) standardizes how an AI host connects to external tools, resources, and prompts. Skills capture the reusable instructions and operating procedure for completing a recurring task. Conventional application code remains responsible for deterministic rules, authorization, transactions, and product behavior.
For internal AI tools, the practical division is straightforward: put governed access to systems behind an MCP server or an existing service API; put repeatable task guidance in a skill; and keep business invariants in conventional code. The benefit is not architectural purity. It is clearer ownership when a connector, workflow, policy, or user-facing application changes independently.
For example, a customer-entitlements lookup may support support triage, account review, and renewal preparation. That lookup is a reusable system capability. The instructions for gathering entitlement information, comparing it with a case, identifying missing evidence, and escalating exceptions are workflow knowledge. A decision that changes an entitlement or writes a contractual record should be enforced by domain code.
Start With What Changes Independently
MCP is an open client-server standard built on JSON-RPC. Its architecture describes hosts, clients, and servers, with servers exposing capabilities such as tools, resources, and prompts. It also supports transport abstraction, including local standard input/output and remote HTTP-based connections. These protocol concerns are different from the task procedure an AI system follows. The MCP architecture documentation describes the protocol layer in more detail.
A skill is the behavioral layer. It can specify required inputs, the order of work, permitted tool use, escalation conditions, expected output, and verification steps. In this framing, MCP answers what an AI application can discover and invoke; a skill answers how the AI application should carry out a defined kind of work. The distinction between MCP as connectivity and skills as behavioral guidance is also described in this overview of skills and MCP.
The first architecture question should therefore be: what has its own lifecycle? If a backend API, permissions model, or data schema can change separately from a support workflow, do not fuse them into one implementation. If a workflow changes because a team updates its operating policy while the underlying data retrieval remains stable, update the workflow layer without redesigning the integration.
Not every requirement belongs in either layer. A calculation, permission decision, database update, state transition, or regulated control should stay in conventional application code when it must behave deterministically and independently of model reasoning. An AI workflow may call that code through a narrow tool contract, but the workflow should not become the only place where a business rule exists.
A Three-Way Decision Model
Use three destinations instead of treating every internal AI capability as a skills vs MCP decision:
- Skill: reusable guidance for a bounded job that needs a procedure, context, and explicit completion criteria.
- MCP server: a discoverable interface to a system, data source, or business capability that AI experiences can use.
- Conventional application code: deterministic domain behavior, transaction handling, authorization enforcement, and product functionality.
| Signal | Skill | MCP server | Conventional code |
|---|---|---|---|
| Primary responsibility | How a recurring task is performed | How an external capability is exposed | How deterministic behavior is enforced |
| Best fit | Triage, analysis, drafting, investigation | Retrieval, search, approved actions, domain-service access | Validation, calculations, transactions, state changes |
| Changes when | Procedure, required output, or escalation rules change | Backend API, data model, or integration contract changes | Business logic or product behavior changes |
| Testing emphasis | Scenario evaluation and routing behavior | Contract, authentication, authorization, and failure behavior | Unit, integration, regression, and end-to-end testing |
| Example | Investigate a failed deployment and prepare next steps | getDeploymentLogs and getServiceOwner |
Rollback orchestration and change-window validation |
The matrix is intentionally simple. A capability may span more than one destination. A skill can use MCP tools, while a tool can call conventional Java domain services. The important point is that each layer has a distinct responsibility and should be reviewed accordingly.
Five Questions Before You Build
1. Is this mainly an integration?
If the requirement primarily adapts an existing system for AI use, it is an MCP candidate. Examples include retrieving a customer profile, querying an internal knowledge base, checking deployment status, or creating an issue in an approved work-management system. Define tools around cohesive business operations rather than exposing raw tables or unconstrained query interfaces.
Spring AI provides Java support for MCP clients and servers, including Spring Boot starters and declarative annotations such as @McpTool and @McpResource. Its MCP integration documentation also describes enterprise security contexts including OAuth2 and API keys. Those facilities can help a Java application participate in MCP, but teams still need to design the domain contract and enforcement boundary. Spring AI’s MCP documentation is the relevant implementation reference.
2. Will more than one AI experience need it?
Cross-workflow reuse is a strong signal for an MCP boundary. One approved tool that retrieves a current contract summary can support several internal experiences without each workflow carrying separate credentials or API-adaptation logic. Each skill can use the same capability for a different purpose while the integration retains one contract and owner.
That does not mean every internal API should become an MCP tool. A large catalog of narrow, one-off integrations can be difficult to discover, test, and govern. Prefer stable capabilities with clear names, typed inputs, limited outputs, and an accountable owner.
3. Is the main value an ordered operating procedure?
If the work is primarily a repeatable procedure, create a skill. An incident-review skill might direct the AI system to gather service health, recent deployment information, ownership details, and reported impact; separate evidence from hypotheses; and escalate when necessary information is absent. The integrations are tools. The skill is the procedure that determines how and when to use them.
Anthropic’s guidance on effective agents distinguishes predetermined workflows from more dynamic agentic systems and recommends beginning with the simplest approach that meets the need. For a known process, explicit workflow guidance provides a more direct way to describe the required sequence than relying on unconstrained tool selection.
Treat a skill as a versioned operational artifact. Give it a named owner, a purpose, allowed tools, escalation conditions, and acceptance scenarios. This does not turn every instruction into code; it makes the operating guidance reviewable when the underlying procedure changes.
4. Does the operation change state?
Keep the consequential operation in conventional code behind an intentional tool contract. A skill may assemble evidence and prepare a change request, but a backend service should own validation, authorization, audit behavior, and execution of the approved mutation. The AI layer can propose or request an action; code determines whether the action is allowed and carries it out reliably.
This boundary also avoids treating instructions as an authorization mechanism. A statement such as “only administrators may perform this action” can guide workflow behavior, but it does not replace identity-aware checks at the service boundary.
5. Is an approval step required?
For sensitive writes, design approval as a product and backend concern. The Vercel AI SDK supports connecting to remote MCP servers, dynamic tool discovery, and actions that require approval through needsApproval. Its MCP documentation describes those application-level capabilities. The backend still needs to verify the caller identity and authorization when it receives an approved request.
A practical pattern is to separate planning from mutation. First provide a read-only tool that returns a proposed action or preview. Then provide a separate write tool that receives a stable, reviewed payload. The resulting approval is easier to present in a React interface and easier to assess as a distinct operation.
A Clear Java and React Architecture
A Java and React internal tool can preserve the boundaries above with a small set of components:
- React application: presents evidence, tool results, draft actions, approval controls, and status.
- AI host or orchestration service: selects relevant skills, manages task context, and invokes allowed tools.
- MCP servers: expose approved capabilities from backend systems through small interfaces.
- Java domain services: retain policy, validation, transactional behavior, and the authoritative business state.
- Skill repository: stores the versioned workflow guidance, examples, constraints, fixtures, and ownership information.
This separation is compatible with the plugin-oriented architecture described by Microsoft Semantic Kernel, where native functions provide system capabilities and an orchestration layer coordinates them. The terminology differs, but the architectural lesson is similar: system access and high-level orchestration should remain distinguishable.
For the React layer, avoid treating the browser as the place to hold privileged integration credentials. The visible application should focus on presenting task state and collecting a user decision where needed. The service and integration boundaries should remain responsible for access decisions.
Ownership, Security, and Testing
Assign an owner to every MCP server and every skill. The owners may differ. An integration or platform team can own the customer-data server and its interface to a system of record. An operations team can own the case-triage skill that uses that capability. The server owner is accountable for the integration contract and system access. The skill owner is accountable for the procedure, escalation behavior, and acceptance scenarios.
Keep tool contracts narrow. A tool such as getCustomerEntitlements(customerId) expresses an intended business operation more clearly than a generic database-query tool. Narrow inputs and outputs make a tool easier to understand, test, and review. They also reduce the risk that an AI workflow receives or requests information outside the task’s purpose.
For remote MCP use, document which host identities can connect, how credentials are issued, how user identity is represented, what events are logged, and how access is removed. MCP provides protocol capabilities and transport options, but it is not itself a complete enterprise authorization design. Review the protocol architecture alongside existing identity and API standards.
Test each layer for its own failure modes. MCP servers need contract tests for schemas, invalid input, authentication, authorization, backend failure, and response handling. Java domain services need deterministic tests for validation and state changes. React views need tests for approval states, errors, and display of task evidence.
Skills need scenario-based evaluation. Use representative cases, missing data, conflicting evidence, unauthorized action requests, and escalation cases. Evaluate whether the skill used permitted tools, followed required steps, identified uncertainty, and returned the required structure. When a result is wrong, determine whether the cause was the skill, tool contract, authorization boundary, or conventional application code before adding more instructions.
Implementation Checklist
- Inventory proposed AI capabilities and identify the system of record for each one.
- Classify each requirement as workflow guidance, reusable system access, deterministic behavior, or a combination.
- Define MCP tools around cohesive business operations with typed, minimal inputs and outputs.
- Keep authorization, validation, and state changes in MCP-backed services or domain code.
- Keep privileged credentials outside the React client.
- Version skills with ownership, allowed tools, escalation rules, and scenario fixtures.
- Separate read-only planning from consequential mutations.
- Use product-level approval controls where an action requires a human decision.
- Write tool contract tests and deterministic domain tests before widening AI autonomy.
- Review unused tools and stale skills against their owners and current purpose.
FAQ
Can a skill call an MCP tool?
Yes. A common composition is for the skill to define the procedure and for an MCP tool to provide access to data or an approved action. The tool should still validate inputs and enforce its own access boundary.
Should every internal API become an MCP tool?
No. Expose stable business capabilities that an AI workflow actually needs. Keep the catalog focused on interfaces with clear purpose, ownership, and contracts.
Where should prompts and instructions live?
Place reusable task instructions with the skill and version them as operational assets. Keep authorization, calculations, state transitions, and compliance controls in conventional code.
Can React connect to an MCP server?
React and TypeScript applications can use MCP tooling through an architecture that supports it. Teams should still assess credential handling, identity propagation, and approvals before exposing a capability to an internal user interface.
What should a team build first?
Start with one read-only workflow that has a defined purpose. Build the tool contract, create focused workflow guidance, evaluate representative scenarios, and use those findings before adding write actions or a broader catalog.
Sources
- Model Context Protocol: Architecture
- Spring AI: Model Context Protocol Integration
- Vercel AI SDK: MCP Integration
- Anthropic: Building Effective Agents
- Microsoft Learn: Semantic Kernel Plugins
- Skills vs MCP: How AI Tools Have Evolved
Editorial note: AI assisted with research and drafting. Sources were selected for verification.
Full-Stack Developer & Solutions Architect · Casablanca, Morocco
7+ years building Java/Spring Boot/Angular enterprise solutions. Former Senior Software Engineer at NTT Data and Satec. Authorized Google Workspace and Microsoft 365 Partner for Morocco.