Loading repository data…
Loading repository data…
hashwnath / repository
Production-grade MCP skills package for Microsoft Agent Framework - auto-discovery, connection pooling, rate limiting, and OpenTelemetry observability for enterprise agent deployments
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
The missing MCP skills layer for Microsoft Agent Framework - auto-discover, rate-limit, and observe your MCP tools as first-class Agent Skills.
Microsoft Agent Framework v1.0 ships with MCP support, but there's no production-grade reference for building MCP-backed Agent Skills with enterprise patterns like connection pooling, rate limiting, and observability. This package fills that gap.
Point it at any MCP server. Get installable Agent Skills. Ship to production.
from mcp_skills import MCPSkillsProvider, MCPClientConfig
provider = MCPSkillsProvider(
client_config=MCPClientConfig(server_uri="http://your-mcp-server:8080"),
skills_dir="./skills",
auto_discover=True,
)
await provider.initialize()
# Use with Agent Framework
agent = client.as_agent(
name="EnterpriseAgent",
instructions="You are a helpful assistant.",
context_providers=[provider],
)
graph TD
A[User Query] -->|prompt| B[Agent Framework Agent]
B -->|load skills| C[MCP Skills Provider]
C -->|discover| D[Auto-Discovery Engine]
D -->|list_tools| G[MCP Server]
C -->|advertise| I[Database Query Skill]
C -->|advertise| J[Document Search Skill]
C -->|advertise| K[API Gateway Skill]
B -->|tool call| E[MCP Client Pool]
E -->|apply| F[Middleware Stack]
F -->|request| G
F -->|trace| H[OpenTelemetry]
G -->|response| F
F -->|result| E
E -->|result| B
style A fill:#90EE90
style B fill:#90EE90
style C fill:#90EE90
style D fill:#90EE90
style E fill:#90EE90
style F fill:#90EE90
style G fill:#90EE90
style H fill:#90EE90
style I fill:#90EE90
style J fill:#90EE90
style K fill:#90EE90
| Component | Status | Notes |
|---|
| MCP Client Pool | LIVE | Connection pooling, health checks, reconnection |
| Auto-Discovery Engine | LIVE | Generates SKILL.md from MCP server capabilities |
| Middleware Stack | LIVE | Rate limiting, retry with backoff, telemetry |
| Skills Provider | LIVE | Agent Framework context_providers integration |
| Database Query Skill | LIVE | SQL validation, safety checks, response formatting |
| Document Search Skill | LIVE | Query normalization, filter support |
| API Gateway Skill | LIVE | Method validation, request building |
| OpenTelemetry Tracing | LIVE | Span creation, latency tracking, error attribution |
| Demo Agent | LIVE | End-to-end with mock MCP server |
| Multi-Agent Workflow | LIVE | Expense processing + Customer 360 patterns |
| Cloud Deployment | BLUEPRINT | Azure deployment guide |
pip install -e ".[dev]"
# Enterprise agent demo (standalone, no Azure credentials needed)
python -m demo.enterprise_agent
# Multi-agent workflow demo
python -m demo.workflow_demo
# Mock MCP server (for testing)
python -m demo.mock_mcp_server
pytest tests/ -v
import asyncio
from mcp_skills import MCPSkillsProvider, MCPClientConfig
async def main():
# 1. Configure MCP connection
config = MCPClientConfig(
server_uri="http://your-mcp-server:8080",
server_name="enterprise-mcp",
pool_size=10,
)
# 2. Initialize provider (auto-discovers skills from MCP server)
provider = MCPSkillsProvider(
client_config=config,
skills_dir="./skills",
auto_discover=True,
)
await provider.initialize()
# 3. See what was discovered
print(f"Skills: {provider.get_skill_names()}")
# -> ['database_query', 'document_search', 'api_gateway']
# 4. Call tools directly
response = await provider.call_tool(
"database_query",
{"sql": "SELECT * FROM customers ORDER BY revenue DESC LIMIT 10"}
)
print(f"Result: {response.result}")
# 5. Or use with Agent Framework agent
# agent = client.as_agent(context_providers=[provider])
await provider.shutdown()
asyncio.run(main())
Point at any MCP server. Skills are auto-generated with proper SKILL.md frontmatter, following Agent Framework's progressive disclosure model (advertise -> load -> read).
Configurable pool size with health checks and automatic reconnection. Designed from production experience running MCP at 1K+ requests/minute.
Composable middleware chain with sensible defaults:
from mcp_skills.middleware import MiddlewareStack, RateLimiter, RateLimiterConfig
# Custom middleware stack
stack = MiddlewareStack()
stack.add(TelemetryMiddleware("my-service"))
stack.add(RateLimiter(RateLimiterConfig(requests_per_minute=120, burst_size=20)))
stack.add(RetryMiddleware(max_retries=5))
provider = MCPSkillsProvider(middleware=stack)
Follows Agent Framework's three-stage skill model:
load_skillread_skill_resourcemicrosoft-cape-mcp-skills/
├── src/mcp_skills/
│ ├── client.py # MCP client pool with connection management
│ ├── discovery.py # Auto-discovery and SKILL.md generation
│ ├── middleware.py # Rate limiting, retry, telemetry
│ ├── provider.py # Agent Framework SkillsProvider integration
│ └── telemetry.py # OpenTelemetry configuration
├── skills/ # Pre-built enterprise skills
│ ├── database_query/ # SQL query skill with safety validation
│ ├── document_search/ # Document repository search skill
│ └── api_gateway/ # Enterprise API gateway skill
├── demo/
│ ├── enterprise_agent.py # Full agent demo
│ ├── workflow_demo.py # Multi-agent workflow demo
│ └── mock_mcp_server.py # Local MCP server for testing
└── tests/ # Comprehensive test suite
Microsoft Agent Framework v1.0 introduced Agent Skills and MCP support. The roadmap calls for expanding the skills ecosystem. This package demonstrates how to bridge MCP servers into the Agent Framework skill system with enterprise-grade patterns.
Built from real-world experience:
Built by Hashwanth Sutharapu - SDE at MAQ Software (Microsoft Partner), building enterprise agents for MCAPS teams. Contributor to Microsoft Agent Framework (9.3K stars) and awesome-copilot (29K stars). MS CS from Arizona State University (3.93 GPA).