把Codex技能变MCP服务,分享你的专属工具!
大家好!我是King。今天跟大伙聊聊Codex Skills的一个新玩法,保证你看完就能上手。
先搞明白:Codex Skills 是啥?
简单说,Codex Skills 就是你用自然语言教AI学会的一系列操作流程。比如你经常要处理周报数据,写一段描述让AI记住步骤,以后说句话它就帮你搞定。
但问题是——这技能只能你自己用。朋友问你要?复制粘贴代码?太麻烦。
MCP 是什么?能干啥?
MCP全称是Model Context Protocol,一种让AI工具之间互相调用的标准协议。把它当成一个“万能插头”,你的技能变成可被其他AI调用的服务。
部署成MCP后:
队友用Cursor、Windsurf直接调用你的技能
不用重复造轮子,一人写好,全员使用
技能可以迭代更新,所有调用方自动同步
三步把技能变成MCP服务
第一步:整理你的Codex Skill https://www.kfzhan.com/kfxx/344.html https://www.kfzhan.com/kfxx/343.html
把技能写成一个清晰的指令文件。举个例子,你有一个“提取文章核心观点”的技能:
你是一个信息提炼助手。给定一篇中文文章,输出三个核心观点,每个观点控制在30字以内,用编号列表呈现。不添加额外解释。
这个描述越具体越好,加上输出格式限制。
第二步:用MCP协议包装
{
"name": "extract_key_points",
"description": "从文章中提取三个核心观点",
"input_schema": {
"type": "object",
"properties": {
"article_text": {
"type": "string",
"description": "需要分析的原文内容"
}
},
"required": ["article_text"]
},
"prompt_template": "你是一个信息提炼助手。给定以下文章内容,输出三个核心观点,每个观点控制在30字以内,用编号列表呈现。不添加额外解释。\n\n文章内容:{{article_text}}"
}
第三步:部署并生成分享链接 https://www.kfzhan.com/kfxx/345.html https://www.kfzhan.com/kfxx/346.html
用现成的MCP服务工具(比如mcp.run或自建端点),上传上面的配置文件,得到一个调用地址:
https://your-mcp-server.com/skills/extract_key_points
把这个链接发给朋友,他们在AI工具里配置好就能用。
代码框1:一个完整的MCP服务端示例(Node.js)
const express = require('express');
const app = express();
app.use(express.json());
const skills = {
'extract_key_points': {
prompt: '你是一个信息提炼助手。给定以下文章内容,输出三个核心观点...',
handler: async (input) => {
// 调用AI接口的逻辑
return { result: '提取完成' };
}
}
};
app.post('/mcp/call', async (req, res) => {
const { skill_name, parameters } = req.body;
const skill = skills[skill_name];
if (!skill) return res.status(404).json({ error: '技能未找到' });
const output = await skill.handler(parameters);
res.json(output);
});
app.listen(3000, () => console.log('MCP服务已启动'));
代码框2:Python快速版使用FastAPI https://www.kfzhan.com/kfxx/347.html https://www.71wa.com/quanwei/59.html
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import openai
app = FastAPI()
class SkillRequest(BaseModel):
article_text: str
@app.post("/skills/extract_key_points")
async def extract_points(request: SkillRequest):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": f"提取核心观点:{request.article_text}"}]
)
return {"points": response.choices[0].message.content}
分享的两种方式
方式一:私有分享(给团队或好友) https://www.71wa.com/news/58.html
部署在内网或带鉴权的云服务 https://www.71wa.com/zhiyebaike/60.html
生成一次性的调用令牌
方式二:公开分享(给所有玩家)https://www.71wa.com/huodong/61.html
部署在公共MCP市场
附上使用说明和示例
代码框3:前端调用示例(JavaScript) https://www.71wa.com/koubei/62.html
async function callMySkill(article) {
const response = await fetch('https://your-mcp-server.com/skills/extract_key_points', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ article_text: article })
});
const data = await response.json();
console.log('技能输出:', data.points);
return data;
}
代码框4:curl测试命令
curl -X POST https://your-mcp-server.com/skills/extract_key_points \
-H "Content-Type: application/json" \
-d '{"article_text":"人工智能正在改变软件开发的每个环节..."}'
代码框5:MCP配置文件(mcp.json)
{
"mcp_version": "1.0",
"skills": [
{
"id": "skill_001",
"name": "周报生成器",
"endpoint": "/skills/weekly_report",
"auth_type": "none"
}
]
}
两个新手常见问题和解答 https://www.71wa.com/hegui/63.html https://www.71wa.com/medias/64.html
问题1:部署MCP服务需要买服务器吗?
不需要。你可以用免费的云函数服务,比如Vercel的Serverless Functions、Cloudflare Workers,或者直接用GitHub Actions配合Webhook。甚至本地跑一个ngrok隧道也能临时分享给朋友测试。起步阶段零成本。
问题2:别人调用我的技能,会不会把我的API额度耗尽?
会的。你需要自己控制调用频率。解决方法有两个:一是在MCP服务端加上每日调用上限,用Redis或内存计数器实现;二是要求调用方自带API密钥,你的服务只做“调度+提示词模板”的传递。推荐第二种,各用各的额度,你没有任何开销。
代码框6:带限流保护的中间件
from collections import defaultdict
from datetime import datetime, timedelta
rate_limit = defaultdict(list)
def check_rate_limit(user_id: str, max_calls=100):
now = datetime.now()
# 清理1分钟前的记录
rate_limit[user_id] = [t for t in rate_limit[user_id] if now - t < timedelta(minutes=1)]
if len(rate_limit[user_id]) >= max_calls:
return False
rate_limit[user_id].append(now)
return True
让你的技能更容易被搜索和发现 https://www.71wa.com/lizhiyulu/66.html https://www.kfzhan.com/dt/348.html
给技能起一个描述性的名字,比如“小红书文案改写器”而不是“技能3号”。在MCP服务里添加标签和示例输入输出。如果放在公开目录,写一段清晰的中文介绍,包含关键词:自动化、提效、AI工作流。
代码框7:带元数据的技能描述
{
"skill": {
"display_name": "小红书风格文案转换",
"tags": ["内容创作", "社交媒体", "文案"],
"examples": [
{"input": "这款面膜补水效果很好", "output": "姐妹们!这款面膜真的太水润了✨"}
]
}
}
代码框8:完整的前端小部件(复制即用)
<div id="mcp-caller">
<textarea id="input-text" placeholder="粘贴文章内容" rows="5"></textarea>
<button onclick="callSkill()">调用我的专属技能</button>
<div id="output"></div>
</div>
<script>
async function callSkill() {
const text = document.getElementById('input-text').value;
const res = await fetch('/api/mcp/extract_points', {
method: 'POST',
body: JSON.stringify({ text })
});
const data = await res.json();
document.getElementById('output').innerHTML = `<pre>${data.result}</pre>`;
}
</script>
总结:从“自己用”到“大家用” https://www.kfzhan.com/dt/349.html https://www.kfzhan.com/dt/350.html
把Codex Skills变成MCP服务,本质上就是把你的经验封装成别人一键可调用的工具。不用写复杂的SDK,不用教对方怎么配置环境,发一个链接就好。
我King自己就在用这套方法,把二十多个常用技能部署成了MCP,团队效率翻了一倍。你整理好自己的技能,按照上面的步骤操作,半小时内就能完成第一个分享。
最后送你一句话:技能只有传出去才有价值,藏在本地的代码什么都不是。
更多经验分享链接:
Vxe Gantt 高级技巧:动态调整任务顺序! - 九世師 - 博客园
Web Storage避坑:localStorage.getItem常见错误与正确用法! - 九世師 - 博客园
关网页也不丢数据!sendBeacon埋点可靠方案! - 九世師 - 博客园
字符串数字互转,别再只会用 atoi 了! - 九世師 - 博客园
JS异步四兄弟成长记:9个关键升级让你少写回调! - 九世師 - 博客园
异步编程完全指南:从 Promise 到 await 与 Async 迭代器的 8 个演进知识点。 - 九世師 - 博客园

浙公网安备 33010602011771号